* fix: make Gitee release sync resilient * fix: address Gitee sync review feedback * fix: bound the full Gitee sync path
56 lines
1.8 KiB
YAML
56 lines
1.8 KiB
YAML
name: Sync release to Gitee
|
|
|
|
# Manually mirror a published GitHub release's assets to the matching Gitee
|
|
# release. Use this to repair a release whose Gitee mirror is incomplete (e.g.
|
|
# the Release job timed out mid-upload). It runs ONLY the idempotent Gitee sync
|
|
# step — it does not run GoReleaser and does not touch the GitHub release, so
|
|
# there is no release outage. The sync script skips assets already on Gitee, so
|
|
# this only uploads what is missing.
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: "Release tag to mirror to Gitee (e.g. v1.0.42)"
|
|
required: true
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
sync-gitee:
|
|
runs-on: ubuntu-latest
|
|
# Each step has its own ceiling. Their 115-minute sum leaves five minutes
|
|
# for runner scheduling/teardown inside this 120-minute job deadline.
|
|
timeout-minutes: 120
|
|
steps:
|
|
- name: Check out repository
|
|
uses: actions/checkout@v4
|
|
timeout-minutes: 5
|
|
|
|
- name: Download GitHub release assets
|
|
timeout-minutes: 10
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
set -eu
|
|
mkdir -p dist
|
|
gh release download "${{ inputs.version }}" \
|
|
--repo "${{ github.repository }}" \
|
|
--dir dist \
|
|
--pattern 'dws-*' \
|
|
--pattern 'checksums.txt' \
|
|
--clobber
|
|
ls -la dist
|
|
|
|
- name: Mirror release to Gitee (China)
|
|
# Idempotent: uploads only assets not already present on the Gitee release.
|
|
timeout-minutes: 100
|
|
run: ./scripts/release/sync-to-gitee.sh
|
|
env:
|
|
VERSION: ${{ inputs.version }}
|
|
GITEE_TOKEN: ${{ secrets.GITEE_TOKEN }}
|
|
GITEE_USER: ${{ secrets.GITEE_USER }}
|
|
GITEE_REPO: ${{ secrets.GITEE_REPO }}
|