Feature integration test sharding#784
Open
vfusco wants to merge 4 commits into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces integration-test sharding to speed up CI by splitting the integration suite into isolated Docker Compose projects, plus adds supporting tooling (log capture, shard coverage guard) and updates workflows/actions accordingly.
Changes:
- Add shard-aware integration test execution (Makefile shards +
TEST_PATTERNforwarding) and a shard coverage guard for CI. - Introduce a Compose runner script that captures run output + node log + service logs per shard into dedicated artifacts.
- Replace the GitHub license-header action with a repo-local license header verification script; update CI workflows and housekeeping.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
test/integration/main_test.go |
Skips node management when invoked via go test -list to support shard discovery. |
test/compose/compose.integration.yaml |
Adds shard/test selection env vars and gotestsum format configuration for the integration container. |
scripts/run-integration-tests.sh |
Adds TEST_PATTERN/SHARD_NAME support and centralizes Go test args for shard runs. |
scripts/compose-integration-run.sh |
New: isolated Compose project runner that aggregates logs into a single file per run/shard. |
scripts/check-license-header.sh |
New: checks Go source files for the standard license header (replacing the previous action). |
scripts/check-integration-shards.sh |
New: validates that every top-level integration test belongs to exactly one shard. |
README.md |
Minor wording/link formatting tweak. |
Makefile |
Adds shard definitions/targets, log cleanup target, and license check target; updates integration CI plumbing. |
Dockerfile |
Installs additional binutils packages needed for build/linking. |
.gitignore |
Ignores integration log artifacts. |
.github/workflows/clean-up-images.yml |
Switches GHCR cleanup to a scheduled workflow and pins the prune action by commit. |
.github/workflows/build.yml |
Updates actions, adds shard-matrix integration job setup, and uploads per-shard logs. |
.github/license-check/config.json |
Removed (no longer needed after switching to the local license header script). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+38
to
+40
| # Filter out the trailing "ok <package>" summary line of -list. | ||
| TESTS=$(go test -list '^Test' -tags=endtoendtests ./test/integration/... | | ||
| grep -E '^Test[A-Za-z0-9_]*$' || true) |
Comment on lines
+67
to
+69
| for i in "${!SHARD_NAMES[@]}"; do | ||
| if ! printf '%s\n' $TESTS | grep -Eq "${SHARD_REGEXES[$i]}"; then | ||
| echo "ERROR: shard ${SHARD_NAMES[$i]} (${SHARD_REGEXES[$i]}) matches no tests" >&2 |
bd0a56a to
1683250
Compare
1683250 to
6238416
Compare
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.
No description provided.