mirror of
https://github.com/shankar0123/certctl.git
synced 2026-06-07 15:51:30 +00:00
ci-pipeline-cleanup Phases 7-9: image-and-supply-chain job
Bundle: ci-pipeline-cleanup, Phases 7-9 / frozen decisions 0.8 + 0.10 + 0.11.
NEW image-and-supply-chain job (Ubuntu, ~3 min). Three steps:
PHASE 7 — Digest validity
scripts/ci-guards/digest-validity.sh resolves every @sha256:<digest>
ref in deploy/**/*.{yml,Dockerfile*} against its registry. Closes the
H-001 lying-field gap that Bundle II hit (11 fabricated digests passed
H-001's regex-only check and failed docker pull in CI).
Sandbox verification: 16/16 digests in deploy/* + Dockerfiles all
return HTTP 200 from registry-1.docker.io / ghcr.io / mcr.microsoft.com.
PHASE 8 — Docker build smoke (all 4 Dockerfiles)
Per frozen decision 0.10: build Dockerfile, Dockerfile.agent,
deploy/test/f5-mock-icontrol/Dockerfile, deploy/test/libest/Dockerfile.
Catches syntax errors + COPY path drift before tag-time release.yml.
The test-sidecar Dockerfiles are load-bearing for vendor-e2e — a
syntax error there silently breaks the e2e suite.
PHASE 9 — OpenAPI ↔ handler operationId parity
scripts/ci-guards/openapi-handler-parity.sh extracts router routes
(r.mux.Handle / r.Register "METHOD /path" syntax — Go 1.22+ ServeMux),
extracts OpenAPI operations (paths × HTTP methods), and fails if any
router route has no operationId AND is not documented in the new
api/openapi-handler-exceptions.yaml.
Verified gap at HEAD c48a82c4 (root-caused):
142 router routes, 136 OpenAPI operations
6 router-only routes — all SCEP wire-protocol endpoints (RFC-shaped,
not REST). Documented in api/openapi-handler-exceptions.yaml with
one-line why: justifications.
0 OpenAPI-only operations.
Going forward: any new gap fails the build unless documented.
Status checks per push: now 7 (was 8 after Phase 5+6 dropped windows;
this Phase adds 1 = +1 net). Final acceptance gate target.
ci.yml: 383 → 432 lines (+49 for the new job + steps).
This commit is contained in:
@@ -381,3 +381,48 @@ jobs:
|
||||
- name: Tear down sidecars
|
||||
if: always()
|
||||
run: docker compose --profile deploy-e2e -f deploy/docker-compose.test.yml down -v
|
||||
|
||||
# =============================================================================
|
||||
# image-and-supply-chain — digest validity + Docker build smoke + OpenAPI parity
|
||||
# =============================================================================
|
||||
# Per ci-pipeline-cleanup bundle Phases 7-9 / frozen decision 0.8.
|
||||
# Three checks bundled into one job (parallel to go-build-and-test):
|
||||
# 1. Digest validity — every @sha256 ref in deploy/* + Dockerfiles must
|
||||
# resolve on its registry. Closes the H-001 lying-field gap (H-001
|
||||
# verifies digest *presence* but not *resolution* — Bundle II shipped
|
||||
# 11 fabricated digests that passed H-001 and failed `docker pull`).
|
||||
# 2. Docker build smoke — all 4 Dockerfiles in the repo must build.
|
||||
# Catches syntax errors / COPY path drift before tag-time release.yml.
|
||||
# 3. OpenAPI ↔ handler parity — every router route has a matching
|
||||
# operationId or is documented in api/openapi-handler-exceptions.yaml.
|
||||
image-and-supply-chain:
|
||||
name: image-and-supply-chain
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.25.9'
|
||||
cache: true
|
||||
|
||||
- name: Digest validity (every @sha256 ref must resolve)
|
||||
run: bash scripts/ci-guards/digest-validity.sh
|
||||
|
||||
- name: Docker build smoke (all 4 Dockerfiles)
|
||||
# Per frozen decision 0.10: build all 4 Dockerfiles in the repo,
|
||||
# not just production server + agent. The test-sidecar Dockerfiles
|
||||
# are load-bearing for vendor-e2e — a syntax error there silently
|
||||
# breaks the e2e suite.
|
||||
run: |
|
||||
set -e
|
||||
docker build -f Dockerfile -t certctl:smoke .
|
||||
docker build -f Dockerfile.agent -t certctl-agent:smoke .
|
||||
docker build -f deploy/test/f5-mock-icontrol/Dockerfile -t f5-mock:smoke .
|
||||
docker build -f deploy/test/libest/Dockerfile -t libest:smoke .
|
||||
echo "All 4 Dockerfiles build clean."
|
||||
|
||||
- name: OpenAPI ↔ handler operationId parity
|
||||
run: bash scripts/ci-guards/openapi-handler-parity.sh
|
||||
|
||||
Reference in New Issue
Block a user