Загрузите приватный репозиторий GitLab

Я хочу использовать curl для загрузки своего частного репо в GitLab. Я знаю, что могу использовать Gitlab API, но по какой-то причине он не работает.

Возможно ли это? Когда я пытаюсь сделать это таким образом, он всегда возвращает страницу входа.

Ответ 1

Это возможно, просто выполните следующие действия:

  • Сначала вам нужно создать "токен личного доступа":

    • Перейдите в Профиль > Настройки > Токены доступа.
    • Введите имя для своего "Того персонального доступа".
    • Проверьте " api Доступ к аутентифицированному API-интерфейсу пользователя

      Personal Access Tokens

    • Нажмите "Создать токен доступа"

    • Страница перезагрузит и сохранит ваш новый токен.
    • Убедитесь, что вы сохранили маркер где-то в безопасности, вы больше не сможете его просматривать.

      New "Personal Access Token"

  • Теперь, когда у вас есть свой "токен личного доступа", вам нужно получить идентификатор вашего проекта для использования API:

  • Теперь вы можете позвонить:

    wget -O your_project.tar.gz https://gitlab.com/api/v3/projects/0000000/repository/archive?private_token=XXXXXXXXXXXXXXXXXXXX

И это загрузит ваш проект в виде файла .tar.gz.

Ответ 2

Вы можете, но вам нужно пройти аутентификацию (как в API Gitlab: как создать частный токен)

curl http://gitlab.server/api/v3/session --data 'login=myUser&password=myPass'

Затем с закрытый токен:

curl --header "PRIVATE-TOKEN: QVy1PB7sTxfy4pqfZM1U" "http://example.com/api/v3/projects"

Или, в вашем случае, получите файлы репозитория:

GET /projects/:id/repository/files

Или загрузите непосредственно один файл.

Ответ 3

Вы можете использовать закрытый токен, который является вашим (найденным в "настройках профиля" ) для доступа к любому ресурсу. Просто перейдите к файлу репозитория, который вы хотите загрузить, скопируйте ссылку "raw" file и добавьте? Private_token =...

Пример:

curl https://git.local/user1/myrepo/raw/master/myfile.txt?private_token=ahgiretherghaeoi

Ответ 4

Если вам нужно сделать это при запуске CI, и ваше частное репо находится на одном сервере, вы сможете использовать git subodules одновременно клонировать другие репозитории. Использование ${CI_JOB_TOKEN} еще один вариант с GitLab 8.12.