登录
首页 >  Golang >  Go问答

在Jenkins中如何使用带有私有存储库的Go模块?

来源:stackoverflow

时间:2024-03-25 19:15:38 274浏览 收藏

在 Jenkins 中构建 Go 应用程序时,使用私有 GitLab 存储库的 Go 模块会导致构建错误。这是因为 Jenkins 无法从 netrc 文件中读取 Git 用户名,导致无法下载私有依赖项。为了解决此问题,建议将项目 ./vendor 目录添加到 Git 存储库中。这样,Jenkins 构建将使用供应商目录中的依赖项,而不是尝试从内网获取。

问题内容

我正在通过 jenkins pipeline 构建一个 go 应用程序,首先我在供应商目录中添加所有 go 依赖项并推送到 vcs,然后在 jenkins 中构建时提取所有代码,这工作正常。

然后我想迁移到go模块,因为我在gitlab中有一个私有lib依赖项,所以我修改了jenkins服务器中的netrc文件,如下页面所示:git_https,并且“go build”在本地计算机中完美运行并下载所有依赖项均符合预期,但在 jenkins 服务器中存在一些问题。 这是我的 jenkinsfile:

pipeline {
    agent any

    stages {

        stage('build') {
            agent {
                docker { image 'golang:1.12' }
            }

            steps {

                sh "export xdg_cache_home=/tmp/.cache \
                && go build"
            }
        }

    }
}

如代码所示,我使用“go build”来触发go模块构建过程,但在构建时仍然遇到此错误:

go get gitlab.com/gbuda/dblib: git ls-remote -q origin in /go/pkg/mod/cache/vcs/a8fb1674af641945219afa3eee63923c22afe0df48bc030a6bf714abb7116332: exit status 128:
    fatal: could not read Username for 'https://gitlab.com': terminal prompts disabled
If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.

gitlab.com/gbuda/dblib 是我的私人存储库,看来 jenkins 服务器中 netrc 中的配置不起作用,我该如何解决这个问题?感谢您的任何建议。


解决方案


最好的方法是将您的项目 ./vendor 目录添加到您的 git 存储库中。 然后 jenkins build 将使用供应商而不是尝试从内网获取。 构建命令:

env GO111MODULE=off go build

今天关于《在Jenkins中如何使用带有私有存储库的Go模块?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>