test: bump GINKGO_NODES to 7 for full e2e parallelism - #21
Merged
Conversation
Try full parallelism (one Ginkgo process per spec) instead of the more conservative 4, to see how the shared kind control plane holds up under full concurrency. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
GitHub Actions run data from prior PRs showed duplicate builds of identical artifacts. Two problems occurred in parallel: 1. ci.yml's build-agent and build-push-agent-bundle.yml both compiled the same host-agent binary from the same commit. 2. e2e.yml's local docker-build and build-push-controller-manager.yml both built the same controller-manager image at the same time. Solution: establish canonical builders and chain dependents via workflow_run to ensure artifacts are built once and reused. Changes: - ci.yml's build-agent and build-push-controller-manager.yml become the sole canonical builders for their respective artifacts. - build-push-agent-bundle.yml triggers off ci.yml via workflow_run and downloads the compiled binary as a cross-run artifact instead of rebuilding. - e2e.yml triggers off build-push-controller-manager.yml and pulls the published image, retags it to the expected local reference, and skips the local docker build. - Makefile: added SKIP_BUILD guard to prevent Make's dependency graph from unconditionally retriggering builds after artifacts are obtained via workflow_run. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…istry pull The previous commit made e2e.yml consume the controller-manager image via docker pull from quay.io/platform9/cluster-api-provider-bringyourownhost. Verified that repository is private (401 on anonymous access to both the quay.io API and the registry v2 API), so the pull would have failed since e2e.yml has no registry credentials. Switch to a GitHub Actions artifact instead: build-push-controller-manager.yml saves the image it just built and pushed (it's still present in the runner's local docker daemon afterward, since the script's own cleanup trap calls a docker-clean Makefile target that doesn't exist, so it silently no-ops via its `|| true` guard) and uploads it. e2e.yml downloads that same artifact cross-run and docker loads it instead of pulling from the registry, avoiding the need for quay.io credentials in e2e.yml entirely. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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
Combines two rounds of changes on dg/feature/ci:
Round 1: bumped GINKGO_NODES to 7 (full e2e parallelism).
Round 2: eliminates two confirmed cases of duplicate work across CI:
build-agentjob and build-push-agent-bundle.yml both independently compiled the identical host-agent binary on every PR.docker-buildand build-push-controller-manager.yml both independently built the identical controller-manager image at the same time (confirmed viagh run listtimestamps on this PR's earlier runs).Changes:
SKIP_BUILDguard ondocker-build/host-agent-binary(unset by default, no change to local dev).build-agentuploads the compiled binary as an artifact.pull_requesttrigger, rely onworkflow_runoff "CI" instead (fires for both push-to-main and PR-triggered CI runs).pull_requesttrigger, relies onworkflow_runoff "Build and Publish Controller Manager", downloads that artifact anddocker loads it instead of building locally.Known limitation on this PR specifically
workflow_runtriggers only activate once they exist on the repo's default branch (confirmed via GitHub's own docs). Since these are new on this branch, the workflow_run chain (build-push-agent-bundle / build-push-controller-manager / e2e) will not fire on this PR — only after this merges to main will subsequent PRs correctly exercise it. What is testable on this PR:ci.yml(build-agent + artifact upload,test), and (viaworkflow_dispatchif manually triggered) the individual workflows building fresh as a fallback path.Test plan
ci.ymlruns andbuild-agentuploads its artifact successfully