#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