refactor(scripts): split and harden release tooling

This commit is contained in:
lzt404 committed 2026-08-07 14:54:55 +08:00
1 parent 65df80091c
commit dd86eabefa
14 files changed
+218 -458

No files matched your search

-85
View File
@@ -1,85 +0,0 @@
name: Mirror GitHub release to GitCode
run-name: >-
GitCode mirror ${{ inputs.release_tag || github.event.workflow_run.display_title }}
on:
workflow_run:
workflows:
- Build portable releases
types:
- completed
workflow_dispatch:
inputs:
release_tag:
description: Existing GitHub release tag to mirror
required: true
type: string
permissions:
contents: read
concurrency:
group: gitcode-mirror-${{ inputs.release_tag || github.event.workflow_run.id }}
cancel-in-progress: false
jobs:
mirror:
name: Mirror release assets
if: >-
vars.GITCODE_REPOSITORY != ''
&& (
github.event_name == 'workflow_dispatch'
|| github.event.workflow_run.conclusion == 'success'
)
runs-on: ubuntu-24.04
timeout-minutes: 35
steps:
- uses: actions/checkout@v7
- name: Resolve release tag
id: release
shell: bash
env:
INPUT_RELEASE_TAG: ${{ inputs.release_tag }}
RUN_TITLE: ${{ github.event.workflow_run.display_title }}
run: |
set -euo pipefail
release_tag="$INPUT_RELEASE_TAG"
if [ -z "$release_tag" ]; then
case "$RUN_TITLE" in
"Portable release "*) release_tag="${RUN_TITLE#Portable release }" ;;
*) echo "Cannot resolve a release tag from workflow title: $RUN_TITLE" >&2; exit 1 ;;
esac
fi
case "$release_tag" in
v*) ;;
*) release_tag="v$release_tag" ;;
esac
if ! node scripts/app-version.mjs "${release_tag#v}" >/dev/null 2>&1; then
if [ -n "$INPUT_RELEASE_TAG" ]; then
echo "Invalid release tag: $release_tag" >&2
exit 1
fi
echo "Skipping GitCode mirror because the completed run did not publish a release"
echo "should_mirror=false" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "tag=$release_tag" >> "$GITHUB_OUTPUT"
echo "should_mirror=true" >> "$GITHUB_OUTPUT"
- name: Download GitHub release assets
if: steps.release.outputs.should_mirror == 'true'
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: gh release download "${{ steps.release.outputs.tag }}" --dir artifacts
- name: Publish GitCode mirror
if: steps.release.outputs.should_mirror == 'true'
timeout-minutes: 30
env:
ARTIFACT_DIRECTORY: artifacts
GITCODE_ACCESS_TOKEN: ${{ secrets.GITCODE_ACCESS_TOKEN }}
GITCODE_REPOSITORY: ${{ vars.GITCODE_REPOSITORY }}
GITCODE_TARGET_COMMITISH: ${{ vars.GITCODE_TARGET_COMMITISH || 'main' }}
RELEASE_TAG: ${{ steps.release.outputs.tag }}
run: node scripts/publish-gitcode-release.mjs
+6 -6
View File
@@ -44,7 +44,7 @@ jobs:
run: |
set -euo pipefail
source_version="$(node scripts/app-version.mjs)"
source_version="$(node scripts/version.mjs)"
release_tag="$REQUESTED_VERSION"
if [ -z "$release_tag" ]; then
release_tag="v$source_version"
@@ -55,7 +55,7 @@ jobs:
esac
fi
version="$(node scripts/app-version.mjs "${release_tag#v}")"
version="$(node scripts/version.mjs "${release_tag#v}")"
echo "version=$version" >> "$GITHUB_OUTPUT"
echo "tag=$release_tag" >> "$GITHUB_OUTPUT"
@@ -77,7 +77,7 @@ jobs:
with:
components: clippy, rustfmt
- name: Apply release version
run: node scripts/set-app-version.mjs "${{ needs.version.outputs.version }}"
run: node scripts/set-version.mjs "${{ needs.version.outputs.version }}"
- name: Install Linux dependencies
run: |
sudo apt-get update
@@ -150,7 +150,7 @@ jobs:
bun-version: 1.3.14
- uses: dtolnay/rust-toolchain@stable
- name: Apply release version
run: node scripts/set-app-version.mjs "${{ needs.version.outputs.version }}"
run: node scripts/set-version.mjs "${{ needs.version.outputs.version }}"
- name: Resolve release package name
id: package
shell: bash
@@ -174,7 +174,7 @@ jobs:
shell: bash
- name: Prepare portable directory
run: >-
node scripts/prepare-portable.mjs
node scripts/portable.mjs
--binary "src-tauri/target/release/cpa-gui${{ matrix.os == 'windows' && '.exe' || '' }}"
--output "release/${{ steps.package.outputs.stem }}"
--os "${{ matrix.os }}"
@@ -414,7 +414,7 @@ jobs:
env:
RELEASE_TAG: ${{ needs.version.outputs.tag }}
run: >-
node scripts/generate-portable-update-manifest.mjs
node scripts/manifest.mjs
--directory artifacts
--output artifacts/portable-update-windows.json
--repository "${{ github.repository }}"