mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-25 03:45:46 -06:00
fix(ci): isolate Actions cache writes (#127107)
This commit is contained in:
@@ -23,24 +23,16 @@ inputs:
|
||||
description: Whether to use --frozen-lockfile for install.
|
||||
required: false
|
||||
default: "true"
|
||||
use-actions-cache:
|
||||
description: Whether to restore the pnpm store with actions/cache.
|
||||
cache-mode:
|
||||
description: Cache authority for this setup action (off, restore, or read-write).
|
||||
required: false
|
||||
default: "true"
|
||||
save-actions-cache:
|
||||
description: Whether to save the pnpm store with actions/cache after install when no exact cache restored.
|
||||
required: false
|
||||
default: "false"
|
||||
default: "off"
|
||||
dependency-cache:
|
||||
description: Whether to restore workspace node_modules and its local pnpm store from the exact semantic dependency cache.
|
||||
required: false
|
||||
default: "false"
|
||||
save-dependency-cache:
|
||||
description: Whether to save workspace node_modules and its local pnpm store after a successful install on an exact cache miss.
|
||||
required: false
|
||||
default: "false"
|
||||
vitest-fs-cache:
|
||||
description: Whether to persist Vitest's experimental filesystem module cache.
|
||||
description: Whether to restore Vitest's experimental filesystem module cache.
|
||||
required: false
|
||||
default: "false"
|
||||
restore-test-caches:
|
||||
@@ -48,30 +40,75 @@ inputs:
|
||||
required: false
|
||||
default: "false"
|
||||
node-compile-cache:
|
||||
description: Whether to persist Node's on-disk V8 compile cache.
|
||||
description: Whether to restore Node's on-disk V8 compile cache.
|
||||
required: false
|
||||
default: "false"
|
||||
node-compile-cache-scope:
|
||||
description: Cache namespace for isolating workloads with different writer ownership.
|
||||
required: false
|
||||
default: "test"
|
||||
save-node-compile-cache:
|
||||
description: Whether this job may save the Node compile cache.
|
||||
required: false
|
||||
default: "false"
|
||||
save-vitest-fs-cache:
|
||||
description: Whether this job may save the shared Vitest filesystem module cache.
|
||||
required: false
|
||||
default: "false"
|
||||
build-all-cache-scope:
|
||||
description: >
|
||||
Namespace for restoring and saving build-all's content-addressed step cache.
|
||||
Namespace for restoring build-all's content-addressed step cache.
|
||||
Leave empty to disable; use only for declaration builds with public inputs.
|
||||
required: false
|
||||
default: ""
|
||||
outputs:
|
||||
cache-mode:
|
||||
description: Validated cache authority selected by the caller.
|
||||
value: ${{ inputs.cache-mode }}
|
||||
node-toolchain-cache-key:
|
||||
description: Exact key for saving a newly downloaded Node toolchain.
|
||||
value: openclaw-node-toolchain-v1-${{ runner.os }}-${{ runner.arch }}-${{ inputs.node-version }}-${{ steps.setup-node.outputs.resolved-version }}
|
||||
node-toolchain-cache-matched-key:
|
||||
description: Node toolchain cache key restored by this run.
|
||||
value: ${{ steps.node-toolchain-restore.outputs.cache-matched-key }}
|
||||
node-toolchain-cache-path:
|
||||
description: Runner-local Node toolchain cache path.
|
||||
value: ${{ runner.temp }}/openclaw-node-toolchain/node
|
||||
node-toolchain-populated:
|
||||
description: Whether setup downloaded a Node toolchain into the cache path.
|
||||
value: ${{ steps.setup-node.outputs.toolchain-populated }}
|
||||
dependency-cache-hit:
|
||||
description: Whether the exact semantic dependency cache restored.
|
||||
value: ${{ steps.dependency-cache.outputs.cache-hit }}
|
||||
dependency-cache-key:
|
||||
description: Exact semantic dependency cache key.
|
||||
value: ${{ steps.dependency-cache-key.outputs.key }}
|
||||
pnpm-store-cache-hit:
|
||||
description: Whether the pnpm store restored an exact key.
|
||||
value: ${{ steps.setup-pnpm.outputs.store-cache-hit }}
|
||||
pnpm-store-cache-key:
|
||||
description: Exact pnpm store key used for restore or save.
|
||||
value: ${{ steps.setup-pnpm.outputs.store-cache-primary-key }}
|
||||
pnpm-store-cache-path:
|
||||
description: Resolved pnpm store path.
|
||||
value: ${{ steps.setup-pnpm.outputs.store-path }}
|
||||
vitest-cache-key:
|
||||
description: Exact Vitest transform cache key.
|
||||
value: ${{ steps.vitest-cache.outputs.cache-primary-key }}
|
||||
node-compile-cache-key:
|
||||
description: Exact Node compile cache key.
|
||||
value: ${{ steps.node-compile-cache.outputs.cache-primary-key }}
|
||||
build-all-cache-key:
|
||||
description: Exact build-all cache key.
|
||||
value: ${{ steps.build-all-cache.outputs.cache-primary-key }}
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Validate cache mode
|
||||
shell: bash
|
||||
env:
|
||||
CACHE_MODE: ${{ inputs.cache-mode }}
|
||||
run: |
|
||||
case "$CACHE_MODE" in
|
||||
off|restore|read-write) ;;
|
||||
*)
|
||||
echo "::error::Invalid cache-mode input: '$CACHE_MODE' (expected off, restore, or read-write)"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
|
||||
- name: Normalize container toolcache
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -91,16 +128,15 @@ runs:
|
||||
# entry is self-healing: ensure-node probes each candidate's version and
|
||||
# falls back to the download when none satisfies the floor.
|
||||
# Restore by prefix, never by exact key: cache entries are immutable and an
|
||||
# exact hit suppresses the post-job save, so a floating `24.x` key would pin
|
||||
# the first Node it ever saw. Once the floor advances past it every job would
|
||||
# restore the rejected payload and re-download forever. The save below is
|
||||
# keyed on the version actually installed, so a newer resolve publishes a new
|
||||
# entry and later prefix restores pick it up.
|
||||
# exact key would pin the first Node it ever saw. Once the floor advances
|
||||
# past it every job would restore the rejected payload and re-download
|
||||
# forever. The trusted cache warmer publishes the resolved version as a new
|
||||
# exact key, so later prefix restores pick it up.
|
||||
# GitHub-hosted images carry a Node that already clears the floor, so they
|
||||
# resolve from /opt/hostedtoolcache and would only ever miss here, then warn
|
||||
# on a save whose path was never created. Scope both steps to self-hosted.
|
||||
# resolve from /opt/hostedtoolcache and would only ever miss here. Scope the
|
||||
# restore to self-hosted runners.
|
||||
- name: Restore Node toolchain cache
|
||||
if: runner.os != 'Windows' && runner.environment != 'github-hosted'
|
||||
if: inputs.cache-mode != 'off' && runner.os != 'Windows' && runner.environment != 'github-hosted'
|
||||
id: node-toolchain-restore
|
||||
continue-on-error: true
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
@@ -115,7 +151,7 @@ runs:
|
||||
shell: bash
|
||||
env:
|
||||
REQUESTED_NODE_VERSION: ${{ inputs.node-version }}
|
||||
OPENCLAW_NODE_TOOLCHAIN_ROOT: ${{ runner.os != 'Windows' && format('{0}/openclaw-node-toolchain/node', runner.temp) || '' }}
|
||||
OPENCLAW_NODE_TOOLCHAIN_ROOT: ${{ inputs.cache-mode != 'off' && runner.os != 'Windows' && format('{0}/openclaw-node-toolchain/node', runner.temp) || '' }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
source "$GITHUB_ACTION_PATH/../setup-pnpm-store-cache/ensure-node.sh"
|
||||
@@ -128,19 +164,8 @@ runs:
|
||||
echo "toolchain-populated=true" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
# Skipped when the restore already matched this exact resolved version, so a
|
||||
# warm run uploads nothing. On a version change the 46-way fanout races here;
|
||||
# the losers log a benign "cache already exists" and continue.
|
||||
- name: Save Node toolchain cache
|
||||
if: ${{ runner.os != 'Windows' && runner.environment != 'github-hosted' && steps.setup-node.outputs.toolchain-populated == 'true' && steps.node-toolchain-restore.outputs.cache-matched-key != format('openclaw-node-toolchain-v1-{0}-{1}-{2}-{3}', runner.os, runner.arch, inputs.node-version, steps.setup-node.outputs.resolved-version) }}
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: ${{ runner.temp }}/openclaw-node-toolchain/node
|
||||
key: openclaw-node-toolchain-v1-${{ runner.os }}-${{ runner.arch }}-${{ inputs.node-version }}-${{ steps.setup-node.outputs.resolved-version }}
|
||||
|
||||
- name: Configure dependency cache store
|
||||
if: inputs.dependency-cache == 'true'
|
||||
if: inputs.cache-mode != 'off' && inputs.dependency-cache == 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
@@ -150,7 +175,7 @@ runs:
|
||||
|
||||
- name: Resolve dependency cache key
|
||||
id: dependency-cache-key
|
||||
if: inputs.dependency-cache == 'true'
|
||||
if: inputs.cache-mode != 'off' && inputs.dependency-cache == 'true'
|
||||
shell: bash
|
||||
env:
|
||||
FROZEN_LOCKFILE: ${{ inputs.frozen-lockfile }}
|
||||
@@ -162,7 +187,7 @@ runs:
|
||||
echo "key=$cache_key" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Prepare dependency cache restore
|
||||
if: inputs.dependency-cache == 'true'
|
||||
if: inputs.cache-mode != 'off' && inputs.dependency-cache == 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
rm -rf "$GITHUB_WORKSPACE/node_modules" "$GITHUB_WORKSPACE/.cache/openclaw-pnpm-store"
|
||||
@@ -176,7 +201,7 @@ runs:
|
||||
|
||||
- name: Restore exact dependency cache
|
||||
id: dependency-cache
|
||||
if: inputs.dependency-cache == 'true'
|
||||
if: inputs.cache-mode != 'off' && inputs.dependency-cache == 'true'
|
||||
continue-on-error: true
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
@@ -189,7 +214,7 @@ runs:
|
||||
key: ${{ steps.dependency-cache-key.outputs.key }}
|
||||
|
||||
- name: Prepare dependency cache miss fallback
|
||||
if: inputs.dependency-cache == 'true' && steps.dependency-cache.outputs.cache-hit != 'true'
|
||||
if: inputs.cache-mode != 'off' && inputs.dependency-cache == 'true' && steps.dependency-cache.outputs.cache-hit != 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
# actions/cache treats service, download, and extraction failures as
|
||||
@@ -211,27 +236,16 @@ runs:
|
||||
# On an exact dependency-cache hit, the same archive already restored
|
||||
# the complete store. Every miss can seed it from the coarser cache,
|
||||
# including legacy Blacksmith callers that disabled that old fallback.
|
||||
use-actions-cache: ${{ ((inputs.dependency-cache == 'true' && steps.dependency-cache.outputs.cache-hit != 'true') || (inputs.dependency-cache != 'true' && inputs.use-actions-cache == 'true')) && 'true' || 'false' }}
|
||||
cache-mode: ${{ inputs.cache-mode != 'off' && (inputs.dependency-cache != 'true' || steps.dependency-cache.outputs.cache-hit != 'true') && 'restore' || 'off' }}
|
||||
|
||||
- name: Setup TruffleHog
|
||||
if: inputs.install-trufflehog == 'true'
|
||||
shell: bash
|
||||
run: bash scripts/install-trufflehog.sh
|
||||
|
||||
- name: Restore and save Vitest transform cache
|
||||
if: inputs.vitest-fs-cache == 'true' && inputs.save-vitest-fs-cache == 'true' && runner.os != 'Windows'
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: /var/tmp/openclaw-vitest-fs-cache
|
||||
# Blacksmith transparently accelerates the upstream Actions cache API.
|
||||
# The scheduled/dispatch warmer writes one immutable protected archive;
|
||||
# all CI shards restore it into isolated runner-local directories.
|
||||
key: ${{ github.repository }}-vitest-fs-v3-protected-${{ runner.os }}-${{ runner.arch }}-node-${{ inputs.node-version }}-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '**/package.json', '**/tsconfig*.json', 'vitest.config.*', 'test/vitest/**', 'src/state/*.sql', '!**/node_modules/**') }}-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
restore-keys: |
|
||||
${{ github.repository }}-vitest-fs-v3-protected-${{ runner.os }}-${{ runner.arch }}-node-${{ inputs.node-version }}-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '**/package.json', '**/tsconfig*.json', 'vitest.config.*', 'test/vitest/**', 'src/state/*.sql', '!**/node_modules/**') }}-
|
||||
|
||||
- name: Restore Vitest transform cache
|
||||
if: (inputs.vitest-fs-cache == 'true' || inputs.restore-test-caches == 'true') && inputs.save-vitest-fs-cache != 'true' && runner.os != 'Windows'
|
||||
id: vitest-cache
|
||||
if: inputs.cache-mode != 'off' && (inputs.vitest-fs-cache == 'true' || inputs.restore-test-caches == 'true') && runner.os != 'Windows'
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: /var/tmp/openclaw-vitest-fs-cache
|
||||
@@ -240,10 +254,10 @@ runs:
|
||||
${{ github.repository }}-vitest-fs-v3-protected-${{ runner.os }}-${{ runner.arch }}-node-${{ inputs.node-version }}-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '**/package.json', '**/tsconfig*.json', 'vitest.config.*', 'test/vitest/**', 'src/state/*.sql', '!**/node_modules/**') }}-
|
||||
|
||||
- name: Configure Vitest transform cache
|
||||
if: (inputs.vitest-fs-cache == 'true' || inputs.restore-test-caches == 'true') && runner.os != 'Windows'
|
||||
if: inputs.cache-mode != 'off' && (inputs.vitest-fs-cache == 'true' || inputs.restore-test-caches == 'true') && runner.os != 'Windows'
|
||||
env:
|
||||
CACHE_GENERATION: ${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '**/package.json', '**/tsconfig*.json', 'vitest.config.*', 'test/vitest/**', 'src/state/*.sql', '!**/node_modules/**') }}
|
||||
CACHE_WRITER: ${{ inputs.save-vitest-fs-cache == 'true' && '1' || '0' }}
|
||||
CACHE_WRITER: "0"
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
@@ -269,7 +283,7 @@ runs:
|
||||
|
||||
- name: Select Node compile cache epoch
|
||||
id: node-compile-cache-epoch
|
||||
if: (inputs.node-compile-cache == 'true' || inputs.restore-test-caches == 'true') && runner.os != 'Windows'
|
||||
if: inputs.cache-mode != 'off' && (inputs.node-compile-cache == 'true' || inputs.restore-test-caches == 'true') && runner.os != 'Windows'
|
||||
shell: bash
|
||||
env:
|
||||
CACHE_SCOPE: ${{ inputs.node-compile-cache-scope }}
|
||||
@@ -281,17 +295,9 @@ runs:
|
||||
echo "value=${GITHUB_RUN_ID:?}-${GITHUB_RUN_ATTEMPT:?}" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Restore and save Node compile cache
|
||||
if: inputs.node-compile-cache == 'true' && inputs.save-node-compile-cache == 'true' && runner.os != 'Windows'
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: /var/tmp/openclaw-node-compile-cache
|
||||
key: ${{ github.repository }}-node-compile-v3-${{ inputs.node-compile-cache-scope }}-protected-${{ runner.os }}-${{ runner.arch }}-node-${{ inputs.node-version }}-${{ steps.node-compile-cache-epoch.outputs.value }}
|
||||
restore-keys: |
|
||||
${{ github.repository }}-node-compile-v3-${{ inputs.node-compile-cache-scope }}-protected-${{ runner.os }}-${{ runner.arch }}-node-${{ inputs.node-version }}-
|
||||
|
||||
- name: Restore Node compile cache
|
||||
if: (inputs.node-compile-cache == 'true' || inputs.restore-test-caches == 'true') && inputs.save-node-compile-cache != 'true' && runner.os != 'Windows'
|
||||
id: node-compile-cache
|
||||
if: inputs.cache-mode != 'off' && (inputs.node-compile-cache == 'true' || inputs.restore-test-caches == 'true') && runner.os != 'Windows'
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: /var/tmp/openclaw-node-compile-cache
|
||||
@@ -300,9 +306,7 @@ runs:
|
||||
${{ github.repository }}-node-compile-v3-${{ inputs.node-compile-cache-scope }}-protected-${{ runner.os }}-${{ runner.arch }}-node-${{ inputs.node-version }}-
|
||||
|
||||
- name: Configure Node compile cache
|
||||
if: (inputs.node-compile-cache == 'true' || inputs.restore-test-caches == 'true') && runner.os != 'Windows'
|
||||
env:
|
||||
CACHE_WRITER: ${{ inputs.save-node-compile-cache == 'true' && '1' || '0' }}
|
||||
if: inputs.cache-mode != 'off' && (inputs.node-compile-cache == 'true' || inputs.restore-test-caches == 'true') && runner.os != 'Windows'
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
@@ -310,7 +314,7 @@ runs:
|
||||
mkdir -p "$cache_root"
|
||||
echo "NODE_COMPILE_CACHE=$cache_root" >> "$GITHUB_ENV"
|
||||
echo "NODE_COMPILE_CACHE_PORTABLE=1" >> "$GITHUB_ENV"
|
||||
echo "OPENCLAW_NODE_COMPILE_CACHE_WRITER=$CACHE_WRITER" >> "$GITHUB_ENV"
|
||||
echo "OPENCLAW_NODE_COMPILE_CACHE_WRITER=0" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Setup Bun
|
||||
if: inputs.install-bun == 'true'
|
||||
@@ -343,7 +347,7 @@ runs:
|
||||
shell: bash
|
||||
env:
|
||||
CI: "true"
|
||||
DEPENDENCY_CACHE: ${{ inputs.dependency-cache }}
|
||||
DEPENDENCY_CACHE: ${{ inputs.cache-mode != 'off' && inputs.dependency-cache == 'true' && 'true' || 'false' }}
|
||||
DEPENDENCY_CACHE_HIT: ${{ steps.dependency-cache.outputs.cache-hit }}
|
||||
FROZEN_LOCKFILE: ${{ inputs.frozen-lockfile }}
|
||||
run: |
|
||||
@@ -450,22 +454,10 @@ runs:
|
||||
echo "pnpm_config_verify_deps_before_run=false" >> "$GITHUB_ENV"
|
||||
fi
|
||||
|
||||
- name: Save exact dependency cache
|
||||
if: inputs.install-deps == 'true' && inputs.dependency-cache == 'true' && inputs.save-dependency-cache == 'true' && steps.dependency-cache.outputs.cache-hit != 'true' && steps.dependency-cache.outcome != 'failure'
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: |
|
||||
node_modules
|
||||
ui/node_modules
|
||||
packages/*/node_modules
|
||||
examples/*/node_modules
|
||||
.cache/openclaw-pnpm-store
|
||||
key: ${{ steps.dependency-cache-key.outputs.key }}
|
||||
|
||||
- name: Restore and save build-all cache
|
||||
if: inputs.build-all-cache-scope != ''
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
- name: Restore build-all cache
|
||||
id: build-all-cache
|
||||
if: inputs.cache-mode != 'off' && inputs.build-all-cache-scope != ''
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: .artifacts/build-all-cache
|
||||
# Exact keys deduplicate concurrent jobs. Coarse restore supplies the
|
||||
@@ -473,23 +465,3 @@ runs:
|
||||
key: ${{ github.repository }}-build-all-v1-${{ inputs.build-all-cache-scope }}-${{ runner.os }}-${{ runner.arch }}-node-${{ inputs.node-version }}-${{ hashFiles('package.json', 'pnpm-lock.yaml', 'tsconfig*.json', 'tsdown*.config.ts', 'scripts/build-all.mts', 'scripts/tsdown-build.mts', 'scripts/lib/tsdown-*.mts', 'scripts/lib/plugin-sdk-*', 'scripts/lib/bundled-plugin-*', 'scripts/lib/optional-bundled-clusters.mjs', 'src/**', 'packages/**', 'extensions/**') }}
|
||||
restore-keys: |
|
||||
${{ github.repository }}-build-all-v1-${{ inputs.build-all-cache-scope }}-${{ runner.os }}-${{ runner.arch }}-node-${{ inputs.node-version }}-
|
||||
|
||||
# Prune before saving: prefix-key restores accrete every prior lockfile
|
||||
# generation into the archive (measured 2.05 GiB, ~36s restore per job).
|
||||
# Pruning collapses it to the current lockfile's closure; a dropped entry
|
||||
# costs one registry refetch in a later job at worst.
|
||||
- name: Prune pnpm store before save
|
||||
if: ${{ inputs.install-deps == 'true' && inputs.use-actions-cache == 'true' && (inputs.dependency-cache != 'true' || steps.dependency-cache.outputs.cache-hit != 'true') && inputs.save-actions-cache == 'true' && runner.os != 'Windows' && steps.setup-pnpm.outputs.store-cache-hit != 'true' }}
|
||||
shell: bash
|
||||
working-directory: ${{ steps.package-manager.outputs.project-dir }}
|
||||
run: |
|
||||
du -sh "${{ steps.setup-pnpm.outputs.store-path }}" || true
|
||||
pnpm store prune
|
||||
du -sh "${{ steps.setup-pnpm.outputs.store-path }}" || true
|
||||
|
||||
- name: Save pnpm store cache
|
||||
if: ${{ inputs.install-deps == 'true' && inputs.use-actions-cache == 'true' && (inputs.dependency-cache != 'true' || steps.dependency-cache.outputs.cache-hit != 'true') && inputs.save-actions-cache == 'true' && runner.os != 'Windows' && steps.setup-pnpm.outputs.store-cache-hit != 'true' }}
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: ${{ steps.setup-pnpm.outputs.store-path }}
|
||||
key: ${{ steps.setup-pnpm.outputs.store-cache-primary-key }}
|
||||
|
||||
@@ -13,10 +13,10 @@ inputs:
|
||||
description: Expected Node.js version already installed by actions/setup-node.
|
||||
required: false
|
||||
default: ""
|
||||
use-actions-cache:
|
||||
description: Whether actions/cache should restore the pnpm store.
|
||||
cache-mode:
|
||||
description: Cache authority for this setup action (off, restore, or read-write).
|
||||
required: false
|
||||
default: "true"
|
||||
default: "off"
|
||||
outputs:
|
||||
pnpm-version:
|
||||
description: Resolved pnpm version activated by the setup action.
|
||||
@@ -40,10 +40,18 @@ runs:
|
||||
id: setup-pnpm
|
||||
shell: bash
|
||||
env:
|
||||
CACHE_MODE: ${{ inputs.cache-mode }}
|
||||
PACKAGE_MANAGER_FILE: ${{ inputs.package-manager-file }}
|
||||
REQUESTED_NODE_VERSION: ${{ inputs.node-version }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
case "$CACHE_MODE" in
|
||||
off|restore|read-write) ;;
|
||||
*)
|
||||
echo "::error::Invalid cache-mode input: '$CACHE_MODE' (expected off, restore, or read-write)"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
project_dir="$(dirname "$PACKAGE_MANAGER_FILE")"
|
||||
if [[ ! -f "$PACKAGE_MANAGER_FILE" ]]; then
|
||||
echo "::error::package manager file not found: $PACKAGE_MANAGER_FILE"
|
||||
@@ -88,7 +96,7 @@ runs:
|
||||
|
||||
- name: Resolve pnpm store path
|
||||
id: pnpm-store
|
||||
if: ${{ inputs.use-actions-cache == 'true' && runner.os != 'Windows' }}
|
||||
if: ${{ inputs.cache-mode != 'off' && runner.os != 'Windows' }}
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
@@ -98,7 +106,7 @@ runs:
|
||||
|
||||
- name: Restore pnpm store cache
|
||||
id: pnpm-store-cache
|
||||
if: ${{ inputs.use-actions-cache == 'true' && runner.os != 'Windows' }}
|
||||
if: ${{ inputs.cache-mode != 'off' && runner.os != 'Windows' }}
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: ${{ steps.pnpm-store.outputs.path }}
|
||||
|
||||
@@ -10,9 +10,9 @@ runs:
|
||||
- name: Setup trusted release harness package manager
|
||||
uses: ./.release-harness/.github/actions/setup-pnpm-store-cache
|
||||
with:
|
||||
cache-mode: off
|
||||
node-version: ${{ inputs.node-version }}
|
||||
package-manager-file: .release-harness/package.json
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Install trusted release harness dependencies
|
||||
shell: bash
|
||||
|
||||
@@ -165,9 +165,9 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: off
|
||||
install-bun: "true"
|
||||
install-deps: "false"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Setup Android toolchain
|
||||
uses: ./.github/actions/setup-android-toolchain
|
||||
|
||||
@@ -48,8 +48,10 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node environment
|
||||
id: setup-node-env
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: ${{ github.event_name == 'workflow_dispatch' && 'read-write' || 'restore' }}
|
||||
install-bun: "false"
|
||||
install-trufflehog: "true"
|
||||
|
||||
@@ -143,7 +145,7 @@ jobs:
|
||||
test -f dist/control-ui/index.html
|
||||
|
||||
- name: Save dist build cache
|
||||
if: steps.dist-cache.outputs.cache-hit != 'true'
|
||||
if: steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.dist-cache.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: |
|
||||
|
||||
@@ -59,6 +59,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
install-trufflehog: "true"
|
||||
- name: Ensure Testbox base commit
|
||||
|
||||
@@ -52,11 +52,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
install-trufflehog: "true"
|
||||
# Testbox hydration uses the ordinary pnpm store cache. Canonical CI
|
||||
# owns the exact dependency archive and never delegates here.
|
||||
use-actions-cache: "true"
|
||||
- name: Ensure Testbox base commit
|
||||
if: github.event_name == 'pull_request'
|
||||
uses: ./.github/actions/ensure-base-commit
|
||||
|
||||
+39
-64
@@ -435,6 +435,7 @@ jobs:
|
||||
if: github.event_name == 'workflow_dispatch'
|
||||
uses: ./.github/actions/setup-pnpm-store-cache
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
|
||||
- name: Install manifest dependencies
|
||||
@@ -772,15 +773,7 @@ jobs:
|
||||
...changedExtensionFallbackShards,
|
||||
]
|
||||
: [];
|
||||
const assignVitestFsCacheWriter =
|
||||
typeof nodeTestPlan.assignVitestFsCacheWriter === "function"
|
||||
? nodeTestPlan.assignVitestFsCacheWriter
|
||||
: (shards) =>
|
||||
shards.map((shard, index) => ({
|
||||
...shard,
|
||||
saveVitestFsCache: index === 0,
|
||||
}));
|
||||
const nodeTestShards = assignVitestFsCacheWriter(rawNodeTestShards).map((shard) => ({
|
||||
const nodeTestShards = rawNodeTestShards.map((shard) => ({
|
||||
check_name: shard.checkName,
|
||||
runtime: "node",
|
||||
task: "test-shard",
|
||||
@@ -794,7 +787,6 @@ jobs:
|
||||
timeout_minutes: shard.timeoutMinutes,
|
||||
plan_concurrency: shard.planConcurrency,
|
||||
predicted_seconds: shard.predictedSeconds,
|
||||
save_vitest_fs_cache: shard.saveVitestFsCache,
|
||||
targets: shard.targets,
|
||||
requires_go:
|
||||
shard.shardName.startsWith("core-tooling") ||
|
||||
@@ -947,19 +939,15 @@ jobs:
|
||||
node scripts/check-protocol-event-coverage.mts
|
||||
fi
|
||||
|
||||
# Publish one immutable semantic dependency archive before same-repo
|
||||
# Blacksmith jobs fan out. The GitHub backend uses the pnpm-store cache.
|
||||
# Pull-request archives remain merge-ref scoped;
|
||||
# main archives seed later pull requests through the default-branch scope.
|
||||
- name: Publish exact dependency cache
|
||||
# Validate and consume the immutable dependency archive before same-repo
|
||||
# Blacksmith jobs fan out. Cache publication belongs to the trusted warmer.
|
||||
- name: Restore exact dependency cache
|
||||
if: vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.repository == 'openclaw/openclaw' && steps.manifest.outputs.run_node == 'true' && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository))
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
dependency-cache: "true"
|
||||
install-bun: "false"
|
||||
save-actions-cache: "true"
|
||||
save-dependency-cache: "true"
|
||||
use-actions-cache: "true"
|
||||
|
||||
# Run dependency-free security checks on a hosted runner in parallel with
|
||||
# scope detection. No downstream job waits for Python/pre-commit setup.
|
||||
@@ -1165,9 +1153,9 @@ jobs:
|
||||
- name: Audit production dependencies
|
||||
run: node scripts/pre-commit/pnpm-audit-prod.mjs --audit-level=high
|
||||
|
||||
# Warm the lockfile- and pnpm-pinned Actions cache for fork PRs, manual runs,
|
||||
# the GitHub backend, and docs-only same-repo PRs. Node-relevant Blacksmith
|
||||
# runs already publish it through the exact dependency-cache writer in preflight.
|
||||
# Prime the lockfile- and pnpm-pinned store for fork PRs, manual runs, the
|
||||
# GitHub backend, and docs-only same-repo PRs. This job restores only; the
|
||||
# trusted cache warmer owns publication.
|
||||
pnpm-store-warmup:
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -1229,8 +1217,8 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
save-actions-cache: "true"
|
||||
|
||||
# Build dist once for Node-relevant changes and share it with downstream jobs.
|
||||
# Keep this overlapping with the fast correctness lanes so green PRs get heavy
|
||||
@@ -1257,17 +1245,16 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
node-compile-cache: "true"
|
||||
node-compile-cache-scope: "build"
|
||||
# Same-repo Blacksmith runs restore the dependency cache published by
|
||||
# preflight; hosted paths use the pnpm store cache instead.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
save-node-compile-cache: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && 'true' || 'false' }}
|
||||
|
||||
- name: Restore build-all step cache
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: .artifacts/build-all-cache
|
||||
key: ${{ runner.os }}-build-all-v4-${{ hashFiles('package.json', 'pnpm-lock.yaml', 'scripts/build-all.mts', 'scripts/runtime-postbuild.mjs', 'scripts/runtime-postbuild.mts', 'scripts/lib/tsx-cli-shim.mjs', 'scripts/write-plugin-sdk-entry-dts.ts', 'scripts/lib/plugin-sdk-entries.mts', 'scripts/lib/plugin-sdk-entrypoints.json', 'scripts/lib/plugin-sdk-private-local-only-subpaths.json', 'scripts/lib/plugin-sdk-deprecated-public-subpaths.json', 'scripts/lib/plugin-sdk-deprecated-barrel-subpaths.json', 'tsconfig.json', 'tsconfig.plugin-sdk.dts.json', 'src/**', 'packages/**', '!src/**/dist/**', '!src/**/node_modules/**', '!packages/**/dist/**', '!packages/**/node_modules/**') }}
|
||||
@@ -1510,19 +1497,6 @@ jobs:
|
||||
if-no-files-found: ignore
|
||||
retention-days: 7
|
||||
|
||||
- name: Save dist build cache
|
||||
if: steps.dist_build_cache.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: |
|
||||
dist/
|
||||
dist-runtime/
|
||||
packages/*/dist/
|
||||
extensions/*/src/host/**/.bundle.hash
|
||||
extensions/*/src/host/**/*.bundle.js
|
||||
key: ${{ steps.dist_build_cache.outputs.cache-primary-key }}
|
||||
|
||||
- name: Upload gateway watch regression artifacts
|
||||
if: always() && needs.preflight.outputs.run_check_additional == 'true'
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
||||
@@ -1544,9 +1518,9 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
restore-test-caches: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid') && 'true' || 'false' }}
|
||||
|
||||
- name: Download exact-run built runtime
|
||||
@@ -1581,11 +1555,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
# Same-repo Blacksmith runs restore the dependency cache published by
|
||||
# preflight; hosted paths use the pnpm store cache instead.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
|
||||
- name: Verify native app i18n source
|
||||
run: |
|
||||
@@ -1624,18 +1598,18 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "24.x"
|
||||
install-bun: "false"
|
||||
# Same-repo Blacksmith runs restore the dependency cache published by
|
||||
# preflight; hosted paths use the pnpm store cache instead.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
restore-test-caches: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid') && 'true' || 'false' }}
|
||||
|
||||
- &cache_playwright_chromium
|
||||
name: Cache Playwright Chromium
|
||||
if: needs.preflight.outputs.compatibility_target != 'true'
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: ~/.cache/ms-playwright
|
||||
key: ${{ runner.os }}-playwright-chromium-1.62.1
|
||||
@@ -1699,12 +1673,12 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "24.x"
|
||||
install-bun: "false"
|
||||
# The github/hybrid planner profile uses the Actions pnpm-store cache
|
||||
# on either runner backend; all-Blacksmith mode restores preflight's tree.
|
||||
dependency-cache: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.run_attempt > 1)) && 'false' || (github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false') }}
|
||||
use-actions-cache: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.run_attempt > 1)) && 'true' || (github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true') }}
|
||||
restore-test-caches: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid') && 'true' || 'false' }}
|
||||
|
||||
- *cache_playwright_chromium
|
||||
@@ -1754,12 +1728,12 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "24.x"
|
||||
install-bun: "false"
|
||||
# The github/hybrid planner profile uses the Actions pnpm-store cache
|
||||
# on either runner backend; all-Blacksmith mode restores preflight's tree.
|
||||
dependency-cache: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.run_attempt > 1)) && 'false' || (github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false') }}
|
||||
use-actions-cache: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.run_attempt > 1)) && 'true' || (github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true') }}
|
||||
|
||||
- *cache_playwright_chromium
|
||||
- *install_playwright_chromium
|
||||
@@ -1815,12 +1789,12 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "24.x"
|
||||
install-bun: "false"
|
||||
# Same-repo Blacksmith runs restore the dependency cache published by
|
||||
# preflight; hosted paths use the pnpm store cache instead.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
|
||||
- name: Verify Control UI i18n source
|
||||
run: |
|
||||
@@ -1904,11 +1878,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: ${{ matrix.task == 'bun-launcher' && 'true' || 'false' }}
|
||||
# Same-repo Blacksmith runs restore the dependency cache published by
|
||||
# preflight; hosted paths use the pnpm store cache instead.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
restore-test-caches: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid') && (matrix.task == 'bundled-protocol' || matrix.task == 'contracts-plugins-ci-routing' || matrix.task == 'ci-routing' || matrix.task == 'bun-launcher') && 'true' || 'false' }}
|
||||
|
||||
- name: Run ${{ matrix.task }} (${{ matrix.runtime }})
|
||||
@@ -1999,11 +1973,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
# The github/hybrid planner profile uses the Actions pnpm-store cache
|
||||
# on either runner backend; all-Blacksmith mode restores preflight's tree.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
# Reader of build-artifacts' protected daily archive: warms tsdown
|
||||
# tooling plus the repeated openclaw.mjs boots in the scenario loop.
|
||||
node-compile-cache: "true"
|
||||
@@ -2183,11 +2157,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
# Same-repo Blacksmith runs restore the dependency cache published by
|
||||
# preflight; hosted paths use the pnpm store cache instead.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
restore-test-caches: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid') && 'true' || 'false' }}
|
||||
|
||||
- name: Run plugin contract shard
|
||||
@@ -2226,11 +2200,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
# Same-repo Blacksmith runs restore the dependency cache published by
|
||||
# preflight; hosted paths use the pnpm store cache instead.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
restore-test-caches: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid') && 'true' || 'false' }}
|
||||
|
||||
- name: Run channel contract shard
|
||||
@@ -2266,6 +2240,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "22.22.3"
|
||||
install-bun: "false"
|
||||
build-all-cache-scope: full
|
||||
@@ -2302,18 +2277,15 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "${{ matrix.node_version || '24.x' }}"
|
||||
install-bun: "false"
|
||||
# Only the preflight writer saves an exact dependency archive.
|
||||
# All-Blacksmith shards restore it; github/hybrid use the pnpm store.
|
||||
# Blacksmith shards restore the exact dependency archive;
|
||||
# github/hybrid use the pnpm store.
|
||||
dependency-cache: ${{ (matrix.node_version == null || matrix.node_version == '24.x') && vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ (matrix.node_version == null || matrix.node_version == '24.x') && vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
vitest-fs-cache: "true"
|
||||
node-compile-cache: "true"
|
||||
node-compile-cache-scope: "test"
|
||||
# The github/hybrid planner profile elects one in-run writer so the
|
||||
# transform cache can recover without waiting for the cache warmer.
|
||||
save-vitest-fs-cache: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid') && matrix.save_vitest_fs_cache && 'true' || 'false' }}
|
||||
|
||||
- name: Setup Go for docs i18n
|
||||
if: matrix.requires_go == true
|
||||
@@ -2441,11 +2413,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
# The github/hybrid planner profile uses the Actions pnpm-store cache
|
||||
# on either runner backend; all-Blacksmith mode restores preflight's tree.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
|
||||
- name: Compute extension boundary input fingerprint
|
||||
id: extension-boundary-inputs
|
||||
@@ -2458,7 +2430,7 @@ jobs:
|
||||
|
||||
- name: Cache extension package boundary artifacts for hosted lint
|
||||
if: matrix.task == 'lint' && (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository))
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: |
|
||||
dist/plugin-sdk
|
||||
@@ -2758,9 +2730,9 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
|
||||
- name: Run hosted core lint stripe
|
||||
env:
|
||||
@@ -2795,9 +2767,9 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
|
||||
- name: Run hosted core test-types stripe
|
||||
shell: bash
|
||||
@@ -2884,11 +2856,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
# The github/hybrid planner profile uses the Actions pnpm-store cache
|
||||
# on either runner backend; all-Blacksmith mode restores preflight's tree.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
|
||||
- name: Compute extension boundary input fingerprint
|
||||
id: extension-boundary-inputs
|
||||
@@ -2956,7 +2928,7 @@ jobs:
|
||||
- name: Cache extension package boundary artifacts
|
||||
id: extension-package-boundary-cache
|
||||
if: matrix.group == 'extension-package-boundary'
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: |
|
||||
dist/plugin-sdk
|
||||
@@ -3160,11 +3132,11 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
# Same-repo Blacksmith runs restore the dependency cache published by
|
||||
# preflight; hosted paths use the pnpm store cache instead.
|
||||
dependency-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false' }}
|
||||
use-actions-cache: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true' }}
|
||||
|
||||
- name: Check formatting
|
||||
if: needs.preflight.outputs.run_format_check == 'true'
|
||||
@@ -3373,6 +3345,7 @@ jobs:
|
||||
- name: Setup pnpm
|
||||
uses: ./.github/actions/setup-pnpm-store-cache
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: 22.x
|
||||
|
||||
- name: Runtime versions
|
||||
@@ -3439,8 +3412,8 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
save-actions-cache: "true"
|
||||
|
||||
- name: TS tests (macOS)
|
||||
env:
|
||||
@@ -3715,6 +3688,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Install iOS Swift tooling
|
||||
@@ -3937,6 +3911,7 @@ jobs:
|
||||
if: needs.preflight.outputs.use_compatible_android_ci != 'true'
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
# Same-repo runs carry the Gradle user home (dependency, wrapper, and
|
||||
@@ -4086,10 +4061,10 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "24.x"
|
||||
install-bun: "false"
|
||||
dependency-cache: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.run_attempt > 1)) && 'false' || (github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'true' || 'false') }}
|
||||
use-actions-cache: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.run_attempt > 1)) && 'true' || (github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') && 'false' || 'true') }}
|
||||
|
||||
- name: Run changed Docker seed owner lanes
|
||||
env:
|
||||
|
||||
@@ -37,6 +37,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Initialize CodeQL
|
||||
|
||||
@@ -166,6 +166,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Ensure translation provider secrets exist
|
||||
@@ -303,6 +304,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Finalize control UI generated artifacts
|
||||
|
||||
@@ -686,8 +686,8 @@ jobs:
|
||||
env:
|
||||
PNPM_HOME: ${{ runner.temp }}/pnpm-home
|
||||
with:
|
||||
cache-mode: off
|
||||
install-bun: "false"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Prepare Crabbox shell
|
||||
shell: bash
|
||||
|
||||
@@ -40,6 +40,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "24.x"
|
||||
install-bun: "false"
|
||||
|
||||
|
||||
@@ -134,6 +134,7 @@ jobs:
|
||||
if: steps.gate.outputs.run_agent == 'true'
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Ensure docs agent key exists
|
||||
|
||||
@@ -25,6 +25,7 @@ jobs:
|
||||
- name: Setup Node.js and pnpm
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
install-deps: "false"
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Checkout ClawHub docs source
|
||||
|
||||
@@ -662,6 +662,7 @@ jobs:
|
||||
- name: Setup Node environment for installer smoke
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
install-deps: "true"
|
||||
|
||||
@@ -796,6 +797,7 @@ jobs:
|
||||
- name: Setup Node environment for Bun smoke
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "true"
|
||||
install-deps: "true"
|
||||
|
||||
@@ -829,5 +831,6 @@ jobs:
|
||||
- name: Setup Node environment for package smoke
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
install-deps: "true"
|
||||
|
||||
@@ -107,6 +107,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Install iOS Swift tooling
|
||||
|
||||
@@ -109,6 +109,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Build Linux companion bundles
|
||||
@@ -183,6 +184,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Build macOS test bundles
|
||||
@@ -250,6 +252,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Build Windows test bundle
|
||||
|
||||
@@ -66,6 +66,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Check Rust formatting
|
||||
@@ -124,6 +125,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Cache Cargo
|
||||
|
||||
@@ -98,6 +98,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Install Periphery
|
||||
|
||||
@@ -51,6 +51,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
build-all-cache-scope: full
|
||||
|
||||
@@ -140,6 +140,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
|
||||
@@ -129,6 +129,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
|
||||
@@ -131,6 +131,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
|
||||
@@ -140,6 +140,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -147,7 +148,7 @@ jobs:
|
||||
run: pnpm build
|
||||
|
||||
- name: Cache Mantis candidate pnpm store
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: |
|
||||
~/.local/share/pnpm/store
|
||||
|
||||
@@ -290,8 +290,10 @@ jobs:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Setup Node environment
|
||||
id: setup-node-env
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: read-write
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -588,7 +590,7 @@ jobs:
|
||||
test -z "$(find "$build_cache_root" -type f -links +1 -print -quit)"
|
||||
|
||||
- name: Save exact baseline build
|
||||
if: steps.baseline_build_cache.outputs.cache-hit != 'true'
|
||||
if: steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.baseline_build_cache.outputs.cache-hit != 'true'
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
@@ -1279,6 +1281,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
|
||||
@@ -229,6 +229,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -236,7 +237,7 @@ jobs:
|
||||
run: pnpm build
|
||||
|
||||
- name: Cache Mantis candidate pnpm store
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: |
|
||||
~/.local/share/pnpm/store
|
||||
|
||||
@@ -126,6 +126,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
install-deps: "false"
|
||||
|
||||
@@ -406,6 +406,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
|
||||
@@ -149,6 +149,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Ensure translation provider secrets exist
|
||||
@@ -283,6 +284,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
# Source PRs own the stable-ID inventory. Locale workers only contribute
|
||||
|
||||
@@ -21,6 +21,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "22.22.3"
|
||||
install-bun: "false"
|
||||
|
||||
|
||||
@@ -228,6 +228,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
|
||||
@@ -467,7 +467,7 @@ jobs:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
package-manager-file: ${{ inputs.candidate_artifact_name == '' && 'source/package.json' || 'workflow/package.json' }}
|
||||
lockfile-path: ${{ inputs.candidate_artifact_name == '' && 'source/pnpm-lock.yaml' || 'workflow/pnpm-lock.yaml' }}
|
||||
use-actions-cache: ${{ inputs.candidate_artifact_name == '' && 'true' || 'false' }}
|
||||
cache-mode: ${{ inputs.candidate_artifact_name == '' && 'restore' || 'off' }}
|
||||
|
||||
- name: Resolve provider-owned companion requirements
|
||||
id: provider_requirements
|
||||
@@ -907,7 +907,7 @@ jobs:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
package-manager-file: workflow/package.json
|
||||
lockfile-path: workflow/pnpm-lock.yaml
|
||||
use-actions-cache: "false"
|
||||
cache-mode: off
|
||||
|
||||
- name: Download candidate artifact
|
||||
id: download_candidate
|
||||
|
||||
@@ -944,6 +944,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -993,6 +994,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
build-all-cache-scope: full
|
||||
@@ -1040,6 +1042,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
build-all-cache-scope: full
|
||||
@@ -1280,6 +1283,7 @@ jobs:
|
||||
if: contains(matrix.profiles, inputs.release_test_profile)
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -1661,6 +1665,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -1953,10 +1958,10 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: off
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
install-deps: "false"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Validate Open WebUI credentials
|
||||
shell: bash
|
||||
@@ -2213,6 +2218,7 @@ jobs:
|
||||
if: (steps.plan.outputs.needs_package == '1' && inputs.package_artifact_name == '' && inputs.package_artifact_run_id == '') || (inputs.enable_prepublish_plugin_registry && steps.plan.outputs.needs_prepublish_plugin_registry == '1' && inputs.prepublish_plugin_registry_artifact_id == '')
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -3051,6 +3057,7 @@ jobs:
|
||||
if: contains(matrix.profiles, inputs.release_test_profile)
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -3218,6 +3225,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -3608,6 +3616,7 @@ jobs:
|
||||
if: contains(matrix.profiles, inputs.release_test_profile) && (inputs.live_suite_filter == '' || inputs.live_suite_filter == matrix.suite_id || (inputs.live_suite_filter == 'native-live-src-gateway-profiles-anthropic' && startsWith(matrix.suite_id, 'native-live-src-gateway-profiles-anthropic-')) || (inputs.live_suite_filter == 'native-live-src-gateway-profiles-opencode-go' && startsWith(matrix.suite_id, 'native-live-src-gateway-profiles-opencode-go-')))
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -3931,6 +3940,7 @@ jobs:
|
||||
if: steps.codex_compat.outputs.run_lane != 'false' && contains(matrix.profiles, inputs.release_test_profile) && (inputs.live_suite_filter == '' || inputs.live_suite_filter == matrix.suite_id || inputs.live_suite_filter == matrix.suite_group)
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -4163,6 +4173,7 @@ jobs:
|
||||
if: contains(matrix.profiles, inputs.release_test_profile) && (inputs.live_suite_filter == '' || inputs.live_suite_filter == matrix.suite_id || (inputs.live_suite_filter == 'native-live-extensions-media-video' && startsWith(matrix.suite_id, 'native-live-extensions-media-video-')))
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
|
||||
@@ -149,8 +149,10 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Setup Node environment
|
||||
id: setup-node-env
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: read-write
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
build-all-cache-scope: full
|
||||
@@ -281,7 +283,7 @@ jobs:
|
||||
run: pnpm ui:build
|
||||
|
||||
- name: Save preflight build outputs
|
||||
if: steps.dist_build_cache.outputs.cache-hit != 'true'
|
||||
if: steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.dist_build_cache.outputs.cache-hit != 'true'
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
@@ -994,6 +996,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
|
||||
@@ -299,6 +299,7 @@ jobs:
|
||||
if: steps.lane.outputs.run == 'true'
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Prepare systemd user session
|
||||
@@ -669,6 +670,7 @@ jobs:
|
||||
- name: Set up source performance environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Fetch previous source performance baseline
|
||||
|
||||
@@ -812,6 +812,7 @@ jobs:
|
||||
if: inputs.candidate_artifact_json == ''
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
install-deps: "true"
|
||||
@@ -1413,6 +1414,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -1550,6 +1552,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -1677,6 +1680,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -2004,6 +2008,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -2258,6 +2263,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -2376,6 +2382,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -2472,6 +2479,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
|
||||
@@ -759,6 +759,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-deps: "false"
|
||||
install-bun: "false"
|
||||
|
||||
|
||||
@@ -283,10 +283,10 @@ jobs:
|
||||
- name: Setup candidate build toolchain
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: off
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
install-deps: "false"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Checkout candidate runtime
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
@@ -774,10 +774,10 @@ jobs:
|
||||
- name: Setup trusted harness Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: off
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
install-deps: "true"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Build trusted QA harness
|
||||
id: build_harness
|
||||
|
||||
@@ -466,6 +466,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: ${{ inputs.source == 'ref' && 'true' || 'false' }}
|
||||
install-deps: "true"
|
||||
@@ -808,6 +809,7 @@ jobs:
|
||||
- name: Setup package validation dependencies
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
install-deps: "true"
|
||||
|
||||
@@ -199,6 +199,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
@@ -497,6 +498,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
install-deps: "true"
|
||||
|
||||
@@ -136,6 +136,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
@@ -335,6 +336,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
install-deps: "true"
|
||||
@@ -436,10 +438,10 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: off
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
install-deps: "false"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Download published package input
|
||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
|
||||
|
||||
@@ -45,6 +45,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Generate and validate provider scaffold
|
||||
|
||||
@@ -218,6 +218,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
@@ -392,6 +393,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
@@ -1297,6 +1299,7 @@ jobs:
|
||||
if: steps.publication_evidence.outputs.publish_route == 'npm-token-bootstrap' || steps.publication_evidence.outputs.publish_route == 'npm-readback'
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
@@ -1313,6 +1316,7 @@ jobs:
|
||||
if: steps.publication_evidence.outputs.publish_route == 'npm-oidc'
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
@@ -1514,6 +1518,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
|
||||
|
||||
@@ -142,6 +142,7 @@ jobs:
|
||||
- name: Setup manifest pnpm
|
||||
uses: ./.github/actions/setup-pnpm-store-cache
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: "24.x"
|
||||
|
||||
- name: Install manifest dependencies
|
||||
@@ -339,6 +340,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Run plugin prerelease static shard
|
||||
@@ -401,6 +403,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Configure Node test resources
|
||||
@@ -484,6 +487,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Run extension shard
|
||||
@@ -516,6 +520,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Run plugin inspector advisory sweep
|
||||
|
||||
@@ -274,6 +274,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -343,6 +344,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -448,6 +450,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -512,6 +515,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -647,6 +651,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -744,6 +749,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -832,6 +838,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
@@ -907,6 +914,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
|
||||
|
||||
@@ -358,10 +358,10 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: off
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
install-deps: "false"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Checkout selected ref
|
||||
env:
|
||||
@@ -520,10 +520,10 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: off
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "true"
|
||||
install-deps: "false"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Checkout selected ref
|
||||
env:
|
||||
@@ -825,10 +825,10 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: off
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
install-bun: "false"
|
||||
install-deps: "false"
|
||||
use-actions-cache: "false"
|
||||
|
||||
- name: Checkout selected ref
|
||||
env:
|
||||
|
||||
@@ -104,6 +104,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Install iOS scan tooling
|
||||
|
||||
@@ -110,6 +110,7 @@ jobs:
|
||||
if: steps.gate.outputs.run_agent == 'true'
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Ensure test performance agent key exists
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
name: Vitest Cache Warm
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
repository_dispatch:
|
||||
types: [vitest-cache-warm]
|
||||
@@ -16,27 +18,32 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
warm:
|
||||
# Dependency snapshots are serialized before main CI fanout. This workflow
|
||||
# writes only the transform and compile caches from scheduled/trusted runs.
|
||||
# Shared CI cache publication is isolated from pull-request execution.
|
||||
# Trusted release/proof workflows may save only through the same authority contract.
|
||||
if: github.repository == 'openclaw/openclaw'
|
||||
runs-on: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' && 'ubuntu-24.04' || 'blacksmith-8vcpu-ubuntu-2404' }}
|
||||
timeout-minutes: 30
|
||||
timeout-minutes: 60
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
|
||||
- name: Setup Node environment
|
||||
id: setup-node-env
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
build-all-cache-scope: full
|
||||
cache-mode: read-write
|
||||
dependency-cache: "true"
|
||||
install-bun: "false"
|
||||
node-compile-cache: "true"
|
||||
node-compile-cache-scope: "test"
|
||||
save-actions-cache: "true"
|
||||
save-node-compile-cache: "true"
|
||||
save-vitest-fs-cache: "true"
|
||||
use-actions-cache: "true"
|
||||
vitest-fs-cache: "true"
|
||||
|
||||
- name: Warm build cache
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=8192
|
||||
run: pnpm build
|
||||
|
||||
- name: Select broad cache seed
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -64,3 +71,79 @@ jobs:
|
||||
# (run 31874567859), skipping every cache save for the day.
|
||||
NODE_OPTIONS: --max-old-space-size=8192
|
||||
run: node --import tsx scripts/ci-run-node-test-shard.mts
|
||||
|
||||
- name: Save Node toolchain cache
|
||||
if: ${{ steps.setup-node-env.outputs.cache-mode == 'read-write' && runner.os != 'Windows' && runner.environment != 'github-hosted' && steps.setup-node-env.outputs.node-toolchain-populated == 'true' && steps.setup-node-env.outputs.node-toolchain-cache-matched-key != steps.setup-node-env.outputs.node-toolchain-cache-key }}
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: ${{ steps.setup-node-env.outputs.node-toolchain-cache-path }}
|
||||
key: ${{ steps.setup-node-env.outputs.node-toolchain-cache-key }}
|
||||
|
||||
- name: Save exact dependency cache
|
||||
if: ${{ steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.setup-node-env.outputs.dependency-cache-key != '' && steps.setup-node-env.outputs.dependency-cache-hit != 'true' }}
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: |
|
||||
node_modules
|
||||
ui/node_modules
|
||||
packages/*/node_modules
|
||||
examples/*/node_modules
|
||||
.cache/openclaw-pnpm-store
|
||||
key: ${{ steps.setup-node-env.outputs.dependency-cache-key }}
|
||||
|
||||
# Prefix restores accumulate old lockfile generations. Keep the trusted
|
||||
# writer bounded before publishing the coarser fallback store.
|
||||
- name: Prune pnpm store before save
|
||||
if: ${{ steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.setup-node-env.outputs.pnpm-store-cache-key != '' && steps.setup-node-env.outputs.pnpm-store-cache-hit != 'true' }}
|
||||
shell: bash
|
||||
run: |
|
||||
du -sh "${{ steps.setup-node-env.outputs.pnpm-store-cache-path }}" || true
|
||||
pnpm store prune
|
||||
du -sh "${{ steps.setup-node-env.outputs.pnpm-store-cache-path }}" || true
|
||||
|
||||
- name: Save pnpm store cache
|
||||
if: ${{ steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.setup-node-env.outputs.pnpm-store-cache-key != '' && steps.setup-node-env.outputs.pnpm-store-cache-hit != 'true' }}
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: ${{ steps.setup-node-env.outputs.pnpm-store-cache-path }}
|
||||
key: ${{ steps.setup-node-env.outputs.pnpm-store-cache-key }}
|
||||
|
||||
- name: Save Vitest transform cache
|
||||
if: ${{ steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.setup-node-env.outputs.vitest-cache-key != '' }}
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: /var/tmp/openclaw-vitest-fs-cache
|
||||
key: ${{ steps.setup-node-env.outputs.vitest-cache-key }}
|
||||
|
||||
- name: Save Node compile cache
|
||||
if: ${{ steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.setup-node-env.outputs.node-compile-cache-key != '' }}
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: /var/tmp/openclaw-node-compile-cache
|
||||
key: ${{ steps.setup-node-env.outputs.node-compile-cache-key }}
|
||||
|
||||
- name: Save build-all cache
|
||||
if: ${{ steps.setup-node-env.outputs.cache-mode == 'read-write' && steps.setup-node-env.outputs.build-all-cache-key != '' }}
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: .artifacts/build-all-cache
|
||||
key: ${{ steps.setup-node-env.outputs.build-all-cache-key }}
|
||||
|
||||
- name: Save dist build cache
|
||||
if: ${{ steps.setup-node-env.outputs.cache-mode == 'read-write' }}
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
||||
with:
|
||||
path: |
|
||||
dist/
|
||||
dist-runtime/
|
||||
packages/*/dist/
|
||||
extensions/*/src/host/**/.bundle.hash
|
||||
extensions/*/src/host/**/*.bundle.js
|
||||
key: ${{ runner.os }}-dist-build-v3-${{ github.sha }}
|
||||
|
||||
@@ -236,6 +236,7 @@ jobs:
|
||||
if: ${{ inputs.run_windows_ci }}
|
||||
uses: ./.github/actions/setup-pnpm-store-cache
|
||||
with:
|
||||
cache-mode: restore
|
||||
node-version: 22.x
|
||||
|
||||
- name: Runtime versions
|
||||
|
||||
@@ -202,6 +202,7 @@ jobs:
|
||||
- name: Setup Node environment
|
||||
uses: ./.github/actions/setup-node-env
|
||||
with:
|
||||
cache-mode: restore
|
||||
install-bun: "false"
|
||||
|
||||
- name: Check config docs drift statefile
|
||||
|
||||
Reference in New Issue
Block a user