mirror of
https://github.com/stablyai/orca.git
synced 2026-10-06 16:02:25 +00:00
* Let measured cache producers keep stores without downloading them * Check that restore-only callers do not publish a producer path * Enable the measured producer mode and record hosted comparisons
164 lines
5.7 KiB
YAML
164 lines
5.7 KiB
YAML
name: Warm shared CI caches
|
|
|
|
on:
|
|
# Cache-input pushes seed immediately; this schedule repairs eviction and image changes.
|
|
schedule:
|
|
- cron: '41 */6 * * *'
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- '.github/workflows/ci-cache-warmup.yml'
|
|
- '.github/actions/install-node-dependencies/**'
|
|
- '.github/actions/restore-pnpm-verification/**'
|
|
- '.github/actions/prepare-native-runtime/**'
|
|
- '.github/actions/prepare-git-compatibility/**'
|
|
- '.github/actions/prepare-headless-compiler/**'
|
|
- 'config/scripts/headless-detector-compiler-cache*'
|
|
- '.github/actions/prepare-linux-package-fixture/**'
|
|
- 'config/docker/headless-serve-shutdown/**'
|
|
- 'config/docker/cli-launch-contract/**'
|
|
- 'config/docker/daemon-shutdown-descendants/**'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- '.npmrc'
|
|
- '.pnpmfile.cjs'
|
|
- 'config/tsconfig*.json'
|
|
- 'config/scripts/ensure-native-runtime.mjs'
|
|
- 'config/scripts/rebuild-native-deps.mjs'
|
|
- 'config/scripts/node-pty-job-ownership.cjs'
|
|
- 'config/scripts/windows-pe-machine.cjs'
|
|
- 'config/scripts/windows-process-tree-gyp-rebuild.mjs'
|
|
- 'config/scripts/windows-process-tree-creation-time.cjs'
|
|
- 'config/scripts/install-electron-package-binary.mjs'
|
|
- 'config/scripts/electron-platform-path.mjs'
|
|
- 'config/scripts/zip-extractor-command.mjs'
|
|
- 'src/shared/zip-extractor-command.ts'
|
|
- 'config/scripts/shared-electron-dist-cache.mjs'
|
|
- 'config/scripts/space-sharing-copy.mjs'
|
|
- 'config/patches/**'
|
|
- 'native/windows-registry/**'
|
|
pull_request:
|
|
paths:
|
|
- '.github/workflows/ci-cache-warmup.yml'
|
|
- '.github/actions/prepare-git-compatibility/**'
|
|
- '.github/actions/prepare-headless-compiler/**'
|
|
- 'config/scripts/headless-detector-compiler-cache*'
|
|
- '.github/actions/prepare-linux-package-fixture/**'
|
|
- 'config/docker/headless-serve-shutdown/**'
|
|
- 'config/docker/cli-launch-contract/**'
|
|
- 'config/docker/daemon-shutdown-descendants/**'
|
|
- 'config/scripts/ci-cache-warmup-workflow.test.mjs'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ci-cache-warmup-${{ github.event.pull_request.number || github.ref }}
|
|
# Scheduled retries must let an active warmer finish publishing its caches.
|
|
cancel-in-progress: ${{ github.event_name != 'schedule' }}
|
|
|
|
jobs:
|
|
warm:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
env:
|
|
ORCA_BACKGROUND_LAUNCH: '1'
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
|
|
# Default-branch caches can be restored by every PR; PR caches cannot.
|
|
- uses: ./.github/actions/install-node-dependencies
|
|
with:
|
|
native-runtime: node
|
|
node-version: '24'
|
|
cache-electron-package: 'true'
|
|
cache-pnpm-store-lookup-only: 'true'
|
|
|
|
- uses: ./.github/actions/prepare-headless-compiler
|
|
with:
|
|
seed: 'true'
|
|
|
|
- name: Populate shared Electron archive
|
|
run: node config/scripts/install-electron-package-binary.mjs
|
|
|
|
- uses: ./.github/actions/prepare-git-compatibility
|
|
|
|
- name: Cache TypeScript incremental state
|
|
id: typecheck-cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: config/*.tsbuildinfo
|
|
key: tsbuildinfo-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'config/tsconfig*.json') }}-${{ github.sha }}
|
|
restore-keys: |
|
|
tsbuildinfo-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'config/tsconfig*.json') }}-
|
|
|
|
- name: Refresh TypeScript state for this commit
|
|
if: steps.typecheck-cache.outputs.cache-hit != 'true'
|
|
run: pnpm run typecheck
|
|
|
|
warm-linux-arm:
|
|
runs-on: ubuntu-24.04-arm
|
|
timeout-minutes: 10
|
|
env:
|
|
ORCA_BACKGROUND_LAUNCH: '1'
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- uses: ./.github/actions/install-node-dependencies
|
|
with:
|
|
native-runtime: node
|
|
node-version: '24'
|
|
cache-electron-package: 'true'
|
|
cache-pnpm-store-lookup-only: 'true'
|
|
- name: Populate shared Electron archive
|
|
run: node config/scripts/install-electron-package-binary.mjs
|
|
- name: Verify native cache is usable
|
|
run: node config/scripts/ensure-native-runtime.mjs --check-only
|
|
|
|
warm-windows:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-2022, windows-11-arm]
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 20
|
|
env:
|
|
ORCA_BACKGROUND_LAUNCH: '1'
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- uses: ./.github/actions/install-node-dependencies
|
|
with:
|
|
native-runtime: node
|
|
cache-pnpm-store-lookup-only: 'true'
|
|
- name: Verify native cache is usable
|
|
run: node config/scripts/ensure-native-runtime.mjs --check-only
|
|
|
|
warm-linux-package-fixtures:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
env:
|
|
ORCA_BACKGROUND_LAUNCH: '1'
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- uses: ./.github/actions/prepare-linux-package-fixture
|
|
with:
|
|
fixture: daemon-shutdown-descendants
|
|
save-cache: ${{ github.event_name != 'pull_request' }}
|
|
- uses: ./.github/actions/prepare-linux-package-fixture
|
|
with:
|
|
fixture: headless-serve-shutdown
|
|
save-cache: ${{ github.event_name != 'pull_request' }}
|
|
- uses: ./.github/actions/prepare-linux-package-fixture
|
|
with:
|
|
fixture: cli-launch-contract
|
|
save-cache: ${{ github.event_name != 'pull_request' }}
|