Как использовать модули go в jenkins с частным репозиторием?

#git #go #jenkins #go-modules

# #git #Вперед #дженкинс #go-модули

Вопрос:

Я создаю приложение go с помощью конвейера Jenkins, сначала я добавляю все свои функции go в каталог поставщика и отправляю в VCS, а затем извлекаю весь код при сборке в Jenkins, это работает нормально.

Затем я хочу перейти на модули go, потому что у меня есть частная зависимость от библиотеки в Gitlab, поэтому я изменяю файл netrc на сервере Jenkins, как написано на этой странице: git_https, и «go build» отлично работает на локальном компьютере и загружает все зависимости, как и ожидалось, но на сервере Jenkins есть некоторые проблемы. Вот мой файл Jenkins:

 pipeline {
    agent any

    stages {

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

            steps {

                sh "export XDG_CACHE_HOME=/tmp/.cache 
                amp;amp; 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 это мой частный репозиторий, похоже netrc , конфигурация на сервере Jenkins не работала, как я могу решить эту проблему? Спасибо за любой совет.

Ответ №1:

Лучший подход — создать каталог project ./vendor для вашего репозитория git. Тогда сборка jenkins будет использовать поставщика, а не пытаться получить доступ из интернета. команда сборки:

 env GO111MODULE=off go build