使用Artifactory运行内部Go注册表

更新于2019年1月31日,以反映技术的当前状态和JFrog对Go的支持。
需要一个Go注册表
自从八年前在Google诞生以来,Go已经成为当今开发人员和DevOps使用的最流行的语言之一,以至于它被用于设计和编写Helm和Kubernetes.项目的2017年的调查在6000多名受访者中,67%的开发人员在工作中使用Go编程。他们中的大多数人认为Go比Javascript、Python、Java、C、Bash或c++更精通,而且与其他语言相比,他们更喜欢Go编程。但是,对于所有这些流行和使用,与Go包一起工作的设施落后了。
Go生态系统缺少的是标准化——没有标准的依赖管理工具,也没有标准的包格式或兼容的注册表规范。这意味着开发人员无法使用Go创建可复制的构建,这是一个相当大的问题。多年来,工具,如Dep, godep, glide和govendor进入了处理Go依赖管理的场景,但是这些都没有提供一个可接受的解决方案来管理内部Go注册表中的不可变Go包或为远程Go包设置Go代理。好消息是Google最终介入并通过为Go添加版本控制支持一劳永逸地解决了这个问题。
人工Go注册表和Go代理
Artifactory 5.11的发布增加了对去注册在使用Go进行开发时,为社区提供了各种功能。
JFrog Artifactory是唯一一个支持Go注册表的通用工件存储库,在使用Go进行开发时为社区提供了各种功能点击推特这里只是其中的一些:
- 局部存储库在Artifactory让你设置安全,私密去注册根据项目或开发团队对包进行细粒度访问控制。
- 一个远程存储库in Artifactory是远程Go资源(如GitHub项目)的缓存代理。2022世界杯阿根廷预选赛赛程通过Artifactory访问go代理可以消除对网络或GitHub的依赖,因为go构建所需的所有依赖项都缓存在Artifactory中,因此可以在本地使用。这也消除了有人从版本控制中改变或删除依赖的风险,或者更糟的是,将更改强制推送到远程Git标签,从而改变了应该是不可变的版本,这可能会给依赖项目带来很多混乱和不稳定。
- 一个虚拟存储库聚合本地和远程Go注册表,使您可以从一个URL访问构建所需的所有Go资源,从而隐藏了本地和远程资源组合使用的复杂性。2022世界杯阿根廷预选赛赛程
- 企业级功能
- 多层安全管理认证,访问控制和数据隐私
- 支持大规模的可伸缩性,包括用户数量和Go包的存储量
- 非常健壮的安装的高可用性
- 通过各种存储库复制功能支持任何多站点拓扑
使用JFrog CLI构建Go项目
要使用Go存储库,首先需要安装和配置Go客户端。然后,要将Go包部署到Artifactory Go注册表中,您需要安装JFrog命令行中的描述对其进行配置去的例子下面你可以通过以下5个简单的步骤来运行:
步骤1:克隆项目
$ git clone https://github.com/jbaruch/artifactory-go-example.git
步骤2:配置JFrog CLI
使用JFrog rt配置命令,为JFrog CLI配置访问Artifactory所需的参数
$ jfrog rt config
然后按照提示去做。
步骤3:构建项目
一旦正确配置了JFrog CLI以访问Artifactory,就可以构建项目了。由于包的模块在Artifactory中还不可用,要通过Artifactory解析依赖关系,您需要使用no-registry”标志,以便从GitHub获得依赖源,并让Go从它们创建模块。
$ jfrog rt - go build -no-registry
步骤4:创建模块并将它们推送到Artifactory
后从GitHub获取项目依赖源,您可以创建模块并将它们推送到Artifactory。一旦模块发布到Artifactory,其他开发人员就可以使用它们了:
$ jfrog rt go-publish go——self=false——deps=ALL
依赖项现在可以在Artifactory中找到本地化存储库。

步骤5:构建项目并解决未缓存的依赖项
使用以下命令构建项目去和解决来自Artifactory的未缓存依赖项。类中使用的依赖项build-info元数据:
$Jfrog rt go build go——build-name=my-first-go-build——建立若干= 1
步骤6:发布带有build-info的Go模块
现在,您可以将刚刚构建的包以及相关的构建信息发布到Artifactory,这些构建信息包括作为工件上传的模块以及所有环境变量。
$ jfrog rt go-publish go v1.0.0——build-name=my-first-go-build
收集环境变量,使用如下命令:
$ jfrog rt build-collect-envmy-first-go-build1
然后你可以发布构建信息:
$ jfrog rt build-publishmy-first-go-build1
现在你可以在Artifactory中看到构建信息:

你知道吗?
在JFrog,我们是Go的忠实信徒,JFrog CLI和JFrog Xray都是用Go编写的。点击推特