【发布时间】:2021-06-29 10:50:10
【问题描述】:
我是新手,正在尝试弄清楚如何在我的 circleci 项目中执行构建步骤。
我注意到在 CircleCI Go orb 中没有使用 go build,这让我感到困惑,因为在 CircleCI Go Language Guide 中,他们专门通过 makefile 使用 go build。
所以我不确定单独使用 Go 球是否足够(尽管这对我来说似乎很奇怪)。我隐约明白go mod download 是做什么的,go build 是做什么的,但我见过examples 一起使用的地方:
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
目前,根据 go orb 使用文档,我有:
build:
executor: go
steps:
- checkout
- go/load-cache:
key: go-mod-v1-{{ checksum "go.sum" }}
- go/mod-download
- go/save-cache:
key: go-mod-v1-{{ checksum "go.sum" }}
- slack/notify:
event: fail
template: basic_fail_1
通过使用go mod download 而不是go build 或go build 和go mod download,我遗漏了什么或无意包含了什么?
【问题讨论】:
-
你测试了吗?输出结果如何不符合您的预期?
-
在构建 CI/CD 设置中执行
go mod download的好处是,如果go mod download失败,您有一个单独的步骤失败,并且很明显(呃)您的构建管道有问题finding 或 accessing 依赖项,而不是编译您的代码(或依赖项的代码)。这有助于更快地发现问题(例如使用私人回购)。
标签: go build circleci go-modules