test(scripts): route dockerfile metadata changes

This commit is contained in:
Vincent Koc
2026-06-21 04:14:35 +02:00
parent 4d17a52924
commit 2f38b5aa2e
3 changed files with 162 additions and 1 deletions
+53
View File
@@ -427,8 +427,24 @@ const OFFICIAL_EXTERNAL_CATALOG_TEST_TARGETS = [
"src/plugins/official-external-plugin-catalog.test.ts",
"test/release-check.test.ts",
];
const DOCKERFILE_CACHE_AND_DIGEST_TEST_TARGETS = [
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
];
const ROOT_DOCKERFILE_TEST_TARGETS = [
...DOCKERFILE_CACHE_AND_DIGEST_TEST_TARGETS,
"src/dockerfile.test.ts",
"test/scripts/test-install-sh-docker.test.ts",
];
const INSTALL_DOCKERFILE_TEST_TARGETS = [
...DOCKERFILE_CACHE_AND_DIGEST_TEST_TARGETS,
"test/scripts/test-install-sh-docker.test.ts",
];
const LIVE_MEDIA_RUNNER_IMAGE_TEST_TARGETS = ["test/scripts/package-acceptance-workflow.test.ts"];
const TOOLING_SOURCE_TEST_TARGETS = new Map([
["Dockerfile", ROOT_DOCKERFILE_TEST_TARGETS],
[".crabbox.yaml", ["test/scripts/package-acceptance-workflow.test.ts"]],
[".github/images/live-media-runner/Dockerfile", LIVE_MEDIA_RUNNER_IMAGE_TEST_TARGETS],
[".github/workflows/ci.yml", ["test/scripts/ci-workflow-guards.test.ts"]],
[
".github/workflows/security-sensitive-guard.yml",
@@ -446,6 +462,7 @@ const TOOLING_SOURCE_TEST_TARGETS = new Map([
".github/workflows/crabbox-hydrate.yml",
["test/scripts/ci-workflow-guards.test.ts", "test/scripts/package-acceptance-workflow.test.ts"],
],
[".github/workflows/live-media-runner-image.yml", LIVE_MEDIA_RUNNER_IMAGE_TEST_TARGETS],
[
".github/workflows/openclaw-release-checks.yml",
["test/scripts/package-acceptance-workflow.test.ts"],
@@ -830,13 +847,49 @@ const TOOLING_SOURCE_TEST_TARGETS = new Map([
["scripts/lib/official-external-plugin-catalog.json", OFFICIAL_EXTERNAL_CATALOG_TEST_TARGETS],
["scripts/lib/official-external-provider-catalog.json", OFFICIAL_EXTERNAL_CATALOG_TEST_TARGETS],
["scripts/lib/direct-run.mjs", ["test/scripts/changed-lanes.test.ts"]],
[
"scripts/docker/cleanup-smoke/Dockerfile",
[...DOCKERFILE_CACHE_AND_DIGEST_TEST_TARGETS, "test/scripts/docker-build-helper.test.ts"],
],
["scripts/docker/cleanup-smoke/run.sh", ["test/scripts/docker-build-helper.test.ts"]],
["scripts/docker/install-sh-e2e/Dockerfile", INSTALL_DOCKERFILE_TEST_TARGETS],
[
"scripts/docker/install-sh-e2e/run.sh",
["test/scripts/docker-build-helper.test.ts", "test/scripts/test-install-sh-docker.test.ts"],
],
["scripts/docker/install-sh-nonroot/Dockerfile", INSTALL_DOCKERFILE_TEST_TARGETS],
["scripts/docker/install-sh-nonroot/run.sh", ["test/scripts/test-install-sh-docker.test.ts"]],
["scripts/docker/install-sh-smoke/Dockerfile", INSTALL_DOCKERFILE_TEST_TARGETS],
["scripts/docker/install-sh-smoke/run.sh", ["test/scripts/test-install-sh-docker.test.ts"]],
[
"scripts/docker/sandbox/Dockerfile",
[...DOCKERFILE_CACHE_AND_DIGEST_TEST_TARGETS, "src/dockerfile.test.ts"],
],
[
"scripts/docker/sandbox/Dockerfile.browser",
[...DOCKERFILE_CACHE_AND_DIGEST_TEST_TARGETS, "src/agents/sandbox/browser.create.test.ts"],
],
["scripts/docker/sandbox/Dockerfile.common", ["src/docker-build-cache.test.ts"]],
[
"scripts/e2e/Dockerfile",
[
...DOCKERFILE_CACHE_AND_DIGEST_TEST_TARGETS,
"test/scripts/docker-build-helper.test.ts",
"test/scripts/docker-e2e-plan.test.ts",
],
],
[
"scripts/e2e/Dockerfile.qr-import",
[...DOCKERFILE_CACHE_AND_DIGEST_TEST_TARGETS, "test/scripts/docker-build-helper.test.ts"],
],
[
"scripts/e2e/plugin-binding-command-escape.Dockerfile",
[
"src/docker-image-digests.test.ts",
"test/scripts/docker-build-helper.test.ts",
"test/scripts/docker-e2e-plan.test.ts",
],
],
["scripts/lib/docker-e2e-container.sh", ["test/scripts/docker-build-helper.test.ts"]],
["scripts/lib/docker-e2e-package.sh", ["test/scripts/docker-build-helper.test.ts"]],
[
@@ -5,6 +5,9 @@ import { parse } from "yaml";
const PACKAGE_ACCEPTANCE_WORKFLOW = ".github/workflows/package-acceptance.yml";
const LIVE_E2E_WORKFLOW = ".github/workflows/openclaw-live-and-e2e-checks-reusable.yml";
const LIVE_MEDIA_RUNNER_DOCKERFILE = ".github/images/live-media-runner/Dockerfile";
const LIVE_MEDIA_RUNNER_IMAGE = "ghcr.io/openclaw/openclaw-live-media-runner:ubuntu-24.04";
const LIVE_MEDIA_RUNNER_IMAGE_WORKFLOW = ".github/workflows/live-media-runner-image.yml";
const NPM_TELEGRAM_WORKFLOW = ".github/workflows/npm-telegram-beta-e2e.yml";
const PACKAGE_JSON = "package.json";
const SETUP_PNPM_STORE_CACHE_ACTION = ".github/actions/setup-pnpm-store-cache/action.yml";
@@ -853,9 +856,23 @@ describe("package artifact reuse", () => {
expect(workflow).toMatch(
/validate_live_media_provider_suites:[\s\S]*?runs-on: \$\{\{ inputs\.use_github_hosted_runners && 'ubuntu-24\.04' \|\| 'blacksmith-8vcpu-ubuntu-2404' \}\}/u,
);
expect(workflow).toContain("image: ghcr.io/openclaw/openclaw-live-media-runner:ubuntu-24.04");
expect(workflow).toContain(`image: ${LIVE_MEDIA_RUNNER_IMAGE}`);
expect(workflow).toContain("ffmpeg -version | head -1");
expect(workflow).toContain("ffprobe -version | head -1");
const imageDockerfile = readFileSync(LIVE_MEDIA_RUNNER_DOCKERFILE, "utf8");
const imageWorkflow = readFileSync(LIVE_MEDIA_RUNNER_IMAGE_WORKFLOW, "utf8");
const buildJob = workflowJob(LIVE_MEDIA_RUNNER_IMAGE_WORKFLOW, "build");
const buildStep = workflowStep(buildJob, "Build and push live media runner image");
expect(imageDockerfile).toMatch(/^FROM ubuntu:24\.04$/m);
expect(imageDockerfile).toContain("apt-get install -y --no-install-recommends");
for (const packageName of ["bash", "curl", "ffmpeg", "git", "openssh-client", "zstd"]) {
expect(imageDockerfile).toContain(` ${packageName} \\`);
}
expect(imageDockerfile).toContain("rm -rf /var/lib/apt/lists/*");
expect(imageWorkflow).toContain(`- "${LIVE_MEDIA_RUNNER_DOCKERFILE}"`);
expect(buildStep.with?.context).toBe(".github/images/live-media-runner");
expect(buildStep.with?.file).toBe(LIVE_MEDIA_RUNNER_DOCKERFILE);
expect(buildStep.with?.tags).toContain(LIVE_MEDIA_RUNNER_IMAGE);
expect(workflow).toContain("suite_id: native-live-extensions-media-audio");
expect(workflow).toContain("suite_id: native-live-extensions-media-music-google");
expect(workflow).toContain("suite_id: native-live-extensions-media-music-minimax");
+91
View File
@@ -1507,13 +1507,104 @@ describe("scripts/test-projects changed-target routing", () => {
"scripts/lib/ios-version.ts",
["test/scripts/ios-version.test.ts", "test/scripts/ios-pin-version.test.ts"],
],
[
".github/images/live-media-runner/Dockerfile",
["test/scripts/package-acceptance-workflow.test.ts"],
],
[
".github/workflows/live-media-runner-image.yml",
["test/scripts/package-acceptance-workflow.test.ts"],
],
[
"Dockerfile",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"src/dockerfile.test.ts",
"test/scripts/test-install-sh-docker.test.ts",
],
],
[
"scripts/docker/cleanup-smoke/Dockerfile",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"test/scripts/docker-build-helper.test.ts",
],
],
["scripts/docker/cleanup-smoke/run.sh", ["test/scripts/docker-build-helper.test.ts"]],
[
"scripts/docker/install-sh-e2e/Dockerfile",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"test/scripts/test-install-sh-docker.test.ts",
],
],
[
"scripts/docker/install-sh-e2e/run.sh",
["test/scripts/docker-build-helper.test.ts", "test/scripts/test-install-sh-docker.test.ts"],
],
[
"scripts/docker/install-sh-nonroot/Dockerfile",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"test/scripts/test-install-sh-docker.test.ts",
],
],
["scripts/docker/install-sh-nonroot/run.sh", ["test/scripts/test-install-sh-docker.test.ts"]],
[
"scripts/docker/install-sh-smoke/Dockerfile",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"test/scripts/test-install-sh-docker.test.ts",
],
],
["scripts/docker/install-sh-smoke/run.sh", ["test/scripts/test-install-sh-docker.test.ts"]],
[
"scripts/docker/sandbox/Dockerfile",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"src/dockerfile.test.ts",
],
],
[
"scripts/docker/sandbox/Dockerfile.browser",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"src/agents/sandbox/browser.create.test.ts",
],
],
["scripts/docker/sandbox/Dockerfile.common", ["src/docker-build-cache.test.ts"]],
[
"scripts/e2e/Dockerfile",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"test/scripts/docker-build-helper.test.ts",
"test/scripts/docker-e2e-plan.test.ts",
],
],
[
"scripts/e2e/Dockerfile.qr-import",
[
"src/docker-build-cache.test.ts",
"src/docker-image-digests.test.ts",
"test/scripts/docker-build-helper.test.ts",
],
],
[
"scripts/e2e/plugin-binding-command-escape.Dockerfile",
[
"src/docker-image-digests.test.ts",
"test/scripts/docker-build-helper.test.ts",
"test/scripts/docker-e2e-plan.test.ts",
],
],
[
"scripts/lib/package-dist-imports.mjs",
[