我是个新手,正在尝试弄清楚如何在我的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 mod download
的go build
会遗漏或无意中包含哪些内容
发布于 2021-04-16 00:02:35
go mod download文档详细说明,由于未提供参数,因此将下载所有依赖项。
不带参数的
,则下载将应用于主模块的所有依赖项。
问题中的行似乎是CI作业的完整说明的子集。来自Circle CI documentation的示例建议了一个构建步骤,该步骤是获取可执行文件所必需的。
任何build命令都允许选择有关依赖项的行为。正如所建议的,拥有单独的go mod download
取决于环境的约束。
发布于 2021-06-29 10:50:10
go mod download
下载所有依赖模块的源代码,并验证新下载的模块的校验和。(请注意,在Go 1.18中,我们对go mod download
的行为进行了plan to change,因此它只能下载在main模块中构建包和测试所需的模块。)
go build
构建包。它会自动下载(并验证)构建这些包所需的模块源代码。在许多情况下,这是一个比go mod download
下载的模块少得多的模块集。
https://stackoverflow.com/questions/67100948
复制相似问题