Docker映像:golang:1.12.1
。
本地Go版本:go1.10.4 linux / amd64。
我的bash
脚本中有这样的命令:
GOOS=linux GOARCH=amd64 go build -ldflags '-s -w -X main.Version=$(git describe --tags)' -o ./path/to/binary ./main.go &&
现在CI / CD在此命令上失败,但是一个月前,使用相同的Docker镜像一切正常。
-ldflags
已弃用还是什么?
控制台输出:
# command-line-arguments
usage: link [options] main.o
... //skipped
-extldflags flags
pass flags to external linker
... //skipped
-s disable symbol table
... //skipped
-w disable DWARF generation
与-ldflags
无关。
我现在应该使用-extldflags
吗?
我尝试过
GOOS=linux GOARCH=amd64 go build -o ./path/to/binary -ldflags '-s -w -X main.Version=$(git describe --tags)' ./main.go &&
,没有帮助。
GOOS=linux GOARCH=amd64 go build -ldflags '-s -w' -o ./path/to/binary ./main.go &&
成功了,但是无论如何我都需要那个参数。 偶
GOOS=linux GOARCH=amd64 go build -ldflags '-s -w -X main.Version=123456' -o ./path/to/binary ./main.go &&
有效。
进一步研究git输出。
答案 0 :(得分:0)
问题出在ldflags
周围用单引号引起来:
GOOS=linux GOARCH=amd64 go build -ldflags '-s -w -X main.Version=$(git describe --tags)' -o ./path/to/binary ./main.go &&
^ ^
| |
我去了双引号,它起作用了:
GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$(git describe --tags)" -o ./path/to/binary ./main.go &&
^ ^
| |