Compile packages for selected targets
This commit is contained in:
23
check.go
23
check.go
@@ -49,6 +49,11 @@ type GoValidationSpec struct {
|
||||
// FullVet runs go vet after the suite instead of the test-time vet pass.
|
||||
// Failures use the go-vet validation check identity.
|
||||
FullVet bool
|
||||
// CompileTargets checks that every package builds for each complete target
|
||||
// pair after testing and vet. Compilation uses CGO_ENABLED=0 and does not
|
||||
// produce artifacts or execute target binaries. Failures use the
|
||||
// package-compile validation check identity.
|
||||
CompileTargets []Target
|
||||
}
|
||||
|
||||
// Check validates one local, committed release candidate. It requires a clean
|
||||
@@ -56,8 +61,11 @@ type GoValidationSpec struct {
|
||||
// and an unused local tag. It always runs the offline Go test suite with the
|
||||
// available compatible local Go toolchain and Go host target, then calls
|
||||
// AdditionalChecks when supplied. Validation.Go.Race runs that one suite with
|
||||
// the race detector, and Validation.Go.FullVet runs go vet after the suite
|
||||
// instead of test-time vet. Their zero values preserve the ordinary suite. If
|
||||
// the race detector, Validation.Go.FullVet runs go vet after the suite instead
|
||||
// of test-time vet, and Validation.Go.CompileTargets compiles all packages for
|
||||
// each selected GOOS/GOARCH pair after tests and vet with cgo disabled. Package
|
||||
// compilation produces no artifacts and does not execute target binaries.
|
||||
// Their zero values preserve the ordinary suite. If
|
||||
// Build selects targets, Check builds them after validation in temporary
|
||||
// storage outside the worktree, then rechecks
|
||||
// branch, HEAD, worktree, index, and local tag state. Success establishes local
|
||||
@@ -75,18 +83,23 @@ func Check(ctx context.Context, request ReleaseRequest) (Candidate, error) {
|
||||
}
|
||||
|
||||
func candidateRequest(request ReleaseRequest) candidate.Request {
|
||||
return candidate.Request{
|
||||
result := candidate.Request{
|
||||
RepositoryDir: request.RepositoryDir,
|
||||
Product: request.Product,
|
||||
Version: request.Version,
|
||||
Validation: validation.Settings{
|
||||
Race: request.Validation.Go.Race,
|
||||
FullVet: request.Validation.Go.FullVet,
|
||||
Race: request.Validation.Go.Race,
|
||||
FullVet: request.Validation.Go.FullVet,
|
||||
CompileTargets: make([]validation.Target, len(request.Validation.Go.CompileTargets)),
|
||||
},
|
||||
AdditionalChecks: candidateChecks(request.AdditionalChecks),
|
||||
AfterValidate: internalbuild.CandidateCallback(internalBuildSpec(request.Build), request.Output),
|
||||
Output: request.Output,
|
||||
}
|
||||
for index, target := range request.Validation.Go.CompileTargets {
|
||||
result.Validation.CompileTargets[index] = validation.Target{OS: target.OS, Arch: target.Arch}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func candidateChecks(checks func(context.Context, Candidate) error) func(context.Context, candidate.Candidate) error {
|
||||
|
||||
Reference in New Issue
Block a user