feat(ci): support explicit runtime secret mapping
Platform CI tests / QuickStack deploy action tests (push) Successful in 28s
Nuvisphere/Platform-CI: Immutable QuickStack OCI deployment / Build once and deploy exact digest (push) Successful in 27s

Adds validated opt-in mapping from Gitea Actions secrets to QuickStack runtime environment variables.
This commit was merged in pull request #3.
This commit is contained in:
2026-08-21 13:32:10 +00:00
parent f4ffb28018
commit 70b3375617
3 changed files with 59 additions and 3 deletions
@@ -6,6 +6,7 @@ import {
deployExactImage,
expandTokens,
mergeEnvironment,
resolveSecretEnvironment,
orderApplications,
resolveDeploymentBranch,
resolvePullRequestHeadBranch,
@@ -170,6 +171,24 @@ test("preserves response-only fields and existing environment secrets safely", (
assert.equal(mergeEnvironment(app().envVars, { ENVIRONMENT: "new" }), "SECRET=preserved\nENVIRONMENT=new");
});
test("maps only explicitly declared Actions secrets into runtime environment", () => {
assert.deepEqual(
resolveSecretEnvironment(
{ MINIO_ENDPOINT: "MINIO_ENDPOINT", MINIO_REGION: "MINIO_REGION" },
{ MINIO_ENDPOINT: "https://minio.example.test", MINIO_REGION: "us-east-1" },
),
{ MINIO_ENDPOINT: "https://minio.example.test", MINIO_REGION: "us-east-1" },
);
assert.throws(
() => resolveSecretEnvironment({ MINIO_ENDPOINT: "MINIO_ENDPOINT" }, {}),
/Missing Actions secret MINIO_ENDPOINT/,
);
assert.throws(
() => resolveSecretEnvironment({ "INVALID-KEY": "MINIO_ENDPOINT" }, { MINIO_ENDPOINT: "value" }),
/Invalid secret environment key/,
);
});
test("postflight waits for the exact expected identity", async () => {
let attempt = 0;
const result = await verifyEndpoint(