Sync Models Metadata #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Sync Models Metadata | |
| on: | |
| schedule: | |
| # 每天 UTC 04:00 自动执行一次(对应北京时间 12:00) | |
| - cron: '0 4 * * *' | |
| workflow_dispatch: # 支持在 GitHub Actions 界面手动触发 | |
| permissions: | |
| contents: write | |
| # 同一时刻只允许一次同步,避免两次运行撞车后互相覆盖 data 分支。 | |
| concurrency: | |
| group: sync-models | |
| cancel-in-progress: false | |
| jobs: | |
| sync-models: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Fetch full models.dev metadata to data/models.json | |
| run: | | |
| python3 scripts/sync-models-dev.py | |
| - name: Publish to data branch | |
| run: | | |
| set -e | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| # 备份新生成的文件,随后清空工作区改用 orphan 单提交发布,避免机器产物污染 main。 | |
| cp data/models.json "$RUNNER_TEMP/models.json" | |
| # 与 data 分支现存文件比对,无变化则跳过(避免无意义提交)。 | |
| git fetch origin data || true | |
| if git show origin/data:data/models.json > "$RUNNER_TEMP/models.old.json" 2>/dev/null; then | |
| if cmp -s "$RUNNER_TEMP/models.old.json" data/models.json; then | |
| echo "模型元数据无变动,跳过提交" | |
| exit 0 | |
| fi | |
| fi | |
| # orphan 分支承载数据:每次覆盖成单个提交,data 分支始终只有最新快照。 | |
| git checkout --orphan data-snapshot | |
| git rm -rf --cached . > /dev/null | |
| git clean -fdx > /dev/null | |
| mkdir -p data | |
| cp "$RUNNER_TEMP/models.json" data/models.json | |
| git add data/models.json | |
| git commit -m "chore(data): 同步 models.dev 完整元数据" | |
| git push -f origin HEAD:data |