Skip to content

数据仓库更新流水线 #6079

数据仓库更新流水线

数据仓库更新流水线 #6079

Workflow file for this run

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