Files
Fu-Jie_openwebui-extensions/.github/workflows/community-stats.yml
fujie 77c0defe93 feat: smart commit for stats - only commit when data actually changes
- Keep detailed stats tables in README
- Compare downloads/posts/upvotes before committing
- Skip commit if no actual data change (only time updated)
2026-01-08 22:35:53 +08:00

89 lines
3.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenWebUI 社区统计报告自动生成
# 只在统计数据变化时 commit避免频繁提交
name: Community Stats
on:
# 每小时整点运行
schedule:
- cron: '0 * * * *'
# 手动触发
workflow_dispatch:
permissions:
contents: write
jobs:
update-stats:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install requests python-dotenv
- name: Get previous stats
id: prev_stats
run: |
# 获取当前的统计数据用于比较
if [ -f docs/community-stats.json ]; then
OLD_DOWNLOADS=$(jq -r '.total_downloads' docs/community-stats.json 2>/dev/null || echo "0")
OLD_POSTS=$(jq -r '.total_posts' docs/community-stats.json 2>/dev/null || echo "0")
OLD_UPVOTES=$(jq -r '.total_upvotes' docs/community-stats.json 2>/dev/null || echo "0")
echo "old_downloads=$OLD_DOWNLOADS" >> $GITHUB_OUTPUT
echo "old_posts=$OLD_POSTS" >> $GITHUB_OUTPUT
echo "old_upvotes=$OLD_UPVOTES" >> $GITHUB_OUTPUT
else
echo "old_downloads=0" >> $GITHUB_OUTPUT
echo "old_posts=0" >> $GITHUB_OUTPUT
echo "old_upvotes=0" >> $GITHUB_OUTPUT
fi
- name: Generate stats report
env:
OPENWEBUI_API_KEY: ${{ secrets.OPENWEBUI_API_KEY }}
OPENWEBUI_USER_ID: ${{ secrets.OPENWEBUI_USER_ID }}
run: |
python scripts/openwebui_stats.py
- name: Check for significant changes
id: check_changes
run: |
# 获取新的统计数据
NEW_DOWNLOADS=$(jq -r '.total_downloads' docs/community-stats.json 2>/dev/null || echo "0")
NEW_POSTS=$(jq -r '.total_posts' docs/community-stats.json 2>/dev/null || echo "0")
NEW_UPVOTES=$(jq -r '.total_upvotes' docs/community-stats.json 2>/dev/null || echo "0")
echo "📊 Previous: ${{ steps.prev_stats.outputs.old_downloads }} downloads, ${{ steps.prev_stats.outputs.old_posts }} posts, ${{ steps.prev_stats.outputs.old_upvotes }} upvotes"
echo "📊 Current: $NEW_DOWNLOADS downloads, $NEW_POSTS posts, $NEW_UPVOTES upvotes"
# 比较是否有变化
if [ "$NEW_DOWNLOADS" != "${{ steps.prev_stats.outputs.old_downloads }}" ] || \
[ "$NEW_POSTS" != "${{ steps.prev_stats.outputs.old_posts }}" ] || \
[ "$NEW_UPVOTES" != "${{ steps.prev_stats.outputs.old_upvotes }}" ]; then
echo "changed=true" >> $GITHUB_OUTPUT
echo "✅ Stats changed, will commit"
else
echo "changed=false" >> $GITHUB_OUTPUT
echo "⏭️ No changes, skipping commit"
fi
- name: Commit and push changes
if: steps.check_changes.outputs.changed == 'true'
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add docs/community-stats.zh.md docs/community-stats.md docs/community-stats.json README.md README_CN.md
git diff --staged --quiet || git commit -m "chore: update community stats $(date +'%Y-%m-%d')"
git push