From 6b7de99f78d96dd522f49f1fd5c84c6f80fffa9d Mon Sep 17 00:00:00 2001 From: lucaronin Date: Fri, 8 May 2026 11:54:48 +0200 Subject: [PATCH] fix: deploy release pages via github pages --- .github/workflows/release-stable.yml | 52 ++++++++-------------------- .github/workflows/release.yml | 52 ++++++++-------------------- docs/ABSTRACTIONS.md | 4 +-- 3 files changed, 32 insertions(+), 76 deletions(-) diff --git a/.github/workflows/release-stable.yml b/.github/workflows/release-stable.yml index ca69f036..10256e80 100644 --- a/.github/workflows/release-stable.yml +++ b/.github/workflows/release-stable.yml @@ -733,7 +733,12 @@ jobs: needs: [version, release] runs-on: ubuntu-latest permissions: - contents: write + contents: read + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} concurrency: group: github-pages cancel-in-progress: false @@ -756,6 +761,9 @@ jobs: with: bun-version: latest + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Install dependencies run: pnpm install --frozen-lockfile @@ -784,41 +792,11 @@ jobs: cp _site/alpha/latest.json _site/latest.json cp _site/alpha/latest.json _site/latest-canary.json - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@e9c66a37f080288a11235e32cbe2dc5fb3a679cc + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v4 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./_site - commit_message: "Update release history for ${{ needs.version.outputs.tag }}" + path: ./_site - - name: Request and verify GitHub Pages rebuild - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - BUILD_URL=$(gh api --method POST \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - "repos/${{ github.repository }}/pages/builds" \ - --jq '.url') - BUILD_ID="${BUILD_URL##*/}" - if [ -z "$BUILD_ID" ]; then - echo "::error::GitHub Pages rebuild request did not return a build id." - exit 1 - fi - - for attempt in {1..30}; do - STATUS=$(gh api "repos/${{ github.repository }}/pages/builds/${BUILD_ID}" --jq '.status') - echo "GitHub Pages build ${BUILD_ID} status: ${STATUS} (attempt ${attempt}/30)" - case "$STATUS" in - built) - exit 0 - ;; - errored) - exit 1 - ;; - esac - sleep 10 - done - - echo "::error::GitHub Pages build ${BUILD_ID} did not finish within 5 minutes." - exit 1 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8adfd8fa..caed188b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -779,7 +779,12 @@ jobs: needs: [version, release] runs-on: ubuntu-latest permissions: - contents: write + contents: read + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} concurrency: group: github-pages cancel-in-progress: false @@ -802,6 +807,9 @@ jobs: with: bun-version: latest + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Install dependencies run: pnpm install --frozen-lockfile @@ -830,41 +838,11 @@ jobs: cp _site/alpha/latest.json _site/latest.json cp _site/alpha/latest.json _site/latest-canary.json - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@e9c66a37f080288a11235e32cbe2dc5fb3a679cc + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v4 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./_site - commit_message: "Update release history for ${{ needs.version.outputs.tag }}" + path: ./_site - - name: Request and verify GitHub Pages rebuild - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - BUILD_URL=$(gh api --method POST \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - "repos/${{ github.repository }}/pages/builds" \ - --jq '.url') - BUILD_ID="${BUILD_URL##*/}" - if [ -z "$BUILD_ID" ]; then - echo "::error::GitHub Pages rebuild request did not return a build id." - exit 1 - fi - - for attempt in {1..30}; do - STATUS=$(gh api "repos/${{ github.repository }}/pages/builds/${BUILD_ID}" --jq '.status') - echo "GitHub Pages build ${BUILD_ID} status: ${STATUS} (attempt ${attempt}/30)" - case "$STATUS" in - built) - exit 0 - ;; - errored) - exit 1 - ;; - esac - sleep 10 - done - - echo "::error::GitHub Pages build ${BUILD_ID} did not finish within 5 minutes." - exit 1 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/docs/ABSTRACTIONS.md b/docs/ABSTRACTIONS.md index e1e740b4..ab7bf159 100644 --- a/docs/ABSTRACTIONS.md +++ b/docs/ABSTRACTIONS.md @@ -893,6 +893,6 @@ Managed by `useSettings` hook and `SettingsPanel` component. `theme_mode` is ins - **`download_and_install_app_update`** — Channel-aware download/install with streamed progress events. ### CI/CD -- **`.github/workflows/release.yml`** — Alpha prereleases from every push to `main` using calendar-semver technical versions (`YYYY.M.D-alpha.N`) and clean `Alpha YYYY.M.D.N` release names. GitHub alpha tags zero-pad the prerelease sequence (`alpha-vYYYY.M.D-alpha.NNNN`) so GitHub release ordering stays chronological while the shipped app version remains `YYYY.M.D-alpha.N`. Publishes `alpha/latest.json` with macOS Apple Silicon/Intel, Linux x64, and Windows x64 updater entries, then refreshes the legacy `latest.json` / `latest-canary.json` aliases to the alpha feed. The docs/release Pages job reads the stable manifest from the latest stable release asset instead of copying the live Pages URL, then explicitly requests and verifies a GitHub Pages rebuild after deploying `gh-pages`. macOS release assets use `Tolaria__macOS_Silicon` and `Tolaria__macOS_Intel` base names. Packaged builds pass the computed version as `VITE_SENTRY_RELEASE`, which is retained as a diagnostic build-version tag but not registered as a normal Sentry release for alpha builds. -- **`.github/workflows/release-stable.yml`** — Stable releases from `stable-vYYYY.M.D` tags. Publishes `stable/latest.json`, macOS Apple Silicon and Intel DMG/updater artifacts, Windows x64 installers/updater bundles, Linux x86_64 `.deb` / AppImage artifacts, and a static public download page that starts the selected installer without replacing the page with a blank download navigation. The Pages job reads the alpha manifest from the latest alpha release asset instead of copying the live Pages URL, then explicitly requests and verifies a GitHub Pages rebuild after deploying `gh-pages`. Stable macOS DMG/updater assets use the same `Tolaria__macOS_Silicon` and `Tolaria__macOS_Intel` base names. Packaged builds pass the computed stable version as `VITE_SENTRY_RELEASE`, which is registered as Sentry's release. +- **`.github/workflows/release.yml`** — Alpha prereleases from every push to `main` using calendar-semver technical versions (`YYYY.M.D-alpha.N`) and clean `Alpha YYYY.M.D.N` release names. GitHub alpha tags zero-pad the prerelease sequence (`alpha-vYYYY.M.D-alpha.NNNN`) so GitHub release ordering stays chronological while the shipped app version remains `YYYY.M.D-alpha.N`. Publishes `alpha/latest.json` with macOS Apple Silicon/Intel, Linux x64, and Windows x64 updater entries, then refreshes the legacy `latest.json` / `latest-canary.json` aliases to the alpha feed. The docs/release Pages job reads the stable manifest from the latest stable release asset instead of copying the live Pages URL, uploads the built site as a Pages artifact, and deploys it with GitHub's official Pages action so the public updater JSON changes as part of the release workflow. macOS release assets use `Tolaria__macOS_Silicon` and `Tolaria__macOS_Intel` base names. Packaged builds pass the computed version as `VITE_SENTRY_RELEASE`, which is retained as a diagnostic build-version tag but not registered as a normal Sentry release for alpha builds. +- **`.github/workflows/release-stable.yml`** — Stable releases from `stable-vYYYY.M.D` tags. Publishes `stable/latest.json`, macOS Apple Silicon and Intel DMG/updater artifacts, Windows x64 installers/updater bundles, Linux x86_64 `.deb` / AppImage artifacts, and a static public download page that starts the selected installer without replacing the page with a blank download navigation. The Pages job reads the alpha manifest from the latest alpha release asset instead of copying the live Pages URL, uploads the built site as a Pages artifact, and deploys it with GitHub's official Pages action so stable and alpha manifests stay fresh. Stable macOS DMG/updater assets use the same `Tolaria__macOS_Silicon` and `Tolaria__macOS_Intel` base names. Packaged builds pass the computed stable version as `VITE_SENTRY_RELEASE`, which is registered as Sentry's release. - **Beta cohorts** are handled in PostHog targeting only. There is no beta updater feed.