从企业仓库获取依赖的Golang解决方案
从企业仓库获取依赖的Golang解决方案
我已经将Go依赖项构建并发布到我们的企业Artifactory中。
是否有高效的方法从Artifactory获取文件并在测试运行中使用它们?
我的依赖项位于JFrog Artifactory中。
它们显示如下:
go-local/github.com/davecgh/go-spew/@v/v1.1.1.zip
go-local/github.com/davecgh/go-spew/@v/v1.1.1.mod
当我运行测试时应该如何解析它们?
当我设置GOPROXY="value"并尝试时,
go get github.com/Masterminds/semver
go get github.com/Masterminds/semver: unexpected status (http://stg-repo.org.com/artifactory/github.com/%21masterminds/semver/@v/list): 404 Not Found
如何从企业代理获取包并执行我的测试?
作为临时解决方案,我正在执行以下操作:
然后执行
cd ${TESTDIR}/src
curl -O http://stg-repo.org.com/artifactory/${pkg}
FIELDS=($(echo ${pkg} | awk '{split($0, arr, /[\/:]*/); for (x in arr) { print arr[x] }}'))
INDEX=($(echo ${FIELDS[@]/@v//} | cut -d/ -f1 | wc -w | tr -d ' '))
PREV_INDEX=$INDEX-1
POST_INDEX=$INDEX+1
FILE=${FIELDS[${POST_INDEX}]}
unzip ${FILE}
FILE=$(echo ${FILE} | sed -e s/^${go_local}// -e s/${zip}//)
SOURCE=$(find ${TESTDIR}/src -name ${FIELDS[${PREV_INDEX}]}@${FILE})
DIR=$(dirname $SOURCE)
mv $SOURCE ${DIR}/${FIELDS[${PREV_INDEX}]}
rm -rf ${FILE}.zip
请告诉我正确的做法。
更多关于从企业仓库获取依赖的Golang解决方案的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于从企业仓库获取依赖的Golang解决方案的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go 1.13及以上版本中,可以通过配置GOPROXY环境变量来使用企业Artifactory作为Go模块代理。以下是正确的配置方法:
1. 配置Go环境变量
export GOPROXY=http://stg-repo.org.com/artifactory/api/go/go-local
export GONOSUMDB=*
export GONOPROXY=*
或者使用逗号分隔的代理列表:
export GOPROXY=http://stg-repo.org.com/artifactory/api/go/go-local,direct
2. 验证配置
# 测试包获取
go get github.com/Masterminds/semver
# 或者直接运行测试
go test ./...
3. 完整的Go模块配置示例
在你的项目根目录创建或更新 go.mod 文件:
module your-project-name
go 1.19
require (
github.com/davecgh/go-spew v1.1.1
github.com/Masterminds/semver v1.5.0
)
4. 使用go mod命令
# 下载所有依赖
go mod download
# 整理go.mod和go.sum
go mod tidy
# 验证依赖
go mod verify
5. 在CI/CD流水线中的配置
#!/bin/bash
export GOPROXY=http://stg-repo.org.com/artifactory/api/go/go-local
export GOSUMDB=off
# 下载依赖
go mod download
# 运行测试
go test -v ./...
6. 如果仍然遇到问题,检查Artifactory配置
确保Artifactory中的Go仓库配置正确:
- 仓库类型:Go
- 仓库键:go-local
- 布局:go-default
关键点是使用正确的代理URL格式:http://stg-repo.org.com/artifactory/api/go/go-local,而不是直接的文件路径。这样Go工具链就能正确地从Artifactory解析和下载依赖包。

