码头形象:golang:1.12.1。
本地Go版本:go1.10.4Linux/amd64 64。
在我的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 &&也帮不上忙。
编辑1
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输出。
发布于 2019-05-03 14:00:22
问题是关于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 &&
^ ^
| |https://stackoverflow.com/questions/55964947
复制相似问题