gpt4 book ai didi

continuous-integration - 带有 go 依赖包的可重现版本

转载 作者:IT王子 更新时间:2023-10-29 02:18:23 25 4
gpt4 key购买 nike

我正在阅读“如何编写 Go 代码”教程,我不禁想知道如何建立一个稳定的工作流程。

自然地,我的代码将处于源代码控制之下,比如 Git。现在我希望能够执行以下操作:

  • 构建我的项目的可执行文件 - 并确保对于给定的 Git 版本,可执行文件将构建相同的版本。
  • 为我的项目运行持续构建,以便在每次提交时激活。我需要确保持续构建所做的任何事情都可以在我的工作站上重现。
  • 创建我的项目的版本。我需要知道,如果我从代码的相同 git 版本再次执行此操作,则可以重新创建一个版本。

Go 为它提供了“go get”工具——但这就是我感到困惑的地方。应该支持这个的工具,“go get”,设置依赖包的源代码控制 repo。这给了我以下问题:

  1. 我无法将依赖包置于我自己的源代码管理之下。这意味着如果我和我的合作者之间,或者我和我的持续构建系统之间存在任何环境差异,我们将很难找出这些差异。
  2. 如果网络出现故障,我将无法从头开始构建我的代码。或者,换句话说,我的持续构建系统每次构建发布时都必须访问所有这些外部服务器。这可能很脆弱,甚至不是我愿意让外界知道的事情。
  3. Go 定义了将包版本与基础语言同步的约定,但不保证包作者会遵循该约定。如果他们不这样做,一个干净的工作区将选择一个可能被破坏的任意版本。
  4. 如果我依赖的项目被放弃,我可能会失去构建程序的能力。

我可以通过手动导入依赖项目的代码而不使用“go get”来解决这些问题 - 但是,我避免使用专门为该用途设计和推广的语言的工具。

有什么建议吗?我错过了什么吗?

最佳答案

go get 只是使用源代码库使用的分布式版本控制系统。它将使用 repo 的本地副本。我会尽力在这里解决您的每一个问题。

  1. 您当然可以在本地仓库中进行修改并在那里提交它们,如果您想要。
  2. go get 使用它首先构建的本地存储库,除非您明确告诉它更新。
  3. go get 不会破坏存储库,它仍然会存在。而且由于所有来源go get 理解的控制系统是分布式源代码控制系统,没有原因是你不能自己保持项目的分支。

关于continuous-integration - 带有 go 依赖包的可重现版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10056582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com