mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 05:51:15 +08:00
fix(ci): restore dist cache before artifact builds (#89169)
This commit is contained in:
32
.github/workflows/ci.yml
vendored
32
.github/workflows/ci.yml
vendored
@@ -605,7 +605,19 @@ jobs:
|
||||
restore-keys: |
|
||||
${{ runner.os }}-build-all-v3-
|
||||
|
||||
- name: Restore dist build cache
|
||||
id: dist_build_cache
|
||||
uses: actions/cache/restore@v5
|
||||
with:
|
||||
path: |
|
||||
dist/
|
||||
dist-runtime/
|
||||
extensions/*/src/host/**/.bundle.hash
|
||||
extensions/*/src/host/**/*.bundle.js
|
||||
key: ${{ runner.os }}-dist-build-${{ needs.preflight.outputs.checkout_revision }}
|
||||
|
||||
- name: Build dist
|
||||
if: steps.dist_build_cache.outputs.cache-hit != 'true'
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=8192
|
||||
run: pnpm build:ci-artifacts
|
||||
@@ -614,14 +626,6 @@ jobs:
|
||||
if: needs.preflight.outputs.run_control_ui_i18n == 'true'
|
||||
run: pnpm ui:i18n:check
|
||||
|
||||
- name: Cache dist build
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
dist/
|
||||
dist-runtime/
|
||||
key: ${{ runner.os }}-dist-build-${{ needs.preflight.outputs.checkout_revision }}
|
||||
|
||||
- name: Pack built runtime artifacts
|
||||
run: tar --posix -cf dist-runtime-build.tar.zst --use-compress-program zstdmt dist dist-runtime
|
||||
|
||||
@@ -751,6 +755,18 @@ jobs:
|
||||
done
|
||||
exit "$failures"
|
||||
|
||||
- name: Save dist build cache
|
||||
if: steps.dist_build_cache.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v5
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: |
|
||||
dist/
|
||||
dist-runtime/
|
||||
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@v7
|
||||
|
||||
@@ -146,6 +146,35 @@ describe("ci workflow guards", () => {
|
||||
expect(buildArtifactSteps.some((step) => step.run === "pnpm ui:build")).toBe(false);
|
||||
});
|
||||
|
||||
it("restores the dist build cache before building and saves only cache misses", () => {
|
||||
const workflow = readCiWorkflow();
|
||||
const buildArtifactSteps = workflow.jobs["build-artifacts"].steps;
|
||||
const stepNames = buildArtifactSteps.map((step) => step.name);
|
||||
const restoreStep = buildArtifactSteps.find((step) => step.name === "Restore dist build cache");
|
||||
const buildDistStep = buildArtifactSteps.find((step) => step.name === "Build dist");
|
||||
const saveStep = buildArtifactSteps.find((step) => step.name === "Save dist build cache");
|
||||
|
||||
expect(stepNames.indexOf("Restore dist build cache")).toBeLessThan(
|
||||
stepNames.indexOf("Build dist"),
|
||||
);
|
||||
expect(stepNames.indexOf("Build dist")).toBeLessThan(
|
||||
stepNames.indexOf("Pack built runtime artifacts"),
|
||||
);
|
||||
expect(stepNames.indexOf("Run built artifact checks")).toBeLessThan(
|
||||
stepNames.indexOf("Save dist build cache"),
|
||||
);
|
||||
expect(restoreStep.uses).toBe("actions/cache/restore@v5");
|
||||
expect(buildDistStep.if).toBe("steps.dist_build_cache.outputs.cache-hit != 'true'");
|
||||
expect(saveStep.uses).toBe("actions/cache/save@v5");
|
||||
expect(saveStep.if).toBe("steps.dist_build_cache.outputs.cache-hit != 'true'");
|
||||
expect(saveStep.with.key).toBe("${{ steps.dist_build_cache.outputs.cache-primary-key }}");
|
||||
expect(restoreStep.with.path).toContain("dist/");
|
||||
expect(restoreStep.with.path).toContain("dist-runtime/");
|
||||
expect(restoreStep.with.path).toContain("extensions/*/src/host/**/.bundle.hash");
|
||||
expect(restoreStep.with.path).toContain("extensions/*/src/host/**/*.bundle.js");
|
||||
expect(buildArtifactSteps.map((step) => step.name)).not.toContain("Cache dist build");
|
||||
});
|
||||
|
||||
it("gives quiet Node test shards enough no-output runway", () => {
|
||||
const workflow = readCiWorkflow();
|
||||
const nodeTestJob = workflow.jobs["checks-node-core-test-nondist-shard"];
|
||||
|
||||
Reference in New Issue
Block a user