Skip to content

๐ŸŒŸ GitHub Stars IndexๅŒๆญฅ #42

๐ŸŒŸ GitHub Stars IndexๅŒๆญฅ

๐ŸŒŸ GitHub Stars IndexๅŒๆญฅ #42

Workflow file for this run

name: ๐ŸŒŸ GitHub Stars IndexๅŒๆญฅ
on:
# โ”€โ”€ ๅฎšๆ—ถ่งฆๅ‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# ไฟฎๆ”นไธ‹ๆ–น cron ่กจ่พพๅผไปฅ่‡ชๅฎšไน‰ๆ‰ง่กŒ้ข‘็އ๏ผˆUTC ๆ—ถ้—ด๏ผ‰
# ็คบไพ‹:
# "0 2 * * 1" โ†’ ๆฏๅ‘จไธ€ UTC 02:00๏ผˆๅŒ—ไบฌๆ—ถ้—ด 10:00๏ผ‰
# "0 18 * * *" โ†’ ๆฏๅคฉ UTC 18:00๏ผˆๅŒ—ไบฌๆ—ถ้—ดๆฌกๆ—ฅ 02:00๏ผ‰
# "0 2 1 * *" โ†’ ๆฏๆœˆ 1 ๆ—ฅ UTC 02:00
# cron ๅœจ็บฟ็”Ÿๆˆๅ™จ: https://crontab.guru
schedule:
- cron: "18 18 * * *" # โ† ๅœจๆญคไฟฎๆ”นไฝ ็š„ๅฎšๆ—ถ้ข‘็އ
# โ”€โ”€ ๆ‰‹ๅŠจ่งฆๅ‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
workflow_dispatch:
inputs:
force_rebuild:
description: "ๅผบๅˆถ้‡ๆ–ฐ็”Ÿๆˆๆ‰€ๆœ‰ๆ‘˜่ฆ๏ผˆ้‡ๅปบ JSON ๆ•ฐๆฎ้›†๏ผ‰"
required: false
default: "false"
type: choice
options:
- "false"
- "true"
test_limit:
description: "ๆต‹่ฏ•ๆจกๅผ๏ผš้™ๅˆถๅค„็†็š„้กน็›ฎๆ•ฐ้‡๏ผˆๅฆ‚ๅกซ 5 ๅˆ™ๅชๅค„็† 5 ไธชๆ–ฐ้กน็›ฎ๏ผŒ็•™็ฉบไธ้™ๅˆถ๏ผ‰"
required: false
default: ""
type: string
permissions:
contents: write # ๅ…่ฎธ Action ๆไบคๆ–‡ไปถๅˆฐๆœฌไป“ๅบ“
jobs:
sync:
name: ๆŠ“ๅ– Stars ๅนถ็”Ÿๆˆๆ‘˜่ฆ
runs-on: ubuntu-latest
timeout-minutes: 120 # ่ถ…ๆ—ถไฟๆŠค๏ผˆStars ่พƒๅคšๆ—ถๅฏ่ƒฝ่€—ๆ—ถ้•ฟ๏ผ‰
steps:
# โ”€โ”€ 1. ๆฃ€ๅ‡บไปฃ็  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
- name: Checkout ไป“ๅบ“
uses: actions/checkout@v4
# โ”€โ”€ 2. ่ฎพ็ฝฎ Python ็Žฏๅขƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
- name: ่ฎพ็ฝฎ Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
# โ”€โ”€ 3. ๅฎ‰่ฃ…ไพ่ต– โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
- name: ๅฎ‰่ฃ…ไพ่ต–
run: pip install -r requirements.txt
# โ”€โ”€ 4. ๅฏ้€‰๏ผšๅผบๅˆถ้‡็ฝฎๆ•ฐๆฎ้›† โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
- name: ้‡็ฝฎๆ•ฐๆฎ้›†๏ผˆไป…ๅœจ force_rebuild=true ๆ—ถๆ‰ง่กŒ๏ผ‰
if: github.event.inputs.force_rebuild == 'true'
run: |
echo "โš ๏ธ ๅผบๅˆถ้‡ๅปบๆจกๅผ๏ผšๅˆ ้™ค็Žฐๆœ‰ๆ•ฐๆฎ"
rm -rf data/stars.json
# โ”€โ”€ 5. ๆ‰ง่กŒๅŒๆญฅ่„šๆœฌ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
- name: ๅŒๆญฅ GitHub Stars
env:
# โ”€โ”€ Secrets๏ผˆๆœบๅฏ†๏ผŒๅŠ ๅฏ†ไฟๅญ˜๏ผ‰โ”€โ”€
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Actions ่‡ชๅŠจๆณจๅ…ฅ๏ผŒๆ— ้œ€ๆ‰‹ๅŠจๆทปๅŠ 
AI_API_KEY: ${{ secrets.AI_API_KEY }} # AI API Key
VAULT_PAT: ${{ secrets.VAULT_PAT }} # Vault ไป“ๅบ“ๅ†™ๆƒ้™ PAT๏ผˆVault ๅŒๆญฅๆ—ถๅฟ…ๅกซ๏ผ‰
# โ”€โ”€ Variables๏ผˆ้žๆœบๅฏ†๏ผŒๆ˜Žๆ–‡๏ผŒๅœจ Settings โ†’ Variables ไธญ้…็ฝฎ๏ผ‰โ”€โ”€
GH_USERNAME: ${{ vars.GH_USERNAME }} # ่ฆๆŠ“ๅ– Stars ็š„ GitHub ็”จๆˆทๅ
AI_BASE_URL: ${{ vars.AI_BASE_URL }} # AI ๆŽฅๅฃๅœฐๅ€
AI_MODEL: ${{ vars.AI_MODEL }}
MAX_CONCURRENCY: ${{ vars.MAX_CONCURRENCY }}
OUTPUT_FILENAME: ${{ vars.OUTPUT_FILENAME }}
VAULT_SYNC_ENABLED: ${{ vars.VAULT_SYNC_ENABLED }}
VAULT_REPO: ${{ vars.VAULT_REPO }}
VAULT_SYNC_PATH: ${{ vars.VAULT_SYNC_PATH }}
TEST_LIMIT: ${{ github.event.inputs.test_limit }}
PAGES_SYNC_ENABLED: ${{ vars.PAGES_SYNC_ENABLED }}
run: python scripts/sync_stars.py
# โ”€โ”€ 6. ๆไบคๅ˜ๆ›ดๅˆฐๆœฌไป“ๅบ“ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
- name: ๆไบคๅนถๆŽจ้€ๅ˜ๆ›ด
run: |
set -e
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add data/stars.json
if git diff --staged --quiet; then
echo "โœ… ๆ— ๆ–ฐๅ†…ๅฎน๏ผŒ่ทณ่ฟ‡ๆไบค"
exit 0
fi
git commit -m "๐Ÿค– ่‡ชๅŠจๆ›ดๆ–ฐ GitHub Stars ๆ‘˜่ฆ [$(date -u '+%Y-%m-%d %H:%M UTC')]"
echo "๐Ÿ”„ ๅŒๆญฅ่ฟœ็จ‹ๆœ€ๆ–ฐไปฃ็ ..."
git fetch origin main
git rebase origin/main
echo "๐Ÿš€ ๆŽจ้€ๆ›ดๆ–ฐ..."
git push origin main
# โ”€โ”€ 7. ้ƒจ็ฝฒๅˆฐ GitHub Pages โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
- name: ้ƒจ็ฝฒๅˆฐ GitHub Pages
if: vars.PAGES_SYNC_ENABLED == 'true'
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: dist # ๅŒๆญฅ dist ๆ–‡ไปถๅคน็š„ๅ†…ๅฎน
branch: gh-pages # ็›ฎๆ ‡ๅˆ†ๆ”ฏ
clean: true # ไฟๆŒๅˆ†ๆ”ฏๆ•ดๆด