如何将Go项目依赖发布至Jfrog Artifactory并加载依赖?
如何基于go.mod为已上传的Go项目加载依赖到Jfrog Artifactory
背景信息
你已将Go项目上传至本地Jfrog Artifactory,但未包含依赖,需要基于项目的go.mod文件加载对应依赖到仓库。以下是你的项目结构、配置文件及已执行的发布操作:
项目结构
super: |-- go.mod |-- go.sum |-- .jfrog | `--projects | `--go.yaml `-- pkg `--mega `--cool.go
文件内容:go.mod
module super go 1.19 require github.com/sirupsen/logrus v1.9.2 require golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
文件内容:.jfrog/projects/go.yaml
version: 1 type: go resolver: repo: deps-super serverId: megaserver deployer: repo: deps-super serverId: megaserver
已执行的发布步骤
cd ~/super jfrog go-publish v1.2.3
解决方案
1. 确认Jfrog CLI配置
确保megaserver这个serverId已经配置了对应的Artifactory实例,未配置的话执行:
jfrog c add megaserver
按照提示输入Artifactory的URL、用户名和密码完成配置。
2. 配置Go与Jfrog Artifactory联动
执行以下命令让Go通过你的Artifactory仓库处理依赖:
jfrog go-config --repo-resolver deps-super --server-id megaserver
该命令会自动设置GOPROXY、GONOSUMDB等环境变量,确保Go从deps-super仓库拉取依赖,同时将本地依赖上传到该仓库。
3. 拉取并上传依赖
在项目根目录执行:
go mod download
这个命令会根据go.mod文件拉取所有依赖,由于已配置Jfrog代理,拉取的依赖会自动同步到deps-super仓库。
备选方案:直接发布项目时包含依赖
如果需要重新发布项目并同时上传依赖,可执行:
jfrog go-publish v1.2.3 --publish-deps
--publish-deps参数会让命令在发布项目包的同时,将go.mod中声明的所有依赖上传到指定仓库。
验证依赖上传结果
登录Artifactory控制台,进入deps-super仓库,检查是否存在github.com/sirupsen/logrus和golang.org/x/sys对应的依赖包,确认上传成功。
内容的提问来源于stack exchange,提问作者Edward Sarkisyan
相关产品推荐
相关产品推荐

