fix: support native package verifier scratch
CI / verify (pull_request) Successful in 1m10s
CI / infrastructure-smoke (pull_request) Successful in 37s
CI / migration-smoke (pull_request) Successful in 1m54s
CI / package-release (pull_request) Successful in 36s
CI / image-build (pull_request) Successful in 52s
CI / deploy-smoke (same-origin) (pull_request) Successful in 51s
CI / deploy-smoke (split) (pull_request) Successful in 1m31s
CI / package-publication (pull_request) Successful in 51s
CI / verify (pull_request) Successful in 1m10s
CI / infrastructure-smoke (pull_request) Successful in 37s
CI / migration-smoke (pull_request) Successful in 1m54s
CI / package-release (pull_request) Successful in 36s
CI / image-build (pull_request) Successful in 52s
CI / deploy-smoke (same-origin) (pull_request) Successful in 51s
CI / deploy-smoke (split) (pull_request) Successful in 1m31s
CI / package-publication (pull_request) Successful in 51s
This commit is contained in:
@@ -157,6 +157,21 @@ describe("CI scripts on a shared Docker daemon", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it("exercise a real native package through the hardened verifier container", async () => {
|
||||
const imageCheck = (await source("scripts/check-image.sh")).replace(/\\\n\s*/gu, " ");
|
||||
expect(imageCheck).toContain(
|
||||
"packages/module-pack/tests/support/pack-native-verifier-proof.mjs",
|
||||
);
|
||||
expect(imageCheck).toContain("--tmpfs /tmp:rw,nosuid,nodev,noexec,size=64m");
|
||||
expect(imageCheck).toContain(
|
||||
"--tmpfs /run/ekklesia-verifier:rw,nosuid,nodev,exec,size=1100m,mode=0700,uid=1000,gid=1000",
|
||||
);
|
||||
expect(imageCheck).toContain("const actual=await m.proof()");
|
||||
expect(imageCheck).toContain("file:///tmp/noexec-installed/server/index.js");
|
||||
expect(imageCheck).toContain("scratch_failure /tmp");
|
||||
expect(imageCheck).toContain("scratch_failure /package");
|
||||
});
|
||||
|
||||
it("install the smoke test's module only as a canonical package the image itself verified (ADR 0049)", async () => {
|
||||
const deploy = (await source("scripts/smoke-deploy.sh")).replace(/\\\n\s*/gu, " ");
|
||||
const packaging = await source("scripts/lib/build-module-package.Dockerfile");
|
||||
@@ -166,6 +181,11 @@ describe("CI scripts on a shared Docker daemon", () => {
|
||||
expect(deploy).toMatch(
|
||||
/--entrypoint node "\$image" core\/dist\/cli\/verify-module-package\.js[^\n]*--sha256-file[^\n]*--extract-to \/staging\/example/u,
|
||||
);
|
||||
expect(deploy).toContain("--tmpfs /tmp:rw,nosuid,nodev,noexec,size=64m");
|
||||
expect(deploy).toContain(
|
||||
"--tmpfs /run/ekklesia-verifier:rw,nosuid,nodev,exec,size=1100m,mode=0700,uid=1000,gid=1000",
|
||||
);
|
||||
expect(deploy).toContain("-e EKKLESIA_MODULE_VERIFIER_SCRATCH_DIR=/run/ekklesia-verifier");
|
||||
// Module storage only ever receives the verified tree from staging.
|
||||
expect(deploy).toContain("cp -R /staging/example /modules/.incoming-example");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user