kimlik doğrulama olmadan klonlamak için gitlab belirteci kullanma


140

Gitlab hesabımdaki özel jetonumu kullanarak, otomasyon betiğimi istemeden gitlab deposunu klonlamak istiyorum.

Birisi bana bir örnek verebilir mi?

Bunu kullanıcı ve şifre ile yapabileceğimi biliyorum:

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

ve bunun ssh anahtarıyla mümkün olduğunu biliyorum

ancak her iki seçenek de yeterli değil


21
git clone https://<token-name>:<token>@gitlaburl
Kinght 金

1
@Kinght 金 Sadece sizin komutunuz çalıştı !!. Çok teşekkürler :-)
Hussain K

Yanıtlar:


195

Bunun eski olduğunu biliyorum ama böyle yapıyorsun:

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


3
Bu benim için GitLab 8.5.7 Enterprise Edition'da çalıştı.
Ben Patterson

1
Burada çalışıyor (GitLab Community Edition 8.16.5 064dab1)
Martin

5
İşe yarıyor! Neden gitlab.com'da proje detaylarında tam komut sözdizimini vermediklerini merak ediyorum: - ((
FRa

Gitlab 10.4.4 için çalışır, ancak bir apibelirteç oluşturmanız gerekir . A read_usersadece altındaki depoları okuyabilir/users
Kurt

2
Bunu nasıl kullanabilirim ssh?
hemu

41

Bunu şu şekilde yapabilirsiniz:

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

