Использование частного модуля go в Gitlab в качестве импорта : «Неизвестная версия»

# # #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