CI / CD构建失败,并带有go -ldflags

时间:2019-05-03 07:16:42

标签: go

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 &&

,没有帮助。


编辑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输出。

1 个答案:

答案 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 &&
                                          ^                                            ^
                                          |                                            |