internal: Bump test-engine-client to v2.5.1 and unify bktec call sites#3925
Merged
Conversation
Base automatically changed from
te-5828-bktec-plan-collect-commit-metadata
to
main
May 14, 2026 23:37
Contributor
Author
|
This PR is waiting on a 2.5.1 release which addresses Go's module versioning rules |
09b549e to
1c3267f
Compare
Move the `go tool test-engine-client` install from the v1 major to v2.x so the runtime test path can share a bktec version with the metadata side-channel landed in TE-5828. v1.6.0 (Jun 2025) predates the v2.0.0 subcommand split (Dec 2025), the `plan` subcommand, and the `--collect-git-metadata` flag added in v2.4.0. v2.5.1 also carries the corrected go.mod module path with the `/v2` suffix required for v2+ module fetches. `go mod tidy` adds `github.com/urfave/cli/v3 v3.8.0` as a new indirect (bktec's own CLI dependency) and prunes the v1.x-only transitives no longer pulled in (pact-go, cobra, pflag, afero, logutils, mousetrap). Subsequent commits migrate `tests.sh` to the v2 `run` subcommand shape and unify the metadata script onto the same `go tool` install.
bktec v2.0.0 split the single-command shape into `run`, `plan`, and `tools` subcommands. The bare `bktec` invocation is no longer supported -- the v2 CLI exits non-zero on an unrecognised command. The runtime test contract is unchanged: same suite slug, runner, result path, retry count, and test command. Only the entry point shape moves from v1 to v2.
Drop the curl-and-run install bootstrap and call the bktec binary installed via `go tool` instead. Both call sites in this repo now share a single bktec version pinned in go.mod, removing the runtime dependency on the GitHub release endpoint and the ~5s download from the metadata step's wall clock. The metadata step already runs inside the `agent` compose service (see .buildkite/docker-compose.yml), which carries `go` on PATH for bktec's gotest runner -- `go tool` resolves and caches the bktec binary out of GOMODCACHE on the same code path the test step uses. No change to the plan request shape: same suite, same runner, same `--collect-git-metadata` preview flag, same discarded JSON output. Also drops the `BKTEC_VERSION` override env, the arch detection case, and the tempdir / chmod / PATH plumbing -- all of that is now handled by the Go module pin.
1c3267f to
58f25e2
Compare
buildkate
approved these changes
May 15, 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.
Description
This repo currently calls
bktecfrom two places at two different versions:.buildkite/steps/tests.shusesgo tool test-engine-clientat v1.6.0 (pinned ingo.mod), and.buildkite/steps/collect-commit-metadata.sh(added in #3924) downloads the v2.5.0 binary from the GitHub release at step time. v1.6.0 predates theplansubcommand and the--collect-git-metadataflag, which is why the metadata step had to bring its own bktec.This PR unifies both call sites onto a single
go tool test-engine-clientinstall pinned ingo.mod, dropping the curl bootstrap and the runtime dependency on GitHub releases.bktec v2.0.0 split the previous bare-command shape into
run/plan/toolssubcommands, so the runtime test path migrates fromgo tool test-engine-clienttogo tool test-engine-client runat the same time.Changes
Best reviewed commit-by-commit:
test-engine-clientfrom v1.6.0 to v2.5.1 ingo.mod.tests.shto the v2runsubcommand shape.go tool test-engine-client planso both call sites share the same install.Verification
test-linux-amd64,test-linux-arm64,test-windows, andtest-race-linux-arm64keep passing and continue to emit the samejunit-*artifacts.Plan request issued -- git commit metadata sent to Test Engine.Deployment
Low risk. The runtime test contract is unchanged (same suite slug, runner, result path, retry count, test command -- only the entry-point shape moves from v1 to v2). The metadata step is
soft_fail: trueso any regression on that path doesn't block the build.Rollback
Yes -- revert the PR.