数据仓库更新流水线 #6079
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: 数据仓库更新流水线 | |
| on: | |
| schedule: | |
| - cron: "0,30 * * * *" | |
| workflow_dispatch: | |
| inputs: | |
| force-update-assets: | |
| type: boolean | |
| description: "强制更新 seer-unity-assets (ConfigPackage, DefaultPackage)" | |
| required: false | |
| default: false | |
| force-update-pet-assets: | |
| type: boolean | |
| description: "强制更新 seer-unity-assets-pet_anim_part (PetAnimPackage)" | |
| required: false | |
| default: false | |
| force-update-config: | |
| type: boolean | |
| description: "强制更新 config-sources" | |
| required: false | |
| default: false | |
| env: | |
| UNITY_ASSETS_REPO: "SeerAPI/seer-unity-assets" | |
| PET_ANIM_REPO: "SeerAPI/seer-unity-assets-pet_anim_part" | |
| CONFIG_SOURCE_REPO: "SeerAPI/config-sources" | |
| TQDM_MININTERVAL: 5 | |
| permissions: | |
| actions: write | |
| contents: write | |
| jobs: | |
| check-unity-assets: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| need_update_main: ${{ steps.check-update.outputs.need_update_main }} | |
| need_update_pet: ${{ steps.check-update.outputs.need_update_pet }} | |
| steps: | |
| - name: Delete workflow runs | |
| uses: Mattraks/delete-workflow-runs@v2 | |
| with: | |
| token: ${{ github.token }} | |
| repository: ${{ github.repository }} | |
| retain_days: 30 | |
| keep_minimum_runs: 6 | |
| - name: 检出脚本仓库 | |
| uses: actions/checkout@v4 | |
| - name: 设置 Python 环境 | |
| uses: ./.github/actions/setup-environment | |
| with: | |
| python-version: "3.10" | |
| install-dependencies: "true" | |
| - name: 检查更新 | |
| id: check-update | |
| run: | | |
| echo "🚀 开始检查更新..." | |
| uv run check-seer-assets main | |
| echo "✅ 检查更新完成" | |
| update-main-assets: | |
| runs-on: ubuntu-latest | |
| needs: check-unity-assets | |
| if: ${{ needs.check-unity-assets.outputs.need_update_main == 'true' || inputs.force-update-assets }} | |
| outputs: | |
| has_update: ${{ steps.update-main.outputs.has_update == 'true' }} | |
| steps: | |
| - name: 检出脚本仓库 | |
| uses: actions/checkout@v4 | |
| - name: 设置 Python 环境 | |
| uses: ./.github/actions/setup-environment | |
| with: | |
| python-version: "3.10" | |
| install-dependencies: "true" | |
| - name: 检出 seer-unity-assets | |
| uses: ./.github/actions/checkout-repo | |
| with: | |
| ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| repository: ${{ env.UNITY_ASSETS_REPO }} | |
| path: "seer-unity-assets" | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| fetch-depth: 1 | |
| - name: 更新 seer-unity-assets | |
| id: update-main | |
| working-directory: seer-unity-assets | |
| run: | | |
| echo "🚀 开始处理 seer-unity-assets 数据..." | |
| uv run update-seer-assets \ | |
| --repo-path . \ | |
| --packages ConfigPackage,DefaultPackage \ | |
| ${{ inputs.force-update-assets && '--force' || '' }} | |
| echo "✅ seer-unity-assets 数据处理完成" | |
| update-pet-assets: | |
| runs-on: ubuntu-latest | |
| needs: check-unity-assets | |
| if: ${{ needs.check-unity-assets.outputs.need_update_pet == 'true' || inputs.force-update-pet-assets }} | |
| outputs: | |
| has_update: ${{ steps.update-pet.outputs.has_update == 'true' }} | |
| steps: | |
| - name: 检出脚本仓库 | |
| uses: actions/checkout@v4 | |
| - name: 设置 Python 环境 | |
| uses: ./.github/actions/setup-environment | |
| with: | |
| python-version: "3.10" | |
| install-dependencies: "true" | |
| - name: 检出 seer-unity-assets-pet_anim_part | |
| uses: ./.github/actions/checkout-repo | |
| with: | |
| ssh-key: ${{ secrets.ANIM_REPO_SSH_PRIVATE_KEY }} | |
| repository: ${{ env.PET_ANIM_REPO }} | |
| path: "seer-unity-assets-pet_anim_part" | |
| token: ${{ secrets.PAT }} | |
| fetch-depth: 1 | |
| init-if-empty: "true" | |
| - name: 更新 seer-unity-assets-pet_anim_part | |
| id: update-pet | |
| working-directory: seer-unity-assets-pet_anim_part | |
| run: | | |
| echo "🚀 开始处理 pet_anim 数据..." | |
| uv run update-seer-assets \ | |
| --repo-path . \ | |
| --packages PetAnimPackage \ | |
| ${{ inputs.force-update-pet-assets && '--force' || '' }} | |
| echo "✅ pet_anim 数据处理完成" | |
| update-config-sources: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - check-unity-assets | |
| - update-main-assets | |
| - update-pet-assets | |
| if: >- | |
| ${{ always() && | |
| needs.check-unity-assets.result == 'success' && | |
| (needs.update-main-assets.result == 'success' || needs.update-main-assets.result == 'skipped') && | |
| (needs.update-pet-assets.result == 'success' || needs.update-pet-assets.result == 'skipped') && | |
| (needs.update-main-assets.outputs.has_update == 'true' || | |
| needs.update-pet-assets.outputs.has_update == 'true' || | |
| inputs.force-update-config) }} | |
| steps: | |
| - name: 检出脚本仓库 | |
| uses: actions/checkout@v4 | |
| - name: 设置 Python 环境 | |
| uses: ./.github/actions/setup-environment | |
| with: | |
| python-version: "3.10" | |
| install-dependencies: "true" | |
| - name: 检出仓库 | |
| id: checkout-repo | |
| uses: ./.github/actions/checkout-repo | |
| with: | |
| # ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| repository: ${{ env.CONFIG_SOURCE_REPO }} | |
| path: "config-sources" | |
| token: ${{ secrets.PAT }} | |
| fetch-depth: 1 | |
| - name: 运行数据处理 | |
| id: update | |
| working-directory: ${{ steps.checkout-repo.outputs.repo-path }} | |
| run: | | |
| echo "🚀 开始处理数据..." | |
| uv run update-config-sources ${{ inputs.force-update-config && '--force' || '' }} | |
| echo "✅ 数据处理完成" | |
| - name: Repository Dispatch | |
| uses: peter-evans/repository-dispatch@v4 | |
| if: steps.update.outputs.has_update == 'true' | |
| with: | |
| token: ${{ secrets.PAT }} | |
| repository: seerapi/api-data | |
| event-type: config-source-update |