# # #go #gitlab-ci #go-modules
Вопрос:
Я не могу заставить это работать, даже после проверки других тем в stackoverflow. Мой проект gitlab.com/my_company/backend
нуждается в модуле, найденном по адресу gitlab.com/my_company/pkg/auth
.
Локально, я настроил GOPRIVATE
конфигурацию / git, чтобы она работала (и она работает), хотя в конвейерах CI Gitlab по запросу на слияние это не удается.
Журнал конвейера / 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 напрямую, не повезло. Он по-прежнему работает локально (не большой сюрприз).
Комментарии:
1. > почему это повторяется >
auth/auth
? Это предполагает, чтоgo-import
метаданные , возвращаемые на сервер CI, могут быть неверными. Возможно, вам нужно настроить сервер CI с.netrc
файлом с учетными данными HTTPS, чтобы получить правильные метаданные?
Ответ №1:
В вашем проекте должен быть файл .gitlab-ci.yml
, и вы можете добавить GOPRIVATE
переменную в свой CI, и runner будет использовать ее для вашего проекта.
Более подробная информация о том, как добавить переменные env: https://docs.gitlab.com/ee/ci/variables/#create-a-custom-cicd-variable-in-the-gitlab-ciyml-file
Комментарии:
1. Как указано в моем посте, GOPRIVATE уже установлен :
GOPRIVATE=gitlab.com/my_company
. Работает локально, не работает в gitlab. Пробовал разные значения, с подстановочными знаками/без них, это не меняет результата.2. @NathanaelC. извините, пропущена информация о том, что печать была от бегуна. 1. У вас есть одна и та же версия go in runner и local? 2. Вы вошли в свой докер в gitlab с помощью токена аутентификации? docs.gitlab.com/ee/user/project/deploy_tokens