Как использовать Go dep с подгруппами GitLab

У меня есть проект Go, для которого требуются некоторые зависимости от частного репозитория GitLab, например git.mydomain.com/myteam/category/subcategory/project.git. Но я получаю эту ошибку.

ensure Solve(): remote repository at https://git.mydomain.com/myteam/category.git does not exist or is inaccessible: : exit status 128

person srimaln91    schedule 29.06.2019    source источник
comment
Решение для SSH: stackoverflow.com/q/63932562/8103271   -  person Ubik    schedule 17.09.2020


Ответы (2)


Эта проблема подробно обсуждается в системе отслеживания поддержки GitLab.

TL; DR; Это (намеренно) не работает для частных репозиториев:

[Ваша группа] частная? Если это так, это ожидаемое поведение, и я бы рекомендовал прочитать обсуждение на странице # 1337 (комментарий 36293613) и далее. В этом случае мы решили максимизировать безопасность / конфиденциальность за счет небольшого ущерба для удобства использования. Рекомендуемый обходной путь - специально добавить .git к вашему URL-адресу.

Единственное решение, которое я нашел, - использовать _ 1_ поддерживает .netrc, который решает эту проблему как для dep, так и для современных модулей Go.

  1. Создайте токен персонального доступа в GitLab с областью api: введите описание изображения здесь

  2. Создайте ~/.netrc файл:

     machine gitlab.com
         login <your gitlab username>
         password <the token created in step 1>
    
  3. Немного защитите свой .netrc файл:

     chmod 600 ~/.netrc
    
  4. Выгода

Теперь это должно работать:

    dep ensure -add gitlab.com/<company>/<subgroup>/<project>

Если вы используете частную установку GitLab, я надеюсь, что вы замените gitlab.com на соответствующее имя хоста, где это возможно.

person Flimzy    schedule 18.07.2019

Я думаю, что лучшим решением было бы использовать прокси-сервер, например athens. Вы можете добавить свои Gitlab-Credentials и использовать его как прокси-сервер. Затем Афины займутся аутентификацией.

person alexzimmer96    schedule 30.06.2019