refactor(scripts): split and harden release tooling
This commit is contained in:
1 parent
65df80091c
commit
dd86eabefa
14 files changed
+218
-458
No files matched your search
@@ -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
|
||||
@@ -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 }}"
|
||||
|
||||
Reference in new issue
Block a user