ci(nightly): fix nightly update detection broken by AppImage bundling hang (#4909)

Since 2026-06-29 the nightly Linux legs hang forever while bundling the
AppImage and hit the job-level timeout, which reports the legs as
'cancelled'. The assemble-manifest guard treats 'cancelled' as run
cancellation and skips promoting nightly/latest.json, so nightly update
detection has been broken for ALL platforms since then (#4906).

Root cause: the truly-portable AppImage bundler in the tauri fork
downloads quick-sharun.sh from the unpinned main branch of
pkgforge-dev/Anylinux-AppImages. Upstream strace-mode changes on
2026-06-29 (acb1d719, 867c0b15) made the script execute the staged app
launcher scripts and WebKitGTK binaries under Xvfb to trace dlopened
libraries; the spawned WebKit processes survive the process-group kill
and quick-sharun waits forever.

Fixes:
- Pre-seed the tauri tools cache with quick-sharun.sh pinned to the
  last known-good revision (b3a9e985, used by the green 06-27/06-28
  nightlies) in both nightly.yml and release.yml. The bundler only
  downloads the moving main-branch script when the file is absent.
- Add step-level timeout-minutes to the nightly build steps and raise
  the job timeout to a 75-minute backstop, so a future hang fails only
  that leg ('failure') instead of tripping the job timeout
  ('cancelled'), and assemble-manifest still promotes the manifest
  fragments from the healthy legs.

Closes #4906

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Huang Xin
2026-07-03 18:38:25 +09:00
committed by GitHub
parent 71cb3ace91
commit 2680614c15
2 changed files with 42 additions and 1 deletions
+26 -1
View File
@@ -78,7 +78,9 @@ jobs:
args: '--target aarch64-pc-windows-msvc --bundles nsis'
runs-on: ${{ matrix.config.os }}
timeout-minutes: 60
# Backstop only — must stay ABOVE setup time + the per-step timeouts below,
# because a job-level timeout reports `cancelled` and skips assemble-manifest.
timeout-minutes: 75
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
@@ -173,6 +175,7 @@ jobs:
- name: build and sign Android apks
if: matrix.config.release == 'android'
shell: bash
timeout-minutes: 55
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/28.2.13676358
@@ -213,9 +216,30 @@ jobs:
if: matrix.config.release == 'linux'
run: cargo install tauri-cli --git https://github.com/tauri-apps/tauri --branch feat/truly-portable-appimage --force
# The truly-portable AppImage bundler downloads quick-sharun.sh from
# Anylinux-AppImages@main ONLY when it is not already in the tauri tools
# cache. An upstream strace-mode change (2026-06-29) made bundling launch
# the app under Xvfb and hang forever, timing out the Linux legs (#4906).
# Seed the cache with the last known-good revision so the bundler never
# fetches the moving main-branch script.
- name: pin quick-sharun.sh for AppImage bundling (Linux)
if: matrix.config.release == 'linux'
run: |
set -euo pipefail
cache_dir="${XDG_CACHE_HOME:-$HOME/.cache}/tauri"
mkdir -p "$cache_dir"
curl -fsSL --retry 3 -o "$cache_dir/quick-sharun.sh" \
"https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/b3a9e985cdedf7efa81d172f182cd13983743147/useful-tools/quick-sharun.sh"
chmod +x "$cache_dir/quick-sharun.sh"
- name: build desktop bundles
if: matrix.config.release != 'android'
shell: bash
# A hung build must fail the STEP (step timeout -> job failure), not hit
# the job-level timeout: job timeouts report `cancelled`, which the
# assemble-manifest guard treats as run cancellation and skips promoting
# latest.json for ALL platforms (#4906).
timeout-minutes: 45
env:
TAURI_BUNDLER_NEW_APPIMAGE_FORMAT: 'true'
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
@@ -244,6 +268,7 @@ jobs:
- name: build and sign portable binaries (Windows only)
if: matrix.config.os == 'windows-latest'
shell: bash
timeout-minutes: 30
env:
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
+16
View File
@@ -320,6 +320,22 @@ jobs:
if: matrix.config.release == 'linux'
run: cargo install tauri-cli --git https://github.com/tauri-apps/tauri --branch feat/truly-portable-appimage --force
# The truly-portable AppImage bundler downloads quick-sharun.sh from
# Anylinux-AppImages@main ONLY when it is not already in the tauri tools
# cache. An upstream strace-mode change (2026-06-29) made bundling launch
# the app under Xvfb and hang forever (#4906). Seed the cache with the
# last known-good revision so the bundler never fetches the moving
# main-branch script. Keep in sync with nightly.yml.
- name: pin quick-sharun.sh for AppImage bundling (Linux)
if: matrix.config.release == 'linux'
run: |
set -euo pipefail
cache_dir="${XDG_CACHE_HOME:-$HOME/.cache}/tauri"
mkdir -p "$cache_dir"
curl -fsSL --retry 3 -o "$cache_dir/quick-sharun.sh" \
"https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/b3a9e985cdedf7efa81d172f182cd13983743147/useful-tools/quick-sharun.sh"
chmod +x "$cache_dir/quick-sharun.sh"
- uses: tauri-apps/tauri-action@1deb371b0cd8bd54025b384f1cd735e725c4060f # v1.0.0
id: tauri
if: matrix.config.release != 'android'