【问题标题】:Remote repository for a go project in Artifactory doesn't proxy?Artifactory中go项目的远程存储库不代理?
【发布时间】:2019-03-20 05:46:55
【问题描述】:

我正在尝试了解如何在 Artifactory 中为 Go 项目使用远程存储库。我最初的期望是它会透明地工作,我需要做的就是将GORPOXY 变量指向一个虚拟存储库(后面有本地和远程),执行go build 并且依赖项将从 Artifactory 下载缓存或 Artifactory 会透明地下载它们。类似于它对 maven 依赖项的工作方式。

当我尝试这样做时,它抱怨在工件中找不到依赖项。好的。

阅读the documentation 有两件事很突出。首先,GOPROXY 没有任何内容,一切都是关于使用 artifactory cli。这是一个很大的缺点,有几个原因。 其次,您需要使用jfrog rt go-publish go --self=false --deps=ALL 手动发布依赖项,然后依赖项出现在本地存储库下。

所以我想弄清楚是否 1) 我可以避免使用 JFrog CLI 和 2) 如果远程存储库不代理,它们有什么意义?或者我错过了什么?

神器 6.3.0

【问题讨论】:

    标签: go artifactory jfrog-cli


    【解决方案1】:

    我理解您对您提到的博客文章的困惑,尽管我感觉作者的意图是更多地展示如何使用 JFrog CLI。

    回答您的问题:

    1) 是的,您不必使用 JFrog CLI 来构建。请查看 the documentation on how to set up a remote repository 以了解 Go。这将指导您将 GitHub 或 GoCenter 设置为 Go 构建的远程存储库。这将允许您按照此结构 <protocol>://<username>:<password>@<artifactory domain>/api/go/<go repository> 设置 GOPROXY 环境变量。

    2) 远程存储库绝对会充当代理,缓存您从远程存储库下载的内容(从user guide:A remote Go repository in Artifactory serves as a caching proxy for a public Go registry such as GoCenter or GitHub. 复制一部分)

    【讨论】:

    • 谢谢!我仍然对文档建议的工作流程感到困惑。这部分`由于包的模块在 Artifactory 中尚不可用,要通过 Artifactory 解决依赖关系,您需要使用 'no-registry' 标志以便从 GitHub 获取依赖源并让 Go 从它们创建模块。` 似乎暗示您不能将工件用作代理。
    • 我明白你的意思,我认为我们需要改进我们的文档以更清楚地解释这一点。这完全取决于您使用哪个命令来构建您的 Go 应用程序。如果您不使用 JFrog CLI,并将 GOPROXY 设置为您的 Artifactory URL,Artifactory 将用作代理。如果您使用 JFrog CLI 并使用 --no-registry 标志,它将完全绕过 Artifactory,因此不会缓存模块。
    • @retgits 这不能回答问题!您在 #1 中的链接完全相反——它根本没有提到 GOPROXY,而是明确告诉您使用 JFrog CLI,这正是我们试图避免的。如果您只是设置 GOPROXY 并单独使用 Go 工具,您将始终收到 400 错误请求。
    • 我遇到了与@MatthewOlenik 相同的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 2015-04-17
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多