Go全速与GoCenter

更新:截至2021年5月1日- GoCenter中央存储库已经日落,所有功能已弃用。有关中心日落的更多信息,请阅读弃用博客文章
随着Go编程的加速,它成为世界上发展最快的软件语言之一,试图在没有不可变存储库的情况下创建健壮可靠的管道是具有挑战性的。这是因为去模块(可重用的OSS Go代码包),应用程序作为依赖项包含,必须从数千个独立的源代码存储库中进行解析,每个源代码存储库都可能使用不同的规程进行维护。因此,对Go包在公共可访问的存储库中更加可预测、不可变和可管理的需求已经出现。
GoCenter通过提供Go模块的公共中央存储库,提供可重复和快速的模块解析,解决了开发人员的痛苦。GoCenter自动处理和验证Go项目,直接从源代码存储库转换为不可变的、版本化的模块,使它们免费提供给Go开发者社区。通过这种方式,我们的目标是使Go社区能够可靠地生成可重复构建的Go应用程序。
引入GoCenter
GoCenter提供了通过public解析模块的能力去代理包括通过托管的免费服务搜索模块的能力。在启动时,GoCenter已经为数千个最受欢迎的Go项目填充了模块,您的构建可以立即使用。

开发人员也可以提交自己的Go项目,以便将其包含在GoCenter中,使其广泛地提供给Go开发者社区。

这个预先打包的、版本化模块的中央存储库使得每个开发人员或团队不必为他们使用的公共模块构建自己的库,从而消除了采用Go语言的重大成本。
此外,如果您有自己的Artifactory实例,您可以配置一个on-prem远程存储库以获得对复制构建的完全本地控制,并作为防止连接中断的预防措施。
使用GoCenter构建Go项目
要构建Go项目,首先需要有去客户端(版本1.11.0或更新)已安装。一旦你安装了Go,有两种方法从GoCenter解析Go模块:使用Go客户端,或者设置像Artifactory这样的存储库管理器来代理GoCenter。
使用Go客户端
要使Go项目的构建从GoCenter中绘制依赖模块,请设置GOPROXY到GoCenter的网址(https://gocenter.io):
$ export GOPROXY=https://gocenter.io
现在你可以使用Go客户端来构建你的项目了:
$ go build
设置存储库管理器来代理GoCenter
如果您正在使用像Artifactory这样的存储库管理器,那么您只需要指向GOPROXY在您的存储库管理器中,并确保GoCenter作为远程存储库.
要在Artifactory中定义一个远程存储库来代理GoCenter,请遵循以下步骤:
- 创建一个新的远程存储库并设置去成为它的包类型
- 设置库的关键值,然后输入https://gocenter.io/在URL场
- 点击保存并完成
您也可以创建一个虚拟存储库它聚合了来自本地和去注册以及远程存储库。
一旦Artifactory配置为与GoCenter一起工作,您就可以使用去根据Artifactory的标准进行构建GOPROXY的方法。请注意,根据您的Artifactory服务器的设置,您需要处理正确的客户端授权,目前这可能具有挑战性去客户端在检索模块时没有发送凭据。因此,我们建议使用JFrog CLI来构建您的项目时,使用Artifactory代理GoCenter。一旦JFrog CLI是配置为与Artifactory一起工作,使用我不去建造(或其他Go命令,前缀为jfrog rt)从Artifactory检索依赖项并构建Go项目。
JFrog CLI的一个好处它允许您轻松地将为某个构建创建的模块上传到Artifactory。它还为生成和发布有关构建过程的元数据提供了内置支持。有关更多信息,请参见JFrog CLI文档.
搜索模块
GoCenter登陆页面中的搜索框可以帮助您通过特定模块名称(例如“iris”)进行搜索。当搜索执行时,GoCenter将列出与搜索名称匹配或部分匹配的模块。

点击结果将显示GoCenter处理的版本列表。

已处理版本的列表以颜色编码表示其可用状态:
绿色表示该模块版本包含在GoCenter中,并且可用。
红色的表示该模块未能包含在内,并且不可用。
灰色的表示该模块正在被包含,但尚未可用。
搜索结果还会显示(如果有的话)在Go项目的相关Git存储库中找到的版本列表,但还没有在GoCenter中找到。如果有这样的缺失版本,您可以通过点击“添加缺失版本”将它们添加到GoCenter中。
请求包含你的Go模块
如果你想把你的Go项目添加到GoCenter,让它对Go开发者社区可用,你可以在一个包含请求中提交它。
您可以首先搜索想要包含的模块名。如果您的模块不存在,那么您可以单击提供的模块添加图标,请求添加模块。
一旦你这样做了,你会收到包含请求表格。
在这里,您可以输入请求包含的Go模块的URL。您可以在该模块的搜索结果中查看项目的包含状态。
GoCenter将根据以下最低标准验证包含请求:
- Go模块位于gihub.com或gopkg.in的公共Git仓库中
- 回购是不设置为存档
- Git的仓库必须至少有3颗星
继续前进
自2007年谷歌首次提出这个想法以来,去(也叫GoLang)很快就变成了最流行的编程语言之一.事实上,两者都是Helm和Kubernetes在2017年的一项调查中,开发人员将Go列为最受欢迎的语言,67%的人在工作中使用Go编程。
因此,我们希望GoCenter能够为不断增长的Go开发者社区提供必要的服务,并帮助Go更加完全地兼容DevOps的需求。
您可以通过web浏览器浏览GoCenterhttps://gocenter.io.您可能会发现您经常使用的OSS Go包已经包含在您的构建中并且可用。如果没有,请提交包含包的请求。
作为Go版本化模块的注册表,GoCenter可以通过任何CI服务器或二进制存储库管理器进行引用。但是JFrog CLI和Artifactory使它变得特别容易。
想了解更多关于GoCenter的深入技术信息?看一下GoCenter Github存储库.
如果您还没有使用Artifactory,您可以开始免费试用和Artifactory和Go一起行动。
