використовуючи маркер gitlab для клонування без автентифікації


139

Я хочу клонувати сховище gitlab без підказки для мого сценарію автоматизації, використовуючи мій приватний маркер з мого облікового запису gitlab.

Чи може хтось надати мені зразок?

Я знаю, що можу це зробити з користувачем та паролем:

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

і я знаю, що це можливо за допомогою ключа ssh

але обидва варіанти не є достатніми


21
git clone https://<token-name>:<token>@gitlaburl
Кінгт 金

1
@Kinght 金 Працювала лише ваша команда !!. Велике спасибі :-)
Hussain K

Відповіді:


195

Я знаю, що це по-старому, але так ви це робите:

git clone https://oauth2:ACCESS_TOKEN@somegitlab.com/vendor/package.git


3
Це працювало для мене на GitLab 8.5.7 Enterprise Edition.
Бен Паттерсон

1
Працює тут (GitLab Community Edition 8.16.5 064dab1)
Мартін М.

5
Це працює! Цікаво, чому на gitlab.com у деталях проекту вони не дають повний синтаксис команди: - ((
FRa

Працює для Gitlab 10.4.4, але вам потрібно зробити apiмаркер. A read_userможна читати лише репости під/users
Курт

2
Як це використовувати над ssh?
хему

41

Ви можете це зробити так:

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

2
це здається правильним, але для мене завжди
проходить

те саме для мене: fatal: Не вдалося
встановити

4
<приватний маркер> потрібно замінити маркером бігу CI, а не приватним жетоном облікового запису.
Кіп

2
я думаю, ви також можете користуватися своїм особистим маркером правильно @tim
Гобі Дасу

Ви можете використовувати специфічний маркер ci для проекту (увімкніть збірки, потім перейдіть до конфігурації проекту / бігунів).
BM5k

41

У 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

Але приватний маркер, схоже, не може працювати.


5
Зауважте, що приватні жетони були вилучені на користь особистих жетонів доступу в GitLab 10.2: about.gitlab.com/2017/09/22/gitlab-10-0-released/…
Девід Планелла

26

Використовуйте маркер замість пароля (маркер повинен мати "api" область для дозволу клонування):

git clone https://username:token@gitlab.com/user/repo.git

Тестували проти 11,0,0-ее.


Так, це працює для мене. Токен можна використовувати як пароль.
cwtuan

1
Для людей гуглінг: це те, що ви хочете, якщо ви користуєтеся токенами особистого доступу через HTTPS на gitlab.com.
Адам Бакстер

14

Ви можете використовувати маркер бігунів для 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 на сторінці

Знімок екрана розташування маркера бігунів: Знімок екрана розташування маркера бігунів


5
Примітка: Маркер бігунів зараз застарілий.
Аріхант Годха

@ArihantGodha джерело?
miq

2
@miq дивіться тут (станом на> = 8.12)
Ян Фото

1
Цей формат в даний час НЕ рекомендується, будь ласка , см stackoverflow.com/questions/25409700 / ...
муха Алім

Не працює зсередини трубопроводу GitLab CI. Але ця лінія працює:git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Слава

12

Якщо у вас вже є сховище і ви просто змінили спосіб здійснення автентифікації на MFA, ви можете змінити свій remote originURI HTTP, щоб використовувати новий маркер api, як описано нижче:

git remote set-url origin https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.git

І вам не доведеться взагалі повторно клонувати сховище.


3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.gitтакож працював для мене, дякую !! Я відповім на цю тему своїм правильним рішенням.
Рутрус

10

Один із можливих способів - використання маркера розгортання ( https://docs.gitlab.com/ee/user/project/deploy_tokens ). Створивши маркер, використовуйте:

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

як зазначено у посиланні вище.


Здається, це також не працює з встановленням npm на свіжому контейнері docker, за замовчуванням до ssh.
Vix

Дійсно не працюють.
rios0rios0

10

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

У 8.12 ми покращили дозволи на створення. Бути в змозі клонувати проект за допомогою маркера бігунів відтепер він не підтримується (він насправді працював за збігом обставин і ніколи не був повноцінною функцією, тому ми змінили це в 8.12). Натомість слід використовувати маркер збирання.

Це широко задокументовано тут - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .


1
Це неможливо за допомогою маркерів для бігунів, але використовуються особисті маркери доступу. Будь ласка , дивіться мій відповідь: stackoverflow.com/questions/25409700 / ...
муха Алім

@MuhanAlim я б не рекомендував нікому виставляти весь обліковий запис за допомогою маркерів доступу. Ось чому їх називають токенами приватного доступу !
Ян Фото

У цьому питанні нічого не згадується про оприлюднення ключа, лише про те, як використовувати ключ замість імені користувача та пароля для клонування. Але що це хороший момент, я б не рекомендував нікому користуватися ключами в будь-якому місці, яке є публічним.
Мухан Алім

1
Сценарій автоматизації передбачає, що вся процедура не працює локально. Можливо, десь там, де інші також мають доступ.
Ян Фото

8

Всередині конвеєра GitLab CI CI_JOB_TOKENзмінна середовища працює для мене:

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

Джерело: Gitlab Docs

BTW, встановлення цієї змінної у .gitlab-ci.ymlдопомагає налагоджувати помилки.

variables:
    CI_DEBUG_TRACE: "true"

2

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


Я теж тому, що я використовую GIT_STRATEGY: немає.
Алекс Габі

1

Щоб зробити своє майбутнє мені щасливим: 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://git@foobar, не 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 працювати так, як я собі уявляю. Зараз це працює.



1

багато відповідей вище є близькими, але вони отримують ~ usernameсинтаксис для deployлексем неправильним. Існують і інші види жетонів, але deploy tokenце те, що пропонує gitlab (приблизно принаймні 2020+) на репо щоб дозволити індивідуальний доступ, включаючи лише для читання.

з repository(або group) знайдіть settings-> repository-> deploy tokens. Створіть новий. А usernameі tokenполе створюються. Значення usernameНЕ є фіксованим значенням за замовчуванням; це унікально для цього маркера.

git clone https://<your_deploy_token_username>:<the_token>@gitlab.com/your/repo/path.git

перевірено на публічному сайті gitlab.com, безкоштовний рахунок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.