如何在詹金斯的私有存储库中使用go模块?

时间:2019-04-13 14:03:34

标签: git go jenkins go-modules

我正在通过Jenkins Pipeline构建一个go应​​用程序,首先,我将所有go依赖项添加到供应商目录中,并推送到VC​​S,然后在Jenkins中构建时提取所有代码,这很好。

然后我想迁移到模块,因为我在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中的配置不起作用,如何解决此问题?感谢您的任何建议。

1 个答案:

答案 0 :(得分:-1)

最好的办法是将您的项目./vendor目录创建到git存储库。 然后,jenkins构建将使用供应商,而不是尝试从intnernet获取。 构建命令:

env GO111MODULE=off go build