Подтвердить что ты не робот

Использование токена gitlab для клонирования без аутентификации

Я хочу клонировать репозиторий gitlab без приглашения для автоматизации script, используя мой приватный токен из моей учетной записи gitlab.

Может ли кто-нибудь предоставить мне образец?

Я знаю, что могу сделать это с помощью пользователя и пароля:

git clone https://" + user + ":" + password + "@" + gitlaburl;

и я знаю, что это возможно с помощью клавиши ssh

но оба варианта не являются достаточными

4b9b3361

Ответ 2

Вы можете сделать это следующим образом:

git clone https://gitlab-ci-token:<private token>@git.example.com/myuser/myrepo.git

Ответ 3

В gitlab много токенов:

  • Частный токен
  • Ток персонального доступа
  • Идентификатор работы CI/CD

Я протестировал только токен личного доступа, используя GitLab Community Edition 10.1.2, пример:

git clone https://gitlab-ci-token:${Personal Access Tokens}@gitlab.com/username/myrepo.git


git clone https://oauth2:${Personal Access Tokens}@gitlab.com/username/myrepo.git

или используя имя пользователя и пароль:

git clone https://${username}:${password}@gitlab.com/username/myrepo.git

или введите пароль:

git clone https://${username}@gitlab.com/username/myrepo.git

Но закрытый токен не может работать.

Ответ 4

Используйте токен вместо пароля (токен должен иметь область действия "api", чтобы клон был разрешен):

git clone https://username:[email protected]/user/repo.git

Проверено на 11.0.0-е.

Ответ 5

Вы можете использовать маркер бегунов для конвейеров CI/CD вашего репозитория GitLab.

git clone https://gitlab-ci-token:<runners token>@git.example.com/myuser/myrepo.git

Где <runners token> можно получить из:

git.example.com/myuser/myrepo/pipelines/settings

или щелкнув по значку Settings icon -> CI/CD Pipeline и ищите маркер Runners на странице

Снимок экрана с расположением маркера бегунов: Снимок экрана с местоположением маркеров бегунов

Ответ 6

Начиная с 8.12, клонирование с использованием маркера бегуна HTTPS + больше не поддерживается, как упоминалось здесь:

В 8.12 мы улучшили разрешения на сборку. Возможность клонировать проект с использованием токена бегунов теперь не поддерживается (фактически он работал по совпадению и никогда не был полноценной функцией, поэтому мы изменили это в 8.12). Вместо этого вы должны использовать токен сборки.

This is widely documented here - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html.

Ответ 7

Если у вас уже есть хранилище и вы только что изменили способ аутентификации на MFA, вы можете изменить свой HTTP URI remote origin чтобы использовать новый токен API следующим образом:

git remote set-url origin https://oauth2:[email protected]_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.git

И вам вообще не нужно будет клонировать репозиторий.

Ответ 8

Внутри конвейера GitLab CI переменная окружения CI_JOB_TOKEN работает для меня:

git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...

Источник: Gitlab Docs

Кстати, установка этой переменной в .gitlab-ci.yml помогает отлаживать ошибки.

variables:
    CI_DEBUG_TRACE: "true"

Ответ 9

Одним из возможных способов является использование токена развертывания (https://docs.gitlab.com/ee/user/project/deploy_tokens). После создания токена используйте:

git clone https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git 

как упомянуто в ссылке выше.

Ответ 10

Я пошел SSH, используя настройку ключей развертывания каждого проекта (только для чтения)

Ответ 11

Чтобы сделать мое будущее счастливым: RTFM - вообще не используйте gitlab-ci-token, но файл .netrc.

Есть несколько важных моментов:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. Не забудьте заменить "gitlab.com" на свой URL!
  3. Не пытайтесь быть умным и создайте файл .netrc напрямую - gitlab не заменит $CI_JOB_TOKEN внутри файла!
  4. Используйте https://gitlab.com/whatever/foobar.com - не ssh://[email protected], не git+ssh://, не git+https://. Вам также не нужны никакие элементы CI-TOKEN в URL.
  5. Убедитесь, что вы можете git clone [url from step 4]

Предыстория: я получил

fatal: could not read Username for 'https://gitlab.mycompany.com': No such device or address

когда я пытался заставить Ansible + Gitlab + Docker работать так, как я себе это представляю. Теперь это работает.

Ответ 12

Пробовал и тестировал рабочий формат для Gitlab:

git clone https://[token]@gitlab.com/[account]/[project].git

Подробнее о том, как создать правильный токен, см. в документах: https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#creating-a-personal-access-token

Примечание. Обязательно не публикуйте вышеприведенную информацию.

Ответ 13

Если вы используете Windows 10:

  1. создать токен доступа в Gitlab. Скопируйте его
  2. Откройте диспетчер учетных данных> Учетные данные Windows> добавьте учетные данные Windows> имя пользователя - это ваш адрес электронной почты gitlab, пароль - ваш токен.

Теперь вы можете использовать git clone или то, что позволяет ваш токен. Протестировано с MINGW64 (Git Bash) - если вы используете Powershell, вам может потребоваться перезагрузить компьютер после шага 2.

Ответ 14

Я просто просмотрел API. В настоящее время нет способа клонировать проект через API (здесь используется открытый ключ).