menggunakan token gitlab untuk mengkloning tanpa otentikasi

139

Saya ingin mengkloning repositori gitlab tanpa meminta skrip otomatisasi saya, dengan menggunakan token pribadi saya dari akun gitlab saya.

Bisakah seseorang memberi saya sampel?

Saya tahu saya bisa melakukannya dengan pengguna dan kata sandi:

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

dan saya tahu itu mungkin dengan kunci ssh

tetapi, kedua opsi tersebut tidak memadai

Muky
sumber
21
git clone https://<token-name>:<token>@gitlaburl
Kinght 金
1
@ Raja 金 Hanya perintahmu yang berhasil !!. Terima kasih banyak :-)
Hussain K

Jawaban:

195

Saya tahu ini sudah tua tetapi ini adalah bagaimana Anda melakukannya:

git clone https://oauth2:[email protected]/vendor/package.git

Roshan Gautam
sumber
3
Ini bekerja untuk saya di GitLab 8.5.7 Edisi Enterprise.
Ben Patterson
1
Berfungsi di sini (Edisi Komunitas GitLab 8.16.5 064dab1)
Martin M.
5
Berhasil! Saya bertanya-tanya mengapa pada gitlab.com pada detail proyek mereka tidak memberikan sintaks perintah lengkap: - ((
FR
Bekerja untuk Gitlab 10.4.4 tetapi Anda harus membuat apitoken. A read_userhanya dapat membaca repo di bawah/users
Kurt
2
Bagaimana cara menggunakannya ssh?
hemu
41

Anda dapat melakukannya seperti ini:

git clone https://gitlab-ci-token:<private token>@git.example.com/myuser/myrepo.git
Tim Hughes
sumber
2
ini tampaknya benar tetapi selalu gagal otentikasi untuk saya :(
Randyaa
sama dengan saya: fatal: Otentikasi gagal untuk
vogash
4
<private token> perlu diganti dengan token runner CI, bukan token pribadi akun.
Kip
2
saya pikir Anda juga harus dapat menggunakan token pribadi Anda benar @tim
Gobi Dasu
Anda dapat menggunakan token ci khusus proyek (aktifkan bangunan, lalu buka konfigurasi proyek / pelari).
BM5k
41

Gitlab memiliki banyak token:

  • Token pribadi
  • Token Akses Pribadi
  • CI / CD menjalankan token

Saya hanya menguji Token Akses Pribadi menggunakan GitLab Community Edition 10.1.2 , contoh:

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

atau menggunakan nama pengguna dan kata sandi:

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

atau dengan memasukkan kata sandi Anda:

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

Tetapi token pribadi sepertinya tidak bisa bekerja.

xuanyuanaosheng
sumber
5
Perhatikan bahwa token pribadi dihapus demi token akses pribadi di GitLab 10.2: about.gitlab.com/2017/09/22/gitlab-10-0-released/…
David Planella
26

Gunakan token alih-alih kata sandi (token harus memiliki ruang lingkup "api" agar klon diizinkan):

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

Diuji melawan 11.0.0-ee.

Zbyněk Winkler
sumber
Ya, itu bekerja untuk saya. Token dapat digunakan sebagai kata sandi.
cwtuan
1
Untuk orang yang menggunakan Google ini: inilah yang Anda inginkan jika menggunakan Token Akses Pribadi melalui HTTPS di gitlab.com.
Adam Baxter
14

Anda dapat menggunakan token pelari untuk CI / CD Pipeline dari repo GitLab Anda.

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

Di mana <runners token>bisa diperoleh dari:

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

atau dengan mengklik pada Settings icon -> CI/CD Pipelinedan mencari Token Pelari di halaman

Cuplikan layar dari lokasi token pelari: Cuplikan layar dari lokasi token pelari

Enlai Chu
sumber
5
Catatan: Token pelari telah usang sekarang.
Arihant Godha
@ArihantGodha sumber?
miq
2
@miq lihat di sini (pada> = 8.12)
Yan Foto
1
Format ini sekarang sudah tidak digunakan lagi, silakan lihat stackoverflow.com/questions/25409700/...
Muhan Alim
Tidak bekerja dari dalam pipa GitLab CI. Tapi baris ini berfungsi:git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Slawa
12

Jika Anda sudah memiliki repositori dan baru saja mengubah cara Anda melakukan otentikasi ke MFA, Anda dapat mengubah remote originURI HTTP Anda untuk menggunakan token api baru Anda sebagai berikut:

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

Dan Anda tidak perlu mengkloning repositori sama sekali.

Roger Barreto
sumber
3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.gitjuga bekerja untuk saya, terima kasih !! Saya akan Jawab utas ini dengan solusi saya yang benar.
Rutrus
10

Salah satu cara yang mungkin adalah menggunakan token deploy ( https://docs.gitlab.com/ee/user/project/deploy_tokens ). Setelah membuat token, gunakan:

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

seperti yang disebutkan dalam tautan di atas.

shahar taite
sumber
Tampaknya ini juga tidak bekerja dengan instalasi npm pada wadah buruh pelabuhan baru, default ke ssh.
Vix
Benar-benar tidak berfungsi.
rios0rios0
10

Sampai 8.12, kloning menggunakan HTTPS+ runner token tidak didukung lagi, seperti yang disebutkan di sini :

Di 8.12 kami meningkatkan izin membangun. Mampu mengkloning proyek menggunakan token pelari itu tidak didukung mulai sekarang (itu sebenarnya bekerja secara kebetulan dan tidak pernah menjadi fitur yang lengkap, jadi kami mengubahnya di 8.12). Anda sebaiknya menggunakan token build.

Ini didokumentasikan secara luas di sini - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .

Yan Foto
sumber
1
Tidak mungkin menggunakan token pelari tetapi menggunakan token akses pribadi. Silakan lihat jawaban saya: stackoverflow.com/questions/25409700/…
Muhan Alim
@MuhanAlim Saya tidak merekomendasikan siapa pun untuk mengekspos seluruh akun mereka menggunakan token akses. Itu sebabnya mereka disebut Token Akses Pribadi !
Yan Foto
Pertanyaannya tidak menyebutkan apa pun tentang membuat kunci publik, hanya bagaimana menggunakan kunci sebagai pengganti nama pengguna dan kata sandi untuk kloning. Tetapi itu adalah poin yang bagus, saya tidak akan merekomendasikan siapa pun menggunakan kunci di mana saja yang bersifat publik.
Muhan Alim
1
skrip otomatisasi menyiratkan bahwa seluruh prosedur tidak berjalan secara lokal. Mungkin di suatu tempat di mana orang lain juga memiliki akses.
Yan Foto
8

Di dalam pipa GitLab CI CI_JOB_TOKENvariabel lingkungan berfungsi untuk saya:

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

Sumber: Gitlab Docs

BTW, pengaturan variabel ini dalam .gitlab-ci.ymlmembantu untuk men-debug kesalahan.

variables:
    CI_DEBUG_TRACE: "true"
Slawa
sumber
2

Saya menggunakan SSH menggunakan pengaturan kunci penyebaran per proyek (hanya baca)

Laurent
sumber
Saya juga karena saya menggunakan GIT_STRATEGY: tidak ada.
Aalex Gabi
1

Untuk membuat masa depan saya bahagia: RTFM - jangan gunakan token gitlab-ci-sama sekali, tetapi .netrcfile.

Ada beberapa poin penting:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. Jangan lupa ganti "gitlab.com" dengan URL Anda!
  3. Jangan mencoba menjadi pintar dan membuat file .netrc secara langsung - gitlab tidak akan menggantikan $CI_JOB_TOKENfile.!
  4. Gunakan https://gitlab.com/whatever/foobar.com- bukan ssh://git@foobar, tidak git+ssh://, tidak git+https://. Anda juga tidak memerlukan barang CI-TOKEN di URL.
  5. Pastikan kamu bisa git clone [url from step 4]

Latar belakang: Saya mengerti

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

ketika saya mencoba untuk membuat Ansible + Gitlab + Docker berfungsi seperti yang saya bayangkan. Sekarang berhasil.

Martin Thoma
sumber
1

Menyesuaikan URL tidak diperlukan. Cukup gunakan konfigurasi git untuk token gitlab seperti

git config --global gitlab.accesstoken {TOKEN_VALUE}

uraian panjang di sini

Bizmate
sumber
1

banyak jawaban di atas dekat, tetapi mereka mendapatkan ~ usernamesintaks untuk deploytoken salah. Ada jenis token lain, tetapi deploy tokenitulah yang ditawarkan gitlab (sekitar tahun 2020+ setidaknya) per repo untuk memungkinkan akses khusus, termasuk hanya baca.

dari repository(atau group), cari settings-> repository-> deploy tokens. Buat yang baru. A usernamedan tokenbidang dibuat. The usernameTIDAK nilai tetap secara default; itu unik untuk token ini.

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

diuji di publik gitlab.com, akun gratis.

mike
sumber