E2E parity: exercise deploy/promote/scan/workflow on GitLab and Jenkins#16
Merged
Conversation
The gitops deploy and registry promote stages were only ever run as no-ops in E2E, so namespace forwarding, profile merging and promote auth were never actually validated end to end. - Trigger node-deploy-gitops on branch:main so the trunk-based staging env (gated on branch=='main') runs a real GitOps deploy, and assert the ArgoCD app reaches Synced + Healthy. - Add assert.promote_succeeded, which reads the promote stage outcome and release_ref from this run's aggregate-report.json (run-specific, stale-proof) instead of querying registry state. - Add a shared e2e.argocd.assert_synced helper and route the GitLab suite through it. - node-plan-tag: add Dockerfile + package/publish/release docker config and pin the planner to safe mode so promote is not impact-skipped. - node-deploy-gitops-rollback: decouple from the workflow profile with an explicit when=tag condition so it runs on its tag triggers. - Bump node-deploy-gitops base image to node:22-alpine.
The Jenkins suite only ran two happy-path scenarios, so the deploy, promote, CVE-gating and trunk-based triggering paths (which run in the same isolated Alpine runner containers as GitLab) were never exercised on Jenkins. - Re-add five scenarios mirroring GitLab: node-deploy-gitops, node-deploy-rollback, node-plan-tag, node-full-cve and workflow-trunk-main/tag. - node-deploy-gitops runs in branch context (excluded from the BRIK_TAG case) so its staging gitops env fires, with BRIK_WITH_DEPLOY and BRIK_WITH_PACKAGE so the published image exists for the ArgoCD sync; assert the sync via the shared helper. - Wire E2E_ASSERT_PROMOTE -> assert.promote_succeeded for node-plan-tag. - Declare BRIK_WITH_PACKAGE in pre_register_params so the package opt-in actually propagates to the build (it was silently dropped before). - Add a node-full-cve pipelineJob to the Jenkins CasC config. - Update the E2E coverage matrix.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Harden the E2E suites so the deploy, promote, CVE-gating and trunk-based
triggering paths are actually exercised on both orchestrators -- the
coverage that lets the companion brik PR's three execution-model fixes be
validated end to end rather than as no-ops.
test: exercise real deploy and promote paths in GitLab E2Ebranch:mainso the trunk-based stagingenv (gated on
branch=='main') runs a real GitOps deploy; assert theArgoCD app reaches Synced + Healthy.
assert.promote_succeededreads the promote outcome + release_ref fromthis run's
aggregate-report.json(run-specific, stale-proof) insteadof querying registry state.
e2e.argocd.assert_syncedhelper; GitLab suite routed through it.to
safeplanner mode so promote is not impact-skipped.(explicit
when=tag) so it runs on its tag triggers.test: add Jenkins E2E parity for deploy, promote, scan and workflownode-deploy-rollback, node-plan-tag, node-full-cve, workflow-trunk-main/tag.
case) with BRIK_WITH_DEPLOY + BRIK_WITH_PACKAGE so the staging gitops env
fires and the published image exists for the ArgoCD sync.
BRIK_WITH_PACKAGEdeclared inpre_register_paramsso the packageopt-in propagates to the build (it was silently dropped, masking a
partial false-green where ArgoCD rode on pre-existing image state).
Test plan
bash -n+ shellcheck clean on all edited E2E scriptsretag with auth)
--all: 8/8 PASS, each high-value scenario verified againstthe real job console:
- node-deploy-gitops:
--with-package --with-deploy, image pushed toNexus, staging gitops in branch context, ArgoCD Synced + Healthy, no
--namespaceerror- node-plan-tag:
promoteretags candidate->released with two registrylogins (per-zone auth)
- node-full-cve: scan fails on CVE-2026-45149 (GHSA), build FAILURE
- node-deploy-rollback: image v0.1.0 -> v0.2.0 -> rollback v0.1.0
- workflow-trunk-main/tag: Multibranch builds on branch and tag
Note
Adding the node-full-cve CasC job to a running Jenkins requires
docker restart brik-jenkins(job-dsl writes config.xml) followed byPOST /reload(loads the item); a coldbriklab initseeds it during theinitial CasC apply.