在GitLab的CI/CD中支持Go Module引用同一代码库下的其他Go仓库
· 2 min read
在Golang
中, 代码复用的实现方式是通过git
方式引用代码.
如果在CI/CD
中引用同一代码库下的其他Go
仓库, 由于Gitlab
对仓库的访问权限限制, 还需要执行一些配置来确保go mod
能够正确下载依赖项.
操作步骤
设置GOPRIVATE
环境变量
设置GOPRIVATE
变量
export GOPRIVATE=${CI_SERVER_HOST}
这里的${CI_SERVER_HOST}
是gitlab代码库的域名.
使用git config
的insteadOf
指令替换原始的https
请求并添加认证信息
go mod
通过git
下载依赖项.
对于私有的git仓库, 如果不进行认证, 将会出现错误.
使用下述命令替换原始的https
请求并添加认证信息
git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}".insteadOf "https://${CI_SERVER_HOST}"
上述insteadOf
指令为原始的https
请求添加了认证信息.
认证凭证来自于CI_JOB_TOKEN
, 这是CI/CD生命周期中自动生成的.
配置被依赖的仓库允许其他项目通过CI_JOB_TOKEN
进行访问
在GitLab
中进入被依赖的仓库, 在Settings > CI/CD > Token Access
中配置允许其他项目通过CI_JOB_TOKEN
进行访问。