登录
首页 >  Golang >  Go问答

CI/CD 构建因 go -ldflags 失败

来源:stackoverflow

时间:2024-04-01 15:54:34 340浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《CI/CD 构建因 go -ldflags 失败》,涉及到,有需要的可以收藏一下

问题内容

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


解决方案


问题出在 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 &&
                                          ^                                            ^
                                          |                                            |

本篇关于《CI/CD 构建因 go -ldflags 失败》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>