微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

构建 Go 项目:go mod 下载 vs go build

如何解决构建 Go 项目:go mod 下载 vs go build

我是新手,正在尝试弄清楚如何在我的 circleci 项目中执行构建步骤。

我注意到在 CircleCI Go orb 中没有使用 go build,这让我感到困惑,因为在 CircleCI Go Language Guide 中,他们专门使用 go build 通过makefile

所以我不确定单独使用 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 buildgo buildgo mod download 一起使用时,我遗漏了什么或无意中包含了什么?

解决方法

go mod download 的文档详细说明将下载所有依赖项,因为没有提供参数。

不带参数,下载适用于主要的所有依赖项 模块。

问题中的行似乎是 CI 作业完整说明的子集。 Circle CI documentation 中的示例建议了一个构建步骤,这是获取可执行文件所必需的。

任何 build 命令都允许选择有关依赖项的行为。正如所建议的,拥有单独的 go mod download 取决于环境的限制。

,

go mod download 下载所有依赖模块的源代码,并验证新下载模块的校验和。 (请注意,在 Go 1.18 中,我们plan to change go mod download 的行为,因此它可以只下载在主模块中构建包和测试所需的模块。)

go build 构建包。它会根据需要自动下载(并验证)模块源代码以构建这些包。在许多情况下,这组模块比 go mod download 下载的模块小得多。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。