Skip to content

🤖 Update Starred Repositories #6

🤖 Update Starred Repositories

🤖 Update Starred Repositories #6

Workflow file for this run

name: 🤖 Update Starred Repositories
on:
# 每日自动运行(北京时间上午9点,UTC时间凌晨1点)
schedule:
- cron: '0 1 * * *' # 每日北京时间9点运行
# 每周模式(备用,如果想改回周更新可以取消注释)
# schedule:
# - cron: '0 1 * * 1' # 每周一北京时间9点
# 手动触发,支持选择运行模式
workflow_dispatch:
inputs:
mode:
description: '运行模式'
required: true
default: 'auto'
type: choice
options:
- auto
- daily
- weekly
force_reanalyze:
description: '强制重新分析所有仓库'
required: false
default: false
type: boolean
sample_size:
description: '测试模式:仅分析前N个仓库(留空则全部分析)'
required: false
type: string
jobs:
update-starred-repos:
runs-on: ubuntu-latest
timeout-minutes: 60 # 设置超时时间为60分钟
# ==================================================
# === 在这里添加 permissions 块,这是解决问题的关键 ===
permissions:
contents: write # 授予对仓库内容的写权限,以便可以 git push
# ==================================================
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }} # 现在这个 token 会有写权限了
fetch-depth: 0 # 获取完整历史
- name: 🐍 Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: 💾 Cache pip dependencies
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: 📦 Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: ⚙️ Configure environment
run: |
echo "GH_TOKEN=${{ secrets.GH_TOKEN }}" >> .env
echo "LLM_API_KEY=${{ secrets.LLM_API_KEY }}" >> .env
if [ -n "${{ secrets.LLM_API_BASE_URL }}" ]; then
echo "LLM_API_BASE_URL=${{ secrets.LLM_API_BASE_URL }}" >> .env
fi
if [ -n "${{ secrets.LLM_MODEL_NAME }}" ]; then
echo "LLM_MODEL_NAME=${{ secrets.LLM_MODEL_NAME }}" >> .env
fi
if [ -n "${{ secrets.SILICONFLOW_API_KEY }}" ]; then
echo "SILICONFLOW_API_KEY=${{ secrets.SILICONFLOW_API_KEY }}" >> .env
fi
- name: 🚀 Run analysis
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
LLM_API_BASE_URL: ${{ secrets.LLM_API_BASE_URL }}
LLM_MODEL_NAME: ${{ secrets.LLM_MODEL_NAME }}
SILICONFLOW_API_KEY: ${{ secrets.SILICONFLOW_API_KEY }}
run: |
# 构建命令参数
CMD="python main_v3.py"
# 添加模式参数
if [ -n "${{ github.event.inputs.mode }}" ]; then
CMD="$CMD --mode ${{ github.event.inputs.mode }}"
else
CMD="$CMD --mode auto"
fi
# 添加强制重新分析参数
if [ "${{ github.event.inputs.force_reanalyze }}" = "true" ]; then
CMD="$CMD --force-reanalyze"
fi
# 添加样本大小参数
if [ -n "${{ github.event.inputs.sample_size }}" ]; then
CMD="$CMD --sample ${{ github.event.inputs.sample_size }}"
fi
echo "执行命令: $CMD"
$CMD
- name: 📊 Show statistics
if: always()
run: |
echo "=== 数据库统计信息 ==="
python main_v3.py --stats || echo "无法获取统计信息"
- name: 📝 Commit and push changes
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
# 检查是否有变更
if git diff --quiet && git diff --cached --quiet; then
echo "没有文件变更,跳过提交"
exit 0
fi
# 添加需要提交的文件
git add README.md
if [ -f "weekly_report.md" ]; then
git add weekly_report.md
fi
if [ -d "weekly_reports" ]; then
git add weekly_reports/
fi
# 生成提交信息
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S UTC')
MODE="${{ github.event.inputs.mode || 'auto' }}"
if [ "${{ github.event.inputs.force_reanalyze }}" = "true" ]; then
COMMIT_MSG="🔄 强制重新分析所有仓库 - $TIMESTAMP"
elif [ -n "${{ github.event.inputs.sample_size }}" ]; then
COMMIT_MSG="🧪 测试运行 (前${{ github.event.inputs.sample_size }}个仓库) - $TIMESTAMP"
else
COMMIT_MSG="🤖 自动更新星标仓库分析 ($MODE 模式) - $TIMESTAMP"
fi
# 提交变更
git commit -m "$COMMIT_MSG" || echo "没有新的变更需要提交"
git push
- name: 📋 Upload artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: analysis-logs-${{ github.run_number }}
path: |
starred_repos.log
debug.log
data/starred_repos_v3.db
retention-days: 7
- name: 📈 Create job summary
if: always()
run: |
echo "## 🎯 运行总结" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**运行时间**: $(date '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY
echo "**运行模式**: ${{ github.event.inputs.mode || 'auto' }}" >> $GITHUB_STEP_SUMMARY
echo "**强制重新分析**: ${{ github.event.inputs.force_reanalyze || 'false' }}" >> $GITHUB_STEP_SUMMARY
if [ -n "${{ github.event.inputs.sample_size }}" ]; then
echo "**测试模式**: 仅分析前 ${{ github.event.inputs.sample_size }} 个仓库" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 📊 数据库统计" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
python main_v3.py --stats 2>/dev/null || echo "无法获取统计信息" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 🔗 相关链接" >> $GITHUB_STEP_SUMMARY
echo "- [📚 生成的 README](https://github.com/${{ github.repository }}/blob/main/README.md)" >> $GITHUB_STEP_SUMMARY
echo "- [📈 项目仓库](https://github.com/${{ github.repository }})" >> $GITHUB_STEP_SUMMARY
if [ -f "weekly_report.md" ]; then
echo "- [📊 本周报告](https://github.com/${{ github.repository }}/blob/main/weekly_report.md)" >> $GITHUB_STEP_SUMMARY
fi