登录
首页 >  Golang >  Go问答

将标题改为: 使用 Artifactory 作为 Go 模块的本地存储库指南

来源:stackoverflow

时间:2024-02-23 09:00:26 483浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《将标题改为: 使用 Artifactory 作为 Go 模块的本地存储库指南》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

  • 我已设置并运行 Artifactory,为其他工件(RPM 等)提供服务
  • 我想要公共和私人 Go 程序和库的本地副本
    • 确保版本一致性
    • 让公共存储库消除错误
    • 确保公共存储库免受未经授权的更改
  • 我在 Artifactory 中创建了一个 Go 存储库,并使用 frog-cli(创建了一个 zip 文件和一个 mod 文件)填充了 spf13/viper(例如)

问题:

  1. zip 文件是在 Artifactory 中存储 Go 模块的正确方法吗?
  2. 如何在 Go 程序中使用 zip 文件?例如。获取 zip 文件的 URL 是 http://hostname/artifactory/reponame/github.com/spf13/viper/@v/v1.6.1.zip (以及 mod 文件的 .mod) 例如,我是否将 GOPATH 设置为有什么价值吗?
  3. 有没有办法确保所有需求都自动包含在本地 Artifactory 存储库中?在将主包(例如 viper)包含到本地 Artifactory 存储库时?

解决方案


先回答第三个问题 -

这里有另一篇文章可以提供帮助 - https://jfrog.com/blog/why-goproxy-matters-and-which-to-pick/。有两种方法可以将私有 go 模块发布到 Artifactory。第一种是传统方式,即通过 JFrog CLI,这在另一个 article 中有所强调。

另一种方法是将远程存储库指向私有 GitHub 存储库。最近添加了此功能。在这种情况下,虚拟存储库将有两个遥控器。第一个远程存储库默认为 GoCenter,通过它获取公共 go 模块。第二个远程存储库指向私有 VCS 系统。

将 GOPROXY 设置为仅虚拟 go 模块存储库将确保 Artifactory 继续成为公共和私有 go 模块的真实来源。如果您想存储编译后的 go 二进制文件,可以使用本地通用存储库,但建议使用自定义布局来构建通用存储库的内容。

回答前 2 个问题 -

Go 模块是 Golang 中的包管理器,类似于 Java 中的 maven。在 Artifactory 中,对于每个 go 模块,每个 go 模块版本都有 3 个文件:go.mod、.info 和存档文件。

Artifactory 遵循 GOPROXY 协议,因此 go.mod 中提到的依赖项将自动从虚拟存储库中获取。这也将包括存档文件,它是包(源文件)的集合。

由于 GoSumDB 请求被缓存,因此还为公共 Go 模块存储了额外的元数据,例如平铺和查找请求,以确保即使在气隙环境中,Artifactory 仍然是模块和元数据的真实来源。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>