CI: some improvements for faster PR builds#6397
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests.
Additional details and impacted files@@ Coverage Diff @@
## master #6397 +/- ##
==========================================
- Coverage 50.69% 44.33% -6.37%
==========================================
Files 661 654 -7
Lines 110771 110683 -88
==========================================
- Hits 56152 49067 -7085
- Misses 51751 58549 +6798
- Partials 2868 3067 +199 ☔ View full report in Codecov by Sentry. |
e313068 to
bc3f11a
Compare
84a13d0 to
4d99199
Compare
There was a problem hiding this comment.
Pull Request Overview
This PR implements multiple CI/CD improvements to significantly reduce PR build times by consolidating Go setup, eliminating workspace archiving, optimizing dependencies, and improving test parallelization.
- Removes the build job and workspace archiving/downloading (saves ~600MB transfers per job)
- Consolidates Go setup with version detection and module caching into reusable actions
- Adds new
build-e2eMakefile target for optimized E2E test binary building - Splits
e2e_subsjob into two shards and adds comprehensive test result reporting
Reviewed Changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/ci-pr.yml | Major restructuring removing build job, adding test sharding, using reusable actions |
| .github/workflows/ci-nightly.yml | Updates to use new reusable actions and consolidated Go setup |
| .github/actions/setup-go/action.yml | New reusable action for Go setup with advanced caching |
| .github/actions/setup-test/action.yml | New reusable action for test environment setup |
| .github/actions/slack-notify/action.yml | New reusable action for Slack notifications |
| Makefile | Adds build-e2e target, removes GOCACHE workaround, adds libsodium target |
| test/scripts/e2e.sh | Adds support for test suite sharding via E2E_SUBS_TESTSUITE |
| test/scripts/e2e_go_tests.sh | Updates to use new build-e2e target with NO_BUILD support |
| test/scripts/e2e_client_runner.py | Renames output file from results.json to testresults.json |
| scripts/travis/before_build.sh | Simplifies libsodium building using new Makefile target |
| scripts/travis/codegen_verification.sh | Removes gimme tool usage, uses standard make build |
| AGENTS.md | Updates filename and description for broader agent compatibility |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Summary
gimmetool to download Go environment (just rely on setup-go action)buildjob and workspace archiving + downloading by downstream jobsbuild-e2eMakefile target for E2E tests to build only the binaries they need (with race detection except kmd).e2e_subsjob into two shards (and verify the shards ran)reportjob that puts failed tests into check summaryTest Plan
PR tests finish about 2x faster now without build cache, >2x when build cache sharing is effective.