Skip to content

Commit a780541

Browse files
committed
fix(ci): preserve AI runtime build artifacts
1 parent a3f00d3 commit a780541

3 files changed

Lines changed: 32 additions & 5 deletions

File tree

.github/workflows/ci-build-artifacts-testbox.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ jobs:
9898
run: |
9999
set -euo pipefail
100100
101-
cache_prefix="${RUNNER_OS}-dist-build-"
101+
cache_prefix="${RUNNER_OS}-dist-build-v2-"
102102
declare -A seen=()
103103
104104
resolve_tag_sha() {
@@ -150,7 +150,8 @@ jobs:
150150
.artifacts/build-all-cache/
151151
dist/
152152
dist-runtime/
153-
key: ${{ runner.os }}-dist-build-${{ github.sha }}
153+
packages/ai/dist/
154+
key: ${{ runner.os }}-dist-build-v2-${{ github.sha }}
154155
restore-keys: ${{ steps.dist-cache-seeds.outputs.restore-keys }}
155156

156157
- name: Build dist on cache miss
@@ -170,6 +171,7 @@ jobs:
170171
171172
test -d dist
172173
test -d dist-runtime
174+
test -f packages/ai/dist/internal/runtime.mjs
173175
if [[ ! -f dist/index.js && ! -f dist/index.mjs ]]; then
174176
echo "Missing dist/index.js or dist/index.mjs" >&2
175177
exit 1
@@ -185,7 +187,8 @@ jobs:
185187
.artifacts/build-all-cache/
186188
dist/
187189
dist-runtime/
188-
key: ${{ runner.os }}-dist-build-${{ github.sha }}
190+
packages/ai/dist/
191+
key: ${{ runner.os }}-dist-build-v2-${{ github.sha }}
189192

190193
- name: Prepare Testbox shell
191194
shell: bash

.github/workflows/ci.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -672,9 +672,10 @@ jobs:
672672
path: |
673673
dist/
674674
dist-runtime/
675+
packages/ai/dist/
675676
extensions/*/src/host/**/.bundle.hash
676677
extensions/*/src/host/**/*.bundle.js
677-
key: ${{ runner.os }}-dist-build-${{ needs.preflight.outputs.checkout_revision }}
678+
key: ${{ runner.os }}-dist-build-v2-${{ needs.preflight.outputs.checkout_revision }}
678679

679680
- name: Build dist
680681
if: steps.dist_build_cache.outputs.cache-hit != 'true'
@@ -687,7 +688,7 @@ jobs:
687688
run: pnpm ui:i18n:check
688689

689690
- name: Pack built runtime artifacts
690-
run: tar --posix -cf dist-runtime-build.tar.zst --use-compress-program zstdmt dist dist-runtime
691+
run: tar --posix -cf dist-runtime-build.tar.zst --use-compress-program zstdmt dist dist-runtime packages/ai/dist
691692

692693
- name: Upload built runtime artifacts
693694
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
@@ -833,6 +834,7 @@ jobs:
833834
path: |
834835
dist/
835836
dist-runtime/
837+
packages/ai/dist/
836838
extensions/*/src/host/**/.bundle.hash
837839
extensions/*/src/host/**/*.bundle.js
838840
key: ${{ steps.dist_build_cache.outputs.cache-primary-key }}

test/scripts/ci-workflow-guards.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -736,11 +736,33 @@ describe("ci workflow guards", () => {
736736
expect(saveStep.with.key).toBe("${{ steps.dist_build_cache.outputs.cache-primary-key }}");
737737
expect(restoreStep.with.path).toContain("dist/");
738738
expect(restoreStep.with.path).toContain("dist-runtime/");
739+
expect(restoreStep.with.path).toContain("packages/ai/dist/");
740+
expect(saveStep.with.path).toContain("packages/ai/dist/");
741+
expect(restoreStep.with.key).toContain("dist-build-v2-");
742+
expect(
743+
buildArtifactSteps.find((step) => step.name === "Pack built runtime artifacts").run,
744+
).toContain("packages/ai/dist");
739745
expect(restoreStep.with.path).toContain("extensions/*/src/host/**/.bundle.hash");
740746
expect(restoreStep.with.path).toContain("extensions/*/src/host/**/*.bundle.js");
741747
expect(buildArtifactSteps.map((step) => step.name)).not.toContain("Cache dist build");
742748
});
743749

750+
it("keeps the AI runtime in Testbox build artifact caches", () => {
751+
const workflow = readBuildArtifactsTestboxWorkflow();
752+
const steps = workflow.jobs["build-artifacts"].steps;
753+
const resolveSeedsStep = steps.find((step) => step.name === "Resolve release dist cache seeds");
754+
const restoreStep = steps.find((step) => step.name === "Restore dist build cache");
755+
const verifyStep = steps.find((step) => step.name === "Verify build artifacts");
756+
const saveStep = steps.find((step) => step.name === "Save dist build cache");
757+
758+
expect(resolveSeedsStep.run).toContain('cache_prefix="${RUNNER_OS}-dist-build-v2-"');
759+
expect(restoreStep.with.path).toContain("packages/ai/dist/");
760+
expect(restoreStep.with.key).toContain("dist-build-v2-");
761+
expect(verifyStep.run).toContain("test -f packages/ai/dist/internal/runtime.mjs");
762+
expect(saveStep.with.path).toContain("packages/ai/dist/");
763+
expect(saveStep.with.key).toContain("dist-build-v2-");
764+
});
765+
744766
it("runs gateway watch after parallel built artifact checks", () => {
745767
const workflow = readCiWorkflow();
746768
const buildArtifactSteps = workflow.jobs["build-artifacts"].steps;

0 commit comments

Comments
 (0)