From bc878c8f93220aeead3180ca1864f568894f715f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Sat, 4 Apr 2026 15:47:50 -0400 Subject: [PATCH] Add remote workflow used by automated Cloudflare release script --- .../workflows/remote-release-platforms.yml | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 .github/workflows/remote-release-platforms.yml diff --git a/.github/workflows/remote-release-platforms.yml b/.github/workflows/remote-release-platforms.yml new file mode 100644 index 00000000..4cafe4a8 --- /dev/null +++ b/.github/workflows/remote-release-platforms.yml @@ -0,0 +1,168 @@ +name: Remote Release Platforms + +on: + workflow_dispatch: + inputs: + release_tag: + description: Draft GitHub release tag used as the transport bucket + required: true + type: string + release_title: + description: Human-readable title for the draft release + required: false + type: string + +concurrency: + group: remote-release-${{ github.ref }}-${{ inputs.release_tag }} + cancel-in-progress: false + +env: + PNPM_VERSION: "10.24.0" + NODE_VERSION: "22" + +jobs: + build-windows: + name: Windows Universal Installer + runs-on: windows-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + - uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: pnpm + - run: pnpm install --frozen-lockfile + - name: Build electron-vite + run: pnpm exec electron-vite build + - name: Package + run: pnpm exec electron-builder --win --x64 --ia32 --arm64 --config electron-builder.yml --publish never + env: + CSC_LINK: ${{ secrets.WIN_CERTIFICATE_P12_BASE64 }} + CSC_KEY_PASSWORD: ${{ secrets.WIN_CERTIFICATE_PASSWORD }} + - name: Upload release files + shell: bash + env: + GH_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ inputs.release_tag }} + RELEASE_TITLE: ${{ inputs.release_title }} + run: | + set -euo pipefail + gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \ + gh release create "$RELEASE_TAG" \ + --draft \ + --prerelease \ + --title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \ + --notes "Temporary release transport generated by remote-release-platforms.yml." \ + --target "$GITHUB_SHA" + + shopt -s nullglob + files=( + build/release/*.exe + build/release/*.blockmap + build/release/latest.yml + ) + if [ ${#files[@]} -eq 0 ]; then + echo "No Windows release files found." + exit 1 + fi + + gh release upload "$RELEASE_TAG" "${files[@]}" --clobber + + build-linux-x64: + name: Linux x64 + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + - uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: pnpm + - run: pnpm install --frozen-lockfile + - name: Build electron-vite + run: pnpm exec electron-vite build + - name: Package + run: pnpm exec electron-builder --linux --x64 --config electron-builder.yml --publish never + - name: Upload release files + env: + GH_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ inputs.release_tag }} + RELEASE_TITLE: ${{ inputs.release_title }} + run: | + set -euo pipefail + gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \ + gh release create "$RELEASE_TAG" \ + --draft \ + --prerelease \ + --title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \ + --notes "Temporary release transport generated by remote-release-platforms.yml." \ + --target "$GITHUB_SHA" + + shopt -s nullglob + files=( + build/release/*.AppImage + build/release/*.deb + build/release/*.rpm + build/release/latest-linux.yml + ) + if [ ${#files[@]} -eq 0 ]; then + echo "No Linux x64 release files found." + exit 1 + fi + + gh release upload "$RELEASE_TAG" "${files[@]}" --clobber + + build-linux-arm64: + name: Linux arm64 + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + - uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: pnpm + - run: pnpm install --frozen-lockfile + - name: Build electron-vite + run: pnpm exec electron-vite build + - name: Package + run: pnpm exec electron-builder --linux --arm64 --config electron-builder.yml --publish never + - name: Upload release files + env: + GH_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ inputs.release_tag }} + RELEASE_TITLE: ${{ inputs.release_title }} + run: | + set -euo pipefail + gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \ + gh release create "$RELEASE_TAG" \ + --draft \ + --prerelease \ + --title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \ + --notes "Temporary release transport generated by remote-release-platforms.yml." \ + --target "$GITHUB_SHA" + + shopt -s nullglob + files=( + build/release/*arm64*.AppImage + build/release/*arm64*.deb + build/release/*aarch64*.rpm + ) + if [ ${#files[@]} -eq 0 ]; then + echo "No Linux arm64 release files found." + exit 1 + fi + + gh release upload "$RELEASE_TAG" "${files[@]}" --clobber