如何解决在 Gitlab 上使用私有 go 模块作为导入:“未知修订版”
即使在 stackoverflow 上检查了其他主题后,我也无法使其正常工作。我在 gitlab.com/my_company/backend
上的项目需要一个位于 gitlab.com/my_company/pkg/auth
的模块。
在本地,我已经设置了 GOPRIVATE
/ git 的配置以使其工作(并且工作正常),尽管在 Gitlab 的 CI 管道中针对合并请求,这失败了。
管道日志/go.mod
我添加了一些调试日志只是为了确保一切都按照我的想法进行设置。这是一个失败的管道日志:
$ git config --global url."ssh://git@gitlab.com/my_company/".insteadOf "https://gitlab.com/my_company/"
$ git config --global url."git@gitlab.com:".insteadOf "https://gitlab.com/"
$ git config -l | grep instead
url.ssh://git@gitlab.com/my_company/.insteadof=https://gitlab.com/my_company/
url.git@gitlab.com:.insteadof=https://gitlab.com/
$ env | grep GOPRIVATE
GOPRIVATE=gitlab.com/my_company
$ go mod download
go: gitlab.com/my_company/pkg/auth@v1.1.0: reading gitlab.com/my_company/pkg/auth/auth/go.mod at revision auth/v1.1.0: unknown revision auth/v1.1.0
我发现这个日志的一个奇怪的部分是:
reading gitlab.com/my_company/pkg/auth/auth/go.mod
- 为什么要重复认证/认证?其实之前在本地发生过一次,不过是因为我写的是“github”而不是“gitlab”:)
相关的 go.mod 行以防万一:
require (
gitlab.com/my_company/pkg/auth v1.1.0 // indirect
)
仓库标签
以下是存储库 gitlab.com/my_company/pkg
上的标签设置:
$ git tag -l
auth/v1.0.0
auth/v1.1.0
cache/v1.0.0
cache/v1.0.1
$ git ls-remote --tags
From git@gitlab.my_company/pkg.git
9efcb02d5489adaac9d525dcb496d868d65e856a refs/tags/auth/v1.0.0
13730d4f61df978c6d690fd2678e2ed924808e0c refs/tags/auth/v1.1.0
2b8dff0ec1b737d975290720933180a9b591a1db refs/tags/cache/v1.0.0
9a3e598bbf83bea57b29d8a908b514861ae37b12 refs/tags/cache/v1.0.1
我对 Gitlab CI 不太熟悉,所以我没有什么可尝试的。有什么想法吗?
谢谢!
更新:我终于安装了 gitlab-runner,所以我可以尝试直接运行 yml,但不走运。它仍然可以在本地运行(没什么大惊小怪的)。
解决方法
在您的项目中应该是文件 .gitlab-ci.yml
,您可以将 GOPRIVATE
变量添加到您的 CI 中,运行程序将为您的项目使用它。
更多关于如何添加环境变量的细节: https://docs.gitlab.com/ee/ci/variables/#create-a-custom-cicd-variable-in-the-gitlab-ciyml-file
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。