Skip to content

Sync Models Metadata #5

Sync Models Metadata

Sync Models Metadata #5

Workflow file for this run

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