2
bu doğru görünüyor ama benim için her zaman kimlik doğrulamasında başarısız oluyor :(
Randyaa

benim için aynı: ölümcül: Kimlik doğrulama başarısız oldu
vogash

4
<private token> hesabın özel jetonuyla değil, CI koşucunun jetonuyla değiştirilmelidir.
Kip

2
bence kişisel belirteç hakkınızı da kullanabilirsiniz @tim
Gobi Dasu

Projeye özgü ci belirtecini kullanabilirsiniz (derlemeleri etkinleştirin, ardından proje / koşucu yapılandırmasına gidin).
BM5k

41

Gitlab'da çok sayıda simge var:

  • Özel jeton
  • Kişisel Erişim Jetonu
  • CI / CD çalışan jeton

GitLab Community Edition 10.1.2 kullanarak yalnızca Personal Access Token'ı test ettim , örnek:

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

veya kullanıcı adı ve şifre kullanarak:

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

veya şifrenizi girerek:

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

Ancak özel jeton işe yaramıyor gibi görünüyor.


5
Özel belirteçlerin GitLab 10.2'deki kişisel erişim belirteçleri lehine kaldırıldığını unutmayın: about.gitlab.com/2017/09/22/gitlab-10-0-released/…
David Planella

26

Şifre yerine jetonu kullanın (klona izin verilmesi için jetonun "api" kapsamına sahip olması gerekir):

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

11.0.0-ee'ye karşı test edilmiştir.


Evet, benim için çalışıyor. Token, şifre olarak kullanılabilir.
cwtuan

1
Bunu Google'da araştıran kişiler için: gitlab.com'da HTTPS üzerinden Kişisel Erişim Jetonları kullanıyorsanız, istediğiniz şey budur.
Adam Baxter

14

GitLab deponuzun CI / CD Ardışık Düzenleri için koşucu belirtecini kullanabilirsiniz.

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

Nereden <runners token>temin edilebilir:

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

veya tıklayarak Settings icon -> CI/CD Pipelineve sayfada Runners Token'ı arayarak

Koşucu jeton konumunun ekran görüntüsü: Koşucu jeton konumunun ekran görüntüsü


5
Not: Koşucu jetonu artık kullanımdan kaldırıldı.
Arihant Godha

@ArihantGodha kaynağı?
miq

2
@miq buraya bakın (itibariyle> = 8.12)
Yan Foto

1
Bu format artık kullanımdan kaldırılmıştır, lütfen stackoverflow.com/questions/25409700/…
Muhan Alim

GitLab CI ardışık düzeninin içinden çalışmaz. Ancak bu satır çalışır:git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Slawa

12

Zaten bir deponuz varsa ve kimlik doğrulama yönteminizi MFA olarak değiştirdiyseniz, remote originHTTP URI'nizi yeni api simgenizi aşağıdaki gibi kullanacak şekilde değiştirebilirsiniz:

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

Ve depoyu yeniden klonlamanıza hiç gerek kalmayacak.


3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.gitayrıca benim için çalıştı, teşekkür ederim !! Bu konuya doğru çözümümle cevap vereceğim.
Rutrus

10

Olası bir yol, bir dağıtım belirteci kullanmaktır ( https://docs.gitlab.com/ee/user/project/deploy_tokens ). Jetonu oluşturduktan sonra şunu kullanın:

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

yukarıdaki bağlantıda belirtildiği gibi.


Bu, yeni bir docker kapsayıcısında npm kurulumuyla çalışmıyor gibi görünüyor, varsayılan olarak ssh.
Vix

Gerçekten çalışmıyor.
rios0rios0

10

Şu andan itibaren 8.12, HTTPS+ runner jetonunu kullanarak klonlama , burada belirtildiği gibi artık desteklenmiyor :

8.12'de derleme izinlerini iyileştirdik. Runners token kullanarak projeyi klonlayabilmek artık desteklenmiyor (aslında tesadüfen çalışıyordu ve hiçbir zaman tam teşekküllü bir özellik olmadı, bu yüzden 8.12'de bunu değiştirdik). Bunun yerine yapı belirteci kullanmalısınız.

Bu, burada kapsamlı bir şekilde belgelenmiştir - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .


1
Koşucu jetonlarını kullanmak mümkün değil, ancak kişisel erişim jetonları kullanıyor. Lütfen
cevabıma

@MuhanAlim Hiç kimsenin erişim belirteçleri kullanarak tüm hesabını ifşa etmesini önermiyorum. Bu yüzden onlara Özel Erişim Belirteçleri deniyor !
Yan Fotoğraf

Soru, anahtarı herkese açık hale getirmekle ilgili hiçbir şeyden bahsetmiyor, yalnızca klonlama için bir kullanıcı adı ve parola yerine anahtarın nasıl kullanılacağından bahsediyor. Ancak bu iyi bir nokta, kimsenin anahtarları halka açık yerlerde kullanmasını önermem.
Muhan Alim

1
otomasyon betiği , tüm prosedürün yerel olarak çalışmadığını gösterir. Muhtemelen başkalarının da erişebileceği bir yer.
Yan Fotoğraf

8

GitLab CI ardışık düzeninin içinde CI_JOB_TOKENortam değişkeni benim için çalışıyor:

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

Kaynak: Gitlab Docs

BTW, bu değişkeni ayarlamak .gitlab-ci.ymlhataların ayıklanmasına yardımcı olur.

variables:
    CI_DEBUG_TRACE: "true"

2

Proje başına dağıtım anahtarları ayarını kullanarak SSH'ye gittim (salt okunur)


Ben de çünkü GIT_STRATEGY kullanıyorum: yok.
Aalex Gabi

1

: Beni mutlu geleceğimi yapmak için KKO - hiç gitlab-ci-belirteci kullanmayın, ancak .netrcdosya.

Birkaç önemli nokta var:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. "Gitlab.com" u URL'nizle değiştirmeyi unutmayın!
  3. Akıllı davranmaya ve .netrc dosyasını doğrudan oluşturmaya çalışmayın - gitlab $CI_JOB_TOKEN, dosyanın içindeki dosyanın yerini almayacaktır !
  4. Kullan https://gitlab.com/whatever/foobar.com- değil ssh://git@foobar, değil git+ssh://, değilgit+https:// . Ayrıca URL'de CI-TOKEN öğelerine de ihtiyacınız yoktur.
  5. Yapabileceğinden emin ol git clone [url from step 4]

Arka plan: Aldım

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

Ansible + Gitlab + Docker'ı hayal ettiğim gibi çalıştırmaya çalıştığımda. Şimdi çalışıyor.



1

Yukarıdaki birçok cevap birbirine yakındır, ancak ~ usernamesözdizimi deployyanlıştır. Başka tür belirteçler de var, ancak deploy tokengitlab'ın her repo için sunduğu (en azından 2020'den fazla) salt okunur dahil olmak üzere özelleştirilmiş erişime izin vermek için .

a repository(veya group) dan settings-> repository-> bulun deploy tokens. Yeni bir tane oluşturun. A usernameve tokenalan oluşturulur. usernameVarsayılan olarak sabit bir değer değildir; bu belirteç için benzersizdir.

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

gitlab.com genel, ücretsiz hesapta test edildi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.