使用GoCenter全速前进

JFrog GoCenter: To Boldly Go

更新:截至2021年5月1日- GoCenter中央存储库已被淘汰,所有功能已弃用。有关中心日落的更多信息,请阅读弃用博客文章

随着Go编程的加速,成为世界上增长最快的软件语言之一,试图在没有不可变存储库的情况下创建健壮可靠的管道是具有挑战性的。这是因为去模块(可重用的OSS Go代码包)应用程序包含的依赖项必须从数千个独立的源代码存储库中解析,每个源代码存储库都可以用不同的规则进行维护。因此,在一个可公开访问的存储库中,对Go包更加可预测、不可变和可管理的需求已经出现。

GoCenter通过提供Go模块的公共中央存储库,解决了开发人员的痛苦,该存储库提供了可重复和快速的模块解析。GoCenter自动处理和验证Go项目,直接将源代码存储库转换为不可变的、版本化的模块,使它们免费提供给Go开发者社区。通过这种方式,我们的目标是授权Go社区可靠地生成他们的Go应用程序的可复制构建。

引入GoCenter

GoCenter提供了通过公共对象解析模块的能力去代理包括通过托管的免费服务搜索模块的能力。在发布时,GoCenter已经被数以千计的最流行的Go项目的模块填充,你的构建可以立即使用。

启动GoCenter

开发者也可以提交他们自己的Go项目到GoCenter中,让Go开发者社区可以广泛使用这些项目。

向GoCenter提交Go项目

这个预打包、版本化模块的中央存储库使得每个开发人员或团队都不需要构建自己的公共模块库,从而减少了采用Go语言的重大成本。

此外,如果您有自己的Artifactory实例,则可以配置on-prem远程存储库GoCenter以获得对复制构建的完全本地控制,并作为防止连接中断的预防措施。

使用GoCenter构建Go项目

要构建Go项目,首先需要去客户端(版本1.11.0或更新)已安装。一旦你安装了Go,有两种方法从GoCenter解析Go模块:使用Go客户端,或者设置一个存储库管理器,如Artifactory来代理GoCenter。

使用Go客户端

为了让你的Go项目的构建从GoCenter绘制依赖模块,设置GOPROXY到GoCenter的URL (https://gocenter.io):

$ export GOPROXY=https://gocenter.io

现在你可以使用Go客户端来构建你的项目:

$ go构建

设置存储库管理器来代理GoCenter

如果您使用的是存储库管理器,如Artifactory,则只需指向GOPROXY在您的存储库管理器,并确保GoCenter包括作为一个远程存储库

要在Artifactory中定义远程存储库来代理GoCenter,请遵循以下步骤:

  1. 创建一个新的远程存储库并设置成为它的包类型
  2. 设置库的关键值,并输入https://gocenter.io/URL
  3. 点击保存&完成

您还可以创建一个虚拟存储库聚合来自本地和本地的包去注册以及远程存储库。

一旦将Artifactory配置为与GoCenter一起工作,您就可以使用根据Artifactory的标准进行构建GOPROXY的方法。请注意,根据Artifactory服务器的设置,您将需要注意适当的客户端授权,这可能是目前具有挑战性的客户端在检索模块时不发送凭据。因此,我们建议使用JFrog CLI在使用Artifactory代理GoCenter时构建您的项目。一旦JFrog CLI是配置为与Artifactory一起工作,使用去建吧(或其他Go命令,前缀为jfrog rt)从Artifactory检索依赖项并构建Go项目。

JFrog CLI的一个好处它允许您轻松地将为某个构建创建的模块上传到Artifactory。它还提供了生成和发布关于构建过程的元数据的内置支持。有关更多信息,请参见JFrog CLI文档

搜索模块

GoCenter登录页面中的搜索框可以帮助您通过特定的模块名称进行搜索(例如“虹膜”)。当执行搜索时,GoCenter将列出与搜索名称匹配或部分匹配的模块。

GoCenter搜索

单击一个结果会显示GoCenter处理过的版本列表。

GoCenter搜索结果

已处理版本的列表用颜色编码,以指示其可用性状态:

绿色表示模块版本包含在GoCenter中,且可用。

红色的表示该模块未被包含,且不可用。

灰色的表示模块正在被包含,但还不可用。

搜索结果还显示(如果有的话)在Go项目的相关Git存储库中找到的版本列表,但还没有在GoCenter中。如果存在这样的缺失版本,您可以通过单击“添加缺失版本”将其添加到GoCenter。

请求包含你的Go模块

如果你想把你的Go项目添加到GoCenter,让Go开发者社区可以使用它,你可以在一个包含请求中提交它。

您可以首先搜索想要包含的模块名称。如果您的模块不存在,则可以单击提供的模块添加图标请求添加您的模块。

一旦你这样做了,你会看到一个纳入请求表格。

在这里,您可以输入您请求包含的Go模块的URL。您可以在该模块的搜索结果中查看项目的包含状态。

GoCenter将根据以下最低标准验证收录请求:

  • Go模块位于gihub.com或gopkg.in的公共Git repo中
  • 回购是设置为存档
  • 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一起行动。

https://youtu.be/z6Rnhw29WZY