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:
@@ -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 }}
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user