与Artifactory一起运行内部Go注册表

goproxy与Artifactory Go注册表

更新于2019年1月31日,以反映当前的技术状态和JFrog对Go的支持。

对Go注册表的需求

自从8年前在谷歌诞生以来,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代理。好消息是谷歌最终介入并通过添加对Go的版本支持一劳永逸地解决了这个问题。

Artifactory去注册和去代理

Artifactory 5.11版本增加了对去注册在使用Go进行开发时为社区提供了各种功能。

JFrog Artifactory是唯一支持Go注册表的通用构件存储库,在使用Go开发时为社区提供了各种功能点击Tweet

以下是其中的一些:

  • 局部存储库在Artifactory让您设置安全,私密去注册根据项目或开发团队对包进行细粒度访问控制。
  • 一个远程存储库在Artifactory是一个缓存代理远程Go资源,如GitHub项目。2022世界杯阿根廷预选赛赛程通过Artifactory访问go代理可以消除你对网络或GitHub的依赖,因为你的go构建所需的所有依赖都缓存在Artifactory中,因此在本地可用。这也消除了某人突变或从版本控制中删除依赖项的风险,或者更糟的是,强制将更改推到远程Git标记,从而更改了本应是不可更改的版本,这可能会为依赖项目带来许多混乱和不稳定。
  • 一个虚拟存储库聚合本地和远程Go注册表,让您从一个URL访问构建所需的所有Go资源,隐藏了使用本地和远程资源组合的复杂性。2022世界杯阿根廷预选赛赛程
  • 企业级功能
    • 多层安全管理身份验证、访问控制和数据隐私
    • 支持大量的可伸缩性,包括用户数量和存储的Go包数量
    • 高可用性,用于非常健壮的安装
    • 通过各种存储库复制功能支持任何多站点拓扑

使用JFrog CLI构建Go项目

要使用Go存储库,首先需要安装和配置Go客户端。然后,要将Go包部署到Artifactory Go注册表中,您需要安装JFrog CLI的描述进行配置去的例子下面你可以通过以下5个简单的步骤来运行:

步骤1:克隆项目

$ git克隆https://github.com/jbaruch/artifactory-go-example.git

步骤2:配置JFrog命令行

使用JFrog rt config命令,配置JFrog CLI,使用运行命令访问Artifactory所需的参数

$ jfrog rt配置

然后按照提示来做。

步骤3:构建项目

一旦正确配置JFrog CLI以访问Artifactory,您就可以构建您的项目了。由于包的模块在Artifactory中还不可用,因此要通过Artifactory解析依赖关系,您需要使用no-registry”标志,以便从GitHub获得依赖源,并让Go从它们创建模块。

$ jfrog rt go build—无注册

步骤4:创建模块并将它们推送到Artifactory

从GitHub获取项目依赖源,你可以创建模块并将它们推送到Artifactory。一旦模块发布到Artifactory,它们就可以供其他开发人员使用:

$ jfrog rt go-publish go——self=false——deps=ALL

项下的依赖项现在在Artifactory中可用本地化存储库。

去Artifactory的依赖

步骤5:构建项目并解析非缓存依赖项

使用以下工具构建项目和解决来自Artifactory的未缓存依赖项。类中使用的依赖项也将声明build-info元数据

Jfrog rt 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——build-number=1

使用实例收集环境变量。

$ jfrog rt build-collect-envmy-first-go-build1

然后你可以发布构建信息:

$ jfrog rt构建-发布my-first-go-build1

现在你可以在Artifactory中看到构建信息:

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

Go和Artifactory一起走吧。开始免费试用。