prometheus / promu

Prometheus Utility Tool
Apache License 2.0
269 stars 79 forks source link

How can I set go env in container with `promu crossbuild`? #312

Closed lianghuiyuan closed 1 month ago

lianghuiyuan commented 1 month ago

How can I set go env with promu crossbuild? eg: go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct/

AS I Run promu crossbuild -p linux/amd64 -p linux/arm64 come across errors:

1.21-base: Pulling from prometheus/golang-builder
Digest: sha256:68d7b6bc6bb8e53cafc9780fc75d1880dafee0fec7e607d11c7c36b5c7f74bb6
Status: Image is up to date for quay.io/prometheus/golang-builder:1.21-base
quay.io/prometheus/golang-builder:1.21-base
> running the base builder docker image
3fcb1a531bfdd04d894abe40587941a533024ccca568d1d7cb2c5ef7adfff7d9
Successfully copied 4.65MB to promu-crossbuild-base1722517579-0:/app/
# linux-amd64
curl -s -L https://github.com/prometheus/promu/releases/download/v0.17.0/promu-0.17.0.linux-amd64.tar.gz | tar -xvzf - -C /tmp/tmp.IzbLgGpt5w
promu-0.17.0.linux-amd64/
promu-0.17.0.linux-amd64/LICENSE
promu-0.17.0.linux-amd64/NOTICE
promu-0.17.0.linux-amd64/promu
mkdir -p /go/bin
cp /tmp/tmp.IzbLgGpt5w/promu-0.17.0.linux-amd64/promu /go/bin/promu
rm -r /tmp/tmp.IzbLgGpt5w
>> building binaries
/go/bin/promu build --prefix .build/linux-amd64 
 >   ipmi_exporter
go: downloading github.com/go-kit/log v0.2.1
go: downloading github.com/prometheus/common v0.55.0
go: downloading github.com/prometheus/client_golang v1.19.1
go: downloading github.com/prometheus/exporter-toolkit v0.11.0
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/alecthomas/kingpin/v2 v2.4.0
main.go:23:2: github.com/alecthomas/kingpin/v2@v2.4.0: Get "https://proxy.golang.org/github.com/alecthomas/kingpin/v2/@v/v2.4.0.zip": dial tcp 142.250.69.209:443: i/o timeout
main.go:24:2: github.com/go-kit/log@v0.2.1: Get "https://proxy.golang.org/github.com/go-kit/log/@v/v0.2.1.zip": dial tcp 142.250.69.209:443: i/o timeout
collector.go:20:2: github.com/go-kit/log@v0.2.1: Get "https://proxy.golang.org/github.com/go-kit/log/@v/v0.2.1.zip": dial tcp 142.250.69.209:443: i/o timeout
collector.go:21:2: github.com/prometheus/client_golang@v1.19.1: Get "https://proxy.golang.org/github.com/prometheus/client_golang/@v/v1.19.1.zip": dial tcp 142.250.69.209:443: i/o timeout
main.go:27:2: github.com/prometheus/client_golang@v1.19.1: Get "https://proxy.golang.org/github.com/prometheus/client_golang/@v/v1.19.1.zip": dial tcp 142.250.69.209:443: i/o timeout
main.go:28:2: github.com/prometheus/common@v0.55.0: Get "https://proxy.golang.org/github.com/prometheus/common/@v/v0.55.0.zip": dial tcp 142.250.69.209:443: i/o timeout
main.go:29:2: github.com/prometheus/common@v0.55.0: Get "https://proxy.golang.org/github.com/prometheus/common/@v/v0.55.0.zip": dial tcp 142.250.69.209:443: i/o timeout
main.go:30:2: github.com/prometheus/common@v0.55.0: Get "https://proxy.golang.org/github.com/prometheus/common/@v/v0.55.0.zip": dial tcp 142.250.69.209:443: i/o timeout
main.go:31:2: github.com/prometheus/exporter-toolkit@v0.11.0: Get "https://proxy.golang.org/github.com/prometheus/exporter-toolkit/@v/v0.11.0.zip": dial tcp 142.250.69.209:443: i/o timeout
main.go:32:2: github.com/prometheus/exporter-toolkit@v0.11.0: Get "https://proxy.golang.org/github.com/prometheus/exporter-toolkit/@v/v0.11.0.zip": dial tcp 142.250.69.209:443: i/o timeout
config.go:28:2: gopkg.in/yaml.v2@v2.4.0: Get "https://proxy.golang.org/gopkg.in/yaml.v2/@v/v2.4.0.zip": dial tcp 142.250.69.209:443: i/o timeout
!! command failed: build -o .build/linux-amd64/ipmi_exporter -ldflags -X github.com/prometheus/common/version.Version=1.8.0 -X github.com/prometheus/common/version.Revision=405d611c4af91c8f94b3333d4ca1b51dfbb76ffa -X github.com/prometheus/common/version.Branch=master -X github.com/prometheus/common/version.BuildUser=root@3fcb1a531bfd -X github.com/prometheus/common/version.BuildDate=20240801-13:10:21  -extldflags '-static' -a -tags 'netgo static_build' github.com/prometheus-community/ipmi_exporter: exit status 1
make: *** [Makefile.common:204: common-build] Error 1
!! The base builder docker image exited unexpectedly: exit status 2
lianghuiyuan commented 1 month ago

