add cache key for all Go SDK invocations (Cherry pick of #14897) #14902
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.
Problem
At my company, we tried to upgrade from Go 1.16 to Go 1.17, but Pants invocations with the Go backend were failing with errors similar to the following:
As it turns out, the Go backend was using a cached stdlib import analysis from Go 1.16 to produce the import config, and the "missing" packages are packages introduced in Go 1.17. The Go version was not incorporated into the cache key for Go SDK invocations to prevent this issue. This occurs because the hash of the Go tooling is not part of the input root any more because we invoke Go from a system path and don't fingerprint it.
Solution
Incorporate version, GOOS, and GOARCH into Go SDK invocations as cache key.
[ci skip-rust]
[ci skip-build-wheels]