प्रमाणीकरण के बिना क्लोन करने के लिए गिटलैब टोकन का उपयोग करना


139

मैं अपने ऑटोमेशन स्क्रिप्ट के लिए बिना मेरे गिटलैब खाते से निजी टोकन का उपयोग करके, बिना अपने स्वचालन स्क्रिप्ट के लिए क्लोन करना चाहता हूं।

किसी ने मुझे एक नमूना प्रदान कर सकते हैं?

मुझे पता है कि मैं उपयोगकर्ता और पासवर्ड के साथ ऐसा कर सकता हूं:

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

और मुझे पता है कि यह ssh कुंजी के साथ संभव है

लेकिन, दोनों विकल्प पर्याप्त नहीं हैं


21
git clone https://<token-name>:<token>@gitlaburl
राजाहट King

1
@Kinght 金 केवल आपकी आज्ञा ने काम किया !!। बहुत बहुत धन्यवाद :-)
हुसैन के

जवाबों:


195

मुझे पता है कि यह पुराना है लेकिन यह है कि आप इसे कैसे करते हैं:

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


3
यह मेरे लिए GitLab 8.5.7 एंटरप्राइज संस्करण पर काम किया।
बेन पैटरसन

1
यहां काम करता है (GitLab सामुदायिक संस्करण 8.16.5 064dab1)
मार्टिन एम।

