构建Go项目:Go mod下载vs Go build
我是新来的,正在尝试找出如何在我的circleci项目中执行构建步骤 我注意到在CircleCI中没有使用构建Go项目:Go mod下载vs Go build,go,build,circleci,go-modules,Go,Build,Circleci,Go Modules,我是新来的,正在尝试找出如何在我的circleci项目中执行构建步骤 我注意到在CircleCI中没有使用go build,这让我感到困惑,因为在CircleCI中,他们通过 所以我不确定单独使用Go-orb是否足够(尽管这对我来说很奇怪)。我模模糊糊地理解什么是,什么是,但我看到了它们一起使用的地方: RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build 目前,根据go orb使用文
go build
,这让我感到困惑,因为在CircleCI中,他们通过
所以我不确定单独使用Go-orb是否足够(尽管这对我来说很奇怪)。我模模糊糊地理解什么是,什么是,但我看到了它们一起使用的地方:
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
,我遗漏了什么或无意中包含了什么?详细文档,所有依赖项都将在不提供参数的情况下下载
在没有参数的情况下,download应用于main的所有依赖项
模块
问题中的行似乎是CI作业完整说明的子集。来自的示例建议了一个构建步骤,该步骤对于获取可执行文件是必需的
任何命令都允许选择有关依赖项的行为。正如所建议的那样,单独下载go mod取决于环境的限制。您测试过吗?输出是如何不符合您的期望的?在构建CI/CD设置中执行
go mod download
的优点是,如果go mod download
失败,则您的单个步骤失败,并且很明显(er)您的构建管道在查找或访问依赖项时遇到问题,而不是在编译代码时遇到问题这有助于更快地发现问题(例如私人回购)。