fix(build): keep Forgejo credentials out of bootstrap logs #119

Merged
triform-admin merged 2 commits from agent/atlas-build-credentials-20260912 into main 2026-09-12 03:13:23 +00:00

The authenticated build bootstraps construct a credential-bearing clone URL under bash tracing, exposing the shared Forgejo token in init-container logs.

Use an ephemeral GIT_ASKPASS helper in all nine authenticated build and validation manifests, keep repository URLs free of credentials, disable tracing during helper setup, clear inherited Git/HTTP trace variables, and remove the helper on exit. Add a required CI test that executes each actual clone block with synthetic credentials under tracing: 54 success, shallow-clone refusal and total-failure cases under bash and sh verify authentication, clean output, failure status and cleanup.

Validation: all 54 cases and make lint pass; git diff --check passes. No C++ changes. The operations note records the exposure without secrets and requires coordinated rotation of the shared credential plus verification of a new bootstrap. Existing immutable jobs and original logs are not remediated by this source change; rotation remains open.

The credential matches twelve Opaque Kubernetes secrets across ten namespaces, including Flux and shared builders/receivers. That read-only comparison retained only names/keys/UIDs. Other consumers and coordinated rotation remain unqualified.

The authenticated build bootstraps construct a credential-bearing clone URL under bash tracing, exposing the shared Forgejo token in init-container logs. Use an ephemeral GIT_ASKPASS helper in all nine authenticated build and validation manifests, keep repository URLs free of credentials, disable tracing during helper setup, clear inherited Git/HTTP trace variables, and remove the helper on exit. Add a required CI test that executes each actual clone block with synthetic credentials under tracing: 54 success, shallow-clone refusal and total-failure cases under bash and sh verify authentication, clean output, failure status and cleanup. Validation: all 54 cases and make lint pass; git diff --check passes. No C++ changes. The operations note records the exposure without secrets and requires coordinated rotation of the shared credential plus verification of a new bootstrap. Existing immutable jobs and original logs are not remediated by this source change; rotation remains open. The credential matches twelve Opaque Kubernetes secrets across ten namespaces, including Flux and shared builders/receivers. That read-only comparison retained only names/keys/UIDs. Other consumers and coordinated rotation remain unqualified.
fix(build): keep Forgejo credentials out of bootstrap traces
All checks were successful
CodeQL / Analyze go (pull_request) Has been skipped
CodeQL / Analyze javascript-typescript (pull_request) Has been skipped
Public security / secrets (pull_request) Has been skipped
CI / Container smoke test (pull_request) Successful in 24s
CI / Docs link check (pull_request) Successful in 19s
native-peer-gate / native-peer-gate-scaffold (permissive) (pull_request) Successful in 12s
native-peer-gate / native-peer-gate-strict (M7 gate) (pull_request) Successful in 24s
Public security / ownership (pull_request) Successful in 6s
CI / Lint (pull_request) Successful in 4m8s
E2E / docker-compose + Playwright (pull_request) Successful in 9m30s
4fef76e414
fix(build): contain credentials in validation jobs as well
All checks were successful
CodeQL / Analyze go (pull_request) Has been skipped
Public security / secrets (pull_request) Has been skipped
CodeQL / Analyze javascript-typescript (pull_request) Has been skipped
CI / Docs link check (pull_request) Successful in 13s
CI / Container smoke test (pull_request) Successful in 23s
native-peer-gate / native-peer-gate-scaffold (permissive) (pull_request) Successful in 11s
native-peer-gate / native-peer-gate-strict (M7 gate) (pull_request) Successful in 10s
Public security / ownership (pull_request) Successful in 6s
CI / Lint (pull_request) Successful in 4m27s
E2E / docker-compose + Playwright (pull_request) Successful in 5m37s
6f554a05fb
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
triform/chromeless!119
No description provided.