Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR reduces CI wall time by splitting the test workload into parallel GitHub Actions jobs (core/unit, sharded integration, and an E2E canary) and addresses a race condition in test Git config isolation exposed by increased parallelism.
Changes:
- Add dedicated CI tasks for core (non-integration) tests and for running integration tests in 3 shards.
- Update the GitHub Actions workflow to run core, integration shards, and canary jobs in parallel.
- Fix a data race in
GitIsolatedEnv()test helper by guarding temp config creation withsync.Once.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
mise-tasks/test/ci/integration/shard |
New task to enumerate integration tests and run a selected shard with race detection. |
mise-tasks/test/ci/core |
New task to run non-integration packages under the race detector for CI. |
cmd/entire/cli/testutil/testutil.go |
Make git empty config path initialization concurrency-safe via sync.Once. |
.github/workflows/ci.yml |
Split CI into test-core, test-integration (matrix shards), and test-canary jobs. |
Comments suppressed due to low confidence (1)
.github/workflows/ci.yml:15
ref: ${{ github.event.pull_request.head.sha }}will be empty/undefined forpushandworkflow_dispatchevents, which can break checkout. Use a fallback like${{ github.event.pull_request.head.sha || github.sha }}(or omitrefentirely unless the event ispull_request).
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Keyring
Entire-Checkpoint: 54b335d0b41a
990a03b to
5113a1e
Compare
Entire-Checkpoint: 248b2b355d5c
Entire-Checkpoint: 036b0b9caa6d
alishakawaguchi
approved these changes
Apr 9, 2026
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.
Split CI tests into parallel core, integration shards, and canary jobs to cut Actions wall time, and fixed a race in test git-config isolation exposed by the higher integration parallelism.
Note
Low Risk
Low risk production-wise since changes are CI/test-only, but it may affect CI coverage and job stability due to new sharding and parallelism settings.
Overview
CI now runs tests in parallel lanes. The single
testjob is replaced withtest-core,test-integration(matrix-shardeda/b/c), andtest-canary, each running dedicatedmisetasks withGO_TEST_PARALLELset.New
miseCI tasks add a non-integrationgo test -racerunner (test:ci:core) and a shard runner (test:ci:integration:shard) that enumerates integration tests and runs a shard-specific-runregex.Test utility race fix:
gitEmptyConfigPath()now usessync.Onceto safely create/reuse the temp empty git config file under higher parallelism.Reviewed by Cursor Bugbot for commit 990a03b. Configure here.