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:
+30
-18
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user