从企业仓库获取依赖的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解析和下载依赖包。

回到顶部