Skip to content

test: bump GINKGO_NODES to 7 for full e2e parallelism - #21

Merged
indradhanush merged 3 commits into
mainfrom
dg/feature/ci
Jul 17, 2026
Merged

test: bump GINKGO_NODES to 7 for full e2e parallelism#21
indradhanush merged 3 commits into
mainfrom
dg/feature/ci

Conversation

@indradhanush

@indradhanush indradhanush commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

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:

  • ci.yml's build-agent job and build-push-agent-bundle.yml both independently compiled the identical host-agent binary on every PR.
  • e2e.yml's own docker-build and build-push-controller-manager.yml both independently built the identical controller-manager image at the same time (confirmed via gh run list timestamps on this PR's earlier runs).

Changes:

  • Makefile: SKIP_BUILD guard on docker-build/host-agent-binary (unset by default, no change to local dev).
  • ci.yml: build-agent uploads the compiled binary as an artifact.
  • build-push-agent-bundle.yml / build-push-controller-manager.yml: drop their direct pull_request trigger, rely on workflow_run off "CI" instead (fires for both push-to-main and PR-triggered CI runs).
  • build-push-agent-bundle.yml downloads ci.yml's artifact instead of rebuilding.
  • build-push-controller-manager.yml also saves+uploads the image it builds as an artifact.
  • e2e.yml drops its direct pull_request trigger, relies on workflow_run off "Build and Publish Controller Manager", downloads that artifact and docker loads it instead of building locally.

Known limitation on this PR specifically

workflow_run triggers 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 (via workflow_dispatch if manually triggered) the individual workflows building fresh as a fallback path.

Test plan

  • Confirm ci.yml runs and build-agent uploads its artifact successfully
  • After merge, open a follow-up PR and confirm the full chain fires: CI -> build-push-agent-bundle + build-push-controller-manager -> e2e, with no duplicate builds

indradhanush and others added 2 commits July 17, 2026 14:40
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>
@indradhanush
indradhanush merged commit 705e49b into main Jul 17, 2026
6 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant