ci: latest action majors, rolling cache keys and Test timeouts

- Actions moved to their latest majors: checkout v4->v7, cache v4->v6
  (restore/save too), upload-artifact v4->v7, download-artifact v4->v8,
  action-gh-release v2->v3. rust-cache and rust-toolchain already track
  their latest majors.
- vcpkg caches now save under a per-run key and restore through
  `restore-keys` (newest entry for the exact manifest first, then the
  newest entry for that OS): saving can no longer fail because the key
  already exists ("update if present, create if not"), and a manifest
  change reuses vcpkg's content-addressed archives instead of rebuilding
  every port.
- Every Test step gets an explicit 40-minute bound. macOS had no watchdog
  at all (the Linux/openKylin scripts carry their own) and the current run
  has been sitting in Test with no progress; a hung suite now fails the
  step instead of running to the job timeout.
This commit is contained in:
2026-09-24 15:09:41 +08:00
parent c64dd5ce06
commit b94158a941
2 changed files with 67 additions and 36 deletions
+30 -18
View File
@@ -55,7 +55,7 @@ jobs:
esac
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: true
@@ -108,14 +108,17 @@ jobs:
echo "VCPKG_ROOT=$PWD/.cache/vcpkg" >> "$GITHUB_ENV"
- name: Cache vcpkg artifacts
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
vcpkg_installed
~/.cache/vcpkg/archives
# The distro prefix matters: the same Ubuntu-runner cache scope
# backs three different container distros.
key: vcpkg-${{ matrix.distro }}-x64-linux-${{ hashFiles('vcpkg.json') }}
key: vcpkg-${{ matrix.distro }}-x64-linux-${{ hashFiles('vcpkg.json') }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
vcpkg-${{ matrix.distro }}-x64-linux-${{ hashFiles('vcpkg.json') }}-
vcpkg-${{ matrix.distro }}-x64-linux-
save-always: true
- name: Install dependencies (vcpkg manifest)
@@ -162,7 +165,7 @@ jobs:
shell: bash
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: oak-linux-${{ matrix.distro }}
path: |
@@ -180,7 +183,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: true
@@ -214,12 +217,15 @@ jobs:
echo "VCPKG_ROOT=$PWD/.cache/vcpkg" >> "$GITHUB_ENV"
- name: Cache vcpkg artifacts
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
vcpkg_installed
~/.cache/vcpkg/archives
key: vcpkg-${{ runner.os }}-appimage-${{ hashFiles('vcpkg.json') }}
key: vcpkg-${{ runner.os }}-appimage-${{ hashFiles('vcpkg.json') }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
vcpkg-${{ runner.os }}-appimage-${{ hashFiles('vcpkg.json') }}-
vcpkg-${{ runner.os }}-appimage-
save-always: true
- name: Install dependencies (vcpkg manifest)
@@ -255,7 +261,7 @@ jobs:
run: cargo packager --release --formats appimage
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: oak-linux-appimage
path: target/release/*.AppImage
@@ -267,7 +273,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: true
@@ -293,12 +299,15 @@ jobs:
echo "VCPKG_ROOT=$PWD/.cache/vcpkg" >> "$GITHUB_ENV"
- name: Cache vcpkg artifacts
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
vcpkg_installed
~/.cache/vcpkg/archives
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-
vcpkg-${{ runner.os }}-
save-always: true
- name: Install dependencies (vcpkg manifest)
@@ -356,7 +365,7 @@ jobs:
-srcfolder dmg-staging -ov -format UDZO Oak-macOS-arm64.dmg
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: oak-macos
path: Oak-macOS-arm64.dmg
@@ -373,7 +382,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: true
@@ -400,12 +409,15 @@ jobs:
"VCPKG_ROOT=$env:GITHUB_WORKSPACE\.cache\vcpkg" >> $env:GITHUB_ENV
- name: Cache vcpkg artifacts
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
vcpkg_installed
~/AppData/Local/vcpkg/archives
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-
vcpkg-${{ runner.os }}-
save-always: true
- name: Install dependencies (vcpkg manifest)
@@ -460,7 +472,7 @@ jobs:
run: cargo packager --release --formats nsis
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: oak-windows
path: target/release/*-setup.exe
@@ -477,13 +489,13 @@ jobs:
runs-on: warp-ubuntu-latest-x64-8x
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
path: artifacts
merge-multiple: true
- name: Publish release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
+37 -18
View File
@@ -21,7 +21,7 @@ jobs:
runs-on: warp-ubuntu-latest-x64-8x
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
# gpui/ is a git submodule; its crates are workspace members of
# their own repo and build as path dependencies of oakapp.
@@ -71,15 +71,20 @@ jobs:
echo "VCPKG_ROOT=$PWD/.cache/vcpkg" >> "$GITHUB_ENV"
# The archives dir is vcpkg's binary cache: a manifest bump then
# rebuilds only what changed. Same key scheme as the Windows job.
# rebuilds only what changed. Every run saves under a fresh key
# (so an existing cache is updated, never a save failure) and
# restores the newest matching entry through `restore-keys`.
- name: Restore vcpkg artifacts
id: vcpkg-cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v6
with:
path: |
vcpkg_installed
~/.cache/vcpkg/archives
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-
vcpkg-${{ runner.os }}-
- name: Install dependencies (vcpkg manifest)
run: vcpkg install --triplet x64-linux
@@ -91,7 +96,7 @@ jobs:
# (~40 min on Windows).
- name: Save vcpkg artifacts
if: always()
uses: actions/cache/save@v4
uses: actions/cache/save@v6
with:
path: |
vcpkg_installed
@@ -144,6 +149,7 @@ jobs:
# and no failure, so after 1800 s it dumps every hung process's
# thread stacks and kills the suite.
- name: Test
timeout-minutes: 40
env:
# lavapipe is present on this job: a missing adapter must fail
# the GPU acceptance tests instead of silently skipping them.
@@ -244,7 +250,7 @@ jobs:
runs-on: warp-windows-2025-vs2026-x64-32x
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
# gpui/ is a git submodule; its crates are workspace members of
# their own repo and build as path dependencies of oakapp.
@@ -309,12 +315,15 @@ jobs:
- name: Restore vcpkg artifacts
id: vcpkg-cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v6
with:
path: |
vcpkg_installed
~/AppData/Local/vcpkg/archives
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-
vcpkg-${{ runner.os }}-
- name: Install dependencies (vcpkg manifest)
run: vcpkg install --triplet x64-windows
@@ -324,7 +333,7 @@ jobs:
# for ~40 minutes on every run).
- name: Save vcpkg artifacts
if: always()
uses: actions/cache/save@v4
uses: actions/cache/save@v6
with:
path: |
vcpkg_installed
@@ -372,6 +381,7 @@ jobs:
run: cargo check --workspace --locked
- name: Test
timeout-minutes: 40
run: |
cargo test --workspace --locked
if ($LASTEXITCODE -ne 0) {
@@ -390,7 +400,7 @@ jobs:
runs-on: warp-macos-26-arm64-12x
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
# gpui/ is a git submodule; its crates are workspace members of
# their own repo and build as path dependencies of oakapp.
@@ -422,22 +432,27 @@ jobs:
echo "VCPKG_ROOT=$PWD/.cache/vcpkg" >> "$GITHUB_ENV"
# The archives dir is vcpkg's binary cache: a manifest bump then
# rebuilds only what changed. Same key scheme as the Windows job.
# rebuilds only what changed. Every run saves under a fresh key
# (so an existing cache is updated, never a save failure) and
# restores the newest matching entry through `restore-keys`.
- name: Restore vcpkg artifacts
id: vcpkg-cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v6
with:
path: |
vcpkg_installed
~/.cache/vcpkg/archives
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}-
vcpkg-${{ runner.os }}-
- name: Install dependencies (vcpkg manifest)
run: vcpkg install --triplet arm64-osx
- name: Save vcpkg artifacts
if: always()
uses: actions/cache/save@v4
uses: actions/cache/save@v6
with:
path: |
vcpkg_installed
@@ -480,6 +495,7 @@ jobs:
# The runner's GUI session doubles as the display for the gpui
# #[gpui::test] windows; wgpu renders through Metal.
- name: Test
timeout-minutes: 40
run: |
# Retry once (same policy as the other platforms): worker-pool
# startup under full-suite parallelism has flaked on Linux. A
@@ -524,7 +540,7 @@ jobs:
run: apt-get update && apt-get install -y git curl ca-certificates
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
# gpui/ is a git submodule; its crates are workspace members of
# their own repo and build as path dependencies of oakapp.
@@ -581,21 +597,24 @@ jobs:
# rebuilds only what changed.
- name: Restore vcpkg artifacts
id: vcpkg-cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v6
with:
path: |
vcpkg_installed
~/.cache/vcpkg/archives
# The arch prefix matters here: both jobs run the same distro
# image through the same cache scope, unlike the OS jobs.
key: vcpkg-${{ runner.os }}-${{ matrix.arch }}-openkylin-${{ hashFiles('vcpkg.json') }}
key: vcpkg-${{ runner.os }}-${{ matrix.arch }}-openkylin-${{ hashFiles('vcpkg.json') }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
vcpkg-${{ runner.os }}-${{ matrix.arch }}-openkylin-${{ hashFiles('vcpkg.json') }}-
vcpkg-${{ runner.os }}-${{ matrix.arch }}-openkylin-
- name: Install dependencies (vcpkg manifest)
run: vcpkg install --triplet ${{ matrix.triplet }}
- name: Save vcpkg artifacts
if: always()
uses: actions/cache/save@v4
uses: actions/cache/save@v6
with:
path: |
vcpkg_installed