mirror of
https://github.com/pgsty/minio.git
synced 2026-08-09 15:53:28 +03:00
ca674a6967
The crosscompile gate built 15 OS/arch combinations, ten of which we never ship (ppc64le, mips64, s390x, mips, riscv64, 386, arm, freebsd, netbsd, openbsd). On a cold CI cache each target costs ~80s, so the full set ran ~21 min and tripped the job's 20-min timeout, cancelling the only CI run for the release HEAD. Trim the list to the exact goos/goarch matrix the release actually produces (see .github/goreleaser.yml): linux, darwin, windows on amd64 and arm64. This also closes a coverage gap: windows/arm64 is published but was not being compile-checked. The trimmed set builds all six in well under the timeout. Note: netbsd is no longer compile-checked here, so the go-systemd v22.6.0 pin (kept because v22.7.0 does not build on netbsd) loses its CI guard. The pin is retained deliberately - it is harmless on the platforms we ship and upgrading go-systemd is a separate decision - but a netbsd regression in a dependency would now surface only if that build is exercised out of band. Co-authored-by: Claude <noreply@anthropic.com>
41 lines
1.1 KiB
Bash
Executable File
41 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
# Enable tracing if set.
|
|
[ -n "$BASH_XTRACEFD" ] && set -x
|
|
|
|
function _init() {
|
|
## All binaries are static make sure to disable CGO.
|
|
export CGO_ENABLED=0
|
|
|
|
## Cross-compile only the OS/arch combinations we actually publish, kept in
|
|
## sync with the goos/goarch matrix in .github/goreleaser.yml. Compile-checking
|
|
## targets we never ship (ppc64le, s390x, mips*, riscv64, 386, arm, the BSDs)
|
|
## spent CI minutes on unshipped code and timed the gate out on a cold cache.
|
|
SUPPORTED_OSARCH="linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64 windows/arm64"
|
|
}
|
|
|
|
function _build() {
|
|
local osarch=$1
|
|
IFS=/ read -r -a arr <<<"$osarch"
|
|
os="${arr[0]}"
|
|
arch="${arr[1]}"
|
|
package=$(go list -f '{{.ImportPath}}')
|
|
printf -- "--> %15s:%s\n" "${osarch}" "${package}"
|
|
|
|
# go build -trimpath to build the binary.
|
|
export GOOS=$os
|
|
export GOARCH=$arch
|
|
export GO111MODULE=on
|
|
go build -trimpath -tags kqueue -o /dev/null
|
|
}
|
|
|
|
function main() {
|
|
echo "Testing builds for OS/Arch: ${SUPPORTED_OSARCH}"
|
|
for each_osarch in ${SUPPORTED_OSARCH}; do
|
|
_build "${each_osarch}"
|
|
done
|
|
}
|
|
|
|
_init && main "$@"
|