5
यह काम करता हैं! मुझे आश्चर्य है कि क्यों gitlab.com पर परियोजना के विवरण पर वे पूरा आदेश वाक्य रचना देना नहीं है: - ((
FRA

Gitlab 10.4.4 के लिए काम करता है, लेकिन आपको एक apiटोकन बनाने की आवश्यकता है । A read_userकेवल repos को पढ़ सकता है/users
कर्ट

2
इस ओवर का उपयोग कैसे करें ssh?
हेमू

41

आप इसे इस तरह से कर सकते हैं:

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

2
यह सही लगता है, लेकिन यह हमेशा मेरे लिए प्रमाणीकरण विफल रहता है :(
Randyaa

मेरे लिए भी ऐसा ही है: घातक: प्रमाणीकरण विफल रहा
वोगश

4
<निजी टोकन> को सीआई धावक के टोकन से बदला जाना चाहिए, न कि अकाउंट के निजी टोकन को।
किप

2
मुझे लगता है कि आपको अपने व्यक्तिगत टोकन सही @tim का उपयोग करने में सक्षम होना चाहिए
गोबी दासु

आप प्रोजेक्ट विशिष्ट ci टोकन का उपयोग कर सकते हैं (बिल्ड बनाता है, फिर प्रोजेक्ट / रनर्स कॉन्फिगर पर जाएं)।
BM5k

41

गिटलैब में बहुत सारे टोकन हैं:

  • निजी टोकन
  • व्यक्तिगत प्रवेश टोकन
  • सीआई / सीडी चल टोकन

मैंने केवल GitLab सामुदायिक संस्करण 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

पासवर्ड के बजाय टोकन का उपयोग करें (टोकन की अनुमति के लिए "एपी" स्कोप की आवश्यकता है):

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

11.0.0-ee के खिलाफ परीक्षण किया गया।


हां, यह मेरे लिए काम करता है। टोकन का उपयोग पासवर्ड के रूप में किया जा सकता है।
cwtuan

1
Googling लोगों के लिए: यह आप क्या चाहते हैं अगर gitlab.com पर HTTPS पर पर्सनल एक्सेस टोकन का उपयोग किया जाए।
एडम बैक्सटर

14

आप अपने GitLab रेपो के CI / CD पाइपलाइनों के लिए रनर्स टोकन का उपयोग कर सकते हैं।

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पेज पर रनर्स टोकन के लिए क्लिक करके देखें

धावक टोकन स्थान का स्क्रीनशॉट: धावक टोकन स्थान का स्क्रीनशॉट


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

यदि आपके पास पहले से ही एक रिपॉजिटरी है और आपने एमएफए को प्रमाणीकरण करने के तरीके को बदल दिया है, तो आप remote originअपने नए यूपीआई टोकन का उपयोग करने के लिए अपने HTTP यूआरआई को बदल सकते हैं :

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मेरे लिए भी काम किया, धन्यवाद !! मैं अपने सही समाधान के साथ इस धागे का जवाब दूंगा।
रट्रस नोव 8'18

10

एक संभव तरीका एक तैनाती टोकन का उपयोग कर रहा है ( https://docs.gitlab.com/ee/user/project/deploy-tensens ) । टोकन बनाने के बाद, उपयोग करें:

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

जैसा कि ऊपर दिए गए लिंक में बताया गया है।


न तो यह लगता है कि यह एक ताजा डॉकटर कंटेनर पर एनपीएम स्थापित करने के लिए काम कर रहा है, एसएएस के लिए चूक है।
विक्स

वास्तव में काम नहीं करते।
rios0rios0 20

10

जैसा कि यहां बताया गया है कि + रनर टोकन का 8.12उपयोग करके क्लोनिंग HTTPSअब समर्थित नहीं है :

8.12 में हमने बिल्ड अनुमतियों में सुधार किया। रनर्स टोकन का उपयोग करके क्लोन प्रोजेक्ट में सक्षम होने के कारण यह अब से समर्थित नहीं है (यह वास्तव में संयोग से काम कर रहा था और कभी भी पूरी तरह से विकसित नहीं हुआ था, इसलिए हमने 8.12 में इसे बदल दिया)। आपको इसके बजाय बिल्ड टोकन का उपयोग करना चाहिए।

यह यहाँ व्यापक रूप से प्रलेखित है - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html


1
यह धावक टोकन का उपयोग करना संभव नहीं है, लेकिन व्यक्तिगत एक्सेस टोकन का उपयोग कर रहा है। कृपया मेरा उत्तर देखें: stackoverflow.com/questions/25409700/…
मुहान आलिम

@MuhanAlim मैं किसी को भी टोकन का उपयोग करके अपने पूरे खाते को उजागर करने की सलाह नहीं दूंगा। इसीलिए उन्हें Private Access टोकन कहा जाता है !
यान फोटो

यह प्रश्न कुंजी को सार्वजनिक करने के बारे में कुछ भी उल्लेख नहीं करता है, केवल क्लोनिंग के लिए उपयोगकर्ता नाम और पासवर्ड के स्थान पर कुंजी का उपयोग कैसे करें। लेकिन यह एक अच्छी बात है, मैं किसी को भी सार्वजनिक रूप से कहीं भी कुंजियों का उपयोग करने की सलाह नहीं दूंगा।
मुहान आलिम

1
स्वचालन स्क्रिप्ट का अर्थ है कि पूरी प्रक्रिया स्थानीय रूप से नहीं चल रही है। शायद कहीं और जहां दूसरों की पहुंच भी है।
यान फोटो

8

GitLab CI पाइपलाइन के अंदर CI_JOB_TOKENपर्यावरण चर मेरे लिए काम करता है:

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

स्रोत: गिटलैब डॉक्स

BTW, इस चर को .gitlab-ci.ymlत्रुटियों को डीबग करने में मदद करता है।

variables:
    CI_DEBUG_TRACE: "true"

2

मैं एसएसएच प्रति परियोजना तैनाती कुंजी सेटिंग का उपयोग करके चला गया (केवल पढ़ें)


मुझे भी क्योंकि मैं GIT_STRATEGY का उपयोग कर रहा हूं: कोई नहीं।
एलेक्सी गाबी

1

मेरे भविष्य को खुश करने के लिए: RTFM - gitlab-ci-token का उपयोग न करें, लेकिन .netrcफ़ाइल।

कुछ महत्वपूर्ण बिंदु हैं:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. अपने URL द्वारा "gitlab.com" को बदलना न भूलें!
  3. स्मार्ट बनने की कोशिश मत करो और सीधे .netrc फ़ाइल बनाएँ - gitlab $CI_JOB_TOKENफ़ाइल के भीतर की जगह नहीं लेगा !
  4. उपयोग https://gitlab.com/whatever/foobar.com- नहीं ssh://git@foobar, नहीं git+ssh://, नहींgit+https:// । आपको URL में किसी भी CI-TOKEN सामान की आवश्यकता नहीं है।
  5. सुनिश्चित करें कि आप कर सकते हैं git clone [url from step 4]

पृष्ठभूमि: मुझे मिल गया

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

जब मैंने अंसिबल + गिटलैब + डोकर बनाने की कोशिश की जैसा कि मैंने कल्पना की थी। अब यह काम कर रहा है।


1

URL को कस्टमाइज़ करने की आवश्यकता नहीं है। जैसे गिटलैब टोकन के लिए बस एक git कॉन्फ़िगरेशन का उपयोग करें

git config --global gitlab.accesstoken {TOKEN_VALUE}

यहाँ विस्तृत विवरण


1

ऊपर दिए गए कई उत्तर करीब हैं, लेकिन वे टोकन गलत के usernameलिए ~ सिंटेक्स प्राप्त करते हैं deploy। अन्य प्रकार के टोकन हैं, लेकिन वही deploy tokenहै जो gitlab प्रदान करता है (लगभग 2020+ कम से कम) प्रति रेपो केवल-पढ़ने के लिए कस्टमाइज़्ड एक्सेस की अनुमति देने के लिए ।

से एक repository(या group), लगता है settings-> repository-> deploy tokens। एक नया बनाएँ। A usernameऔर tokenफ़ील्ड बनाए जाते हैं। usernameडिफ़ॉल्ट रूप से एक निश्चित मूल्य नहीं है; यह इस टोकन के लिए अद्वितीय है।

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

gitlab.com सार्वजनिक, निःशुल्क खाते पर परीक्षण किया गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.