How to Fix the problem:

# docker exec -it promu-crossbuild-base1722567211-0 sh 
# go env
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/root/.cache/go-build'
GOENV='/root/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.21.12'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/app/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2710030355=/tmp/go-build -gno-record-gcc-switches'
# go env -w GO111MODULE=on
# go env -w GOPROXY=https://goproxy.cn,direct/
# go env
GO111MODULE='on'
GOARCH='amd64'
GOBIN=''
GOCACHE='/root/.cache/go-build'
GOENV='/root/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/go'
GOPRIVATE=''
GOPROXY='https://goproxy.cn,direct/'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.21.12'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/app/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2628430154=/tmp/go-build -gno-record-gcc-switches'

promu crossbuild -p linux/amd64 -p linux/arm64 Success:

# promu crossbuild -p linux/amd64 -p linux/arm64
1.21-base: Pulling from prometheus/golang-builder
Digest: sha256:68d7b6bc6bb8e53cafc9780fc75d1880dafee0fec7e607d11c7c36b5c7f74bb6
Status: Image is up to date for quay.io/prometheus/golang-builder:1.21-base
quay.io/prometheus/golang-builder:1.21-base
> running the base builder docker image
262f03c48e6b4d4436a60979d31517a42d32078c54fb0ff58cb6c9571f49f08f
Successfully copied 4.65MB to promu-crossbuild-base1722567211-0:/app/
# linux-amd64
curl -s -L https://github.com/prometheus/promu/releases/download/v0.17.0/promu-0.17.0.linux-amd64.tar.gz | tar -xvzf - -C /tmp/tmp.dqQZQW8XCk
promu-0.17.0.linux-amd64/
promu-0.17.0.linux-amd64/LICENSE
promu-0.17.0.linux-amd64/NOTICE
promu-0.17.0.linux-amd64/promu
mkdir -p /go/bin
cp /tmp/tmp.dqQZQW8XCk/promu-0.17.0.linux-amd64/promu /go/bin/promu
rm -r /tmp/tmp.dqQZQW8XCk
>> building binaries
/go/bin/promu build --prefix .build/linux-amd64 
 >   ipmi_exporter
go: downloading github.com/prometheus/common v0.55.0
go: downloading github.com/prometheus/exporter-toolkit v0.11.0
go: downloading github.com/prometheus/client_golang v1.19.1
go: downloading github.com/go-kit/log v0.2.1
go: downloading github.com/alecthomas/kingpin/v2 v2.4.0
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/alecthomas/units v0.0.0-20240626203959-61d1e3462e30
go: downloading github.com/xhit/go-str2duration/v2 v2.1.0
go: downloading github.com/prometheus/client_model v0.6.1
go: downloading golang.org/x/crypto v0.25.0
go: downloading github.com/coreos/go-systemd/v22 v22.5.0
go: downloading golang.org/x/sync v0.7.0
go: downloading github.com/beorn7/perks v1.0.1
go: downloading github.com/prometheus/procfs v0.15.1
go: downloading github.com/cespare/xxhash/v2 v2.3.0
go: downloading google.golang.org/protobuf v1.34.2
go: downloading github.com/go-logfmt/logfmt v0.6.0
go: downloading github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
go: downloading golang.org/x/oauth2 v0.21.0
go: downloading golang.org/x/net v0.27.0
go: downloading github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f
go: downloading golang.org/x/sys v0.22.0
go: downloading github.com/jpillora/backoff v1.0.0
go: downloading golang.org/x/text v0.16.0
# linux-arm64
>> building binaries
/go/bin/promu build --prefix .build/linux-arm64 
 >   ipmi_exporter
Successfully copied 29.4MB to /home/lhy/github/ipmi_exporter/.build
promu-crossbuild-base1722567211-0