जीथक्यू प्राइवेट रिपॉजिटरी के लिए जेनकींस सीआई प्रमाणित करें


136

मैं जेनकिन्स के लिए जीथब पर होस्ट किए गए मेरे निजी भंडार से डेटा स्वचालित रूप से प्राप्त करना चाहूंगा। लेकिन मुझे नहीं पता कि उस कार्य को कैसे पूरा किया जाए .. प्रलेखन की कोशिश की, जेनकिंस उपयोगकर्ता के लिए ssh-key उत्पन्न करना और जो मैं देख सकता हूं वह सब है: "रेपो का क्लोन बनाने में असमर्थ"। मैंने URL की जाँच की है - वे मान्य हैं।

कोई भी सुराग, शायद आप कुछ डॉक्स / ब्लॉग / जो कुछ भी इस तरह के सामान का वर्णन कर रहे हैं उसे जानते हैं?


मैं इसी तरह के सवाल का जवाब देता हूं, आप नीचे दिए गए लिंक में जवाब देख सकते हैं:
जेनकिंस

जवाबों:


139

शायद GitHub की चाबियों को तैनात करने के लिए जो आप देख रहे हैं, उसका समर्थन क्या है? उस पृष्ठ को उद्धृत करने के लिए:

मुझे एक तैनाती कुंजी का उपयोग कब करना चाहिए?

सरल, जब आपके पास एक सर्वर होता है जिसे एकल निजी रेपो तक पहुंच की आवश्यकता होती है। यह कुंजी एक व्यक्तिगत उपयोगकर्ता खाते के बजाय सीधे भंडार से जुड़ी हुई है।

यदि आप पहले से ही प्रयास कर रहे हैं और यह काम नहीं कर रहा है, तो आप अपने प्रश्न का उपयोग URL के अधिक विवरण, कुंजी फ़ाइलों के नाम और स्थान आदि के साथ करना चाहते हैं।


अब तकनीकी भाग के लिए: जेनकींस के साथ अपनी SSH कुंजी का उपयोग कैसे करें?

यदि आपके पास एक jenkinsयूनिक्स उपयोगकर्ता है, तो आप अपनी तैनाती कुंजी को स्टोर कर सकते हैं ~/.ssh/id_rsa। जेनकींस जब रेपो को ssh के माध्यम से क्लोन करने की कोशिश करता है, तो वह उस कुंजी का उपयोग करने की कोशिश करेगा।

कुछ सेटअप में, आप जेनकिन्स को स्वयं के उपयोगकर्ता खाते के रूप में नहीं चला सकते हैं, और संभवतः डिफ़ॉल्ट ssh कुंजी स्थान का उपयोग भी नहीं कर सकते हैं ~/.ssh/id_rsa। ऐसे मामलों में, आप एक अलग स्थान में एक कुंजी बना सकते हैं, उदाहरण के लिए ~/.ssh/deploy_key, और sshएक प्रविष्टि के साथ इसका उपयोग करने के लिए कॉन्फ़िगर करें ~/.ssh/config:

Host github-deploy-myproject
    HostName       github.com
    User           git
    IdentityFile   ~/.ssh/deploy_key
    IdentitiesOnly yes

चूँकि आप सभी का उपयोग करके सभी Github रिपॉजिटरी को प्रमाणित करते हैं git@github.comऔर आप नहीं चाहते कि उपरोक्त कुंजी आपके सभी कनेक्शनों के लिए Github के लिए उपयोग की जाए, इसलिए हमने एक होस्ट उर्फ github-तैनात-myproject बनाया । अब आपका क्लोन URL बन गया है

git clone github-deploy-myproject:myuser/myproject

और वह यह भी है कि आपने जेनकोइन में रिपॉजिटरी यूआरएल के रूप में क्या रखा है ।

(ध्यान दें कि आपको कार्य करने के लिए ssh: // को सामने नहीं रखना चाहिए ।)


4
Bur आपने jenkins के लिए एक कुंजी कैसे बनाई?
थियागो डिनिज

5
"परिनियोजित कुंजी" किसी भी पुराने SSH कुंजी है। मैंने जो किया वह ssh-keygenउपयोगकर्ता जेनकिन्स के रूप में चलता है ("Ubuntu सर्वर पर" जेनकींस ")। मैंने तब ~jenkins/.ssh/id_rsa.pubगितुब पर रिपॉजिटरी की तैनाती कीज़ अनुभाग में जोड़ा ।
एडम मोंसेन

10
कुछ संस्थापनों पर आपको इसे ~निर्देशिका में नहीं करने की आवश्यकता होगी । लेकिन /var/lib/jenkins/.ssh/उन कुंजियों का उपयोग करने के लिए डिफ़ॉल्ट जेनकींस उपयोगकर्ता के लिए!
Garmoncheg

7
@Garmoncheg द्वारा टिप्पणी, टिप्पणी है कि का पालन करने के लिए /var/lib/jenkins है घर निर्देशिका ( ~) के लिए jenkinsउपयोगकर्ता।
डेविड हार्कस

1
क्या किसी को पता है कि इस के साथ काम करने वाले हुक कैसे प्राप्त करें? मुझे Could not match github-deploy-myproject:myuser/myprojectहुक लॉग में त्रुटियां दिखाई दे रही हैं । मैंने इसे अपने रेपो URL के रूप में दर्ज किया है और यह काम करता है ताकि यह GitHub तक पहुंच सके। यह सिर्फ GitHub की पोस्ट है जो बिल्ड को ट्रिगर करने में विफल है।
पोगो

36

मेरे लिए यह काम करने वाली एक चीज यह सुनिश्चित करना है कि github.comवह अंदर है ~jenkins/.ssh/known_hosts


इस मुद्दे को मैं तय कर रहा था जहां एक महत्वपूर्ण जोड़ी स्थापित करने के बाद, एक धक्का धक्का विफल हो रहा था
chrisbunney

मेरे मामले में ऐसा करने का सबसे आसान तरीका 'सुडो सु जेनकिंस' है, क्योंकि जेनकिन्स उपयोगकर्ता को ठीक से लॉग इन करना संभव नहीं है। एक बार जब आप जेनकिंस की पहचान कर लेते हैं, तो आप एक मैनुअल ssh लॉगिन को github / bitbucket पर कर सकते हैं और जेनकींस उपयोगकर्ता की ओर से दूरस्थ होस्ट कुंजी स्वीकार कर सकते हैं।
LOAS

लेकिन क्या हो अगर आप जेनकिंस इनिशियलाइज़ेशन को अपने विकास के माहौल 'बूटस्ट्रैप' का हिस्सा बना लें। इसका 'मैनुअल' पहलू काम नहीं करता है
TheJediCowboy

13

यदि आपको Jenkins को अधिक एक्सेस करने की आवश्यकता है तो आपको 1 प्रोजेक्ट की आवश्यकता होगी:
1. एक github उपयोगकर्ता खाते में सार्वजनिक कुंजी
जोड़ें 2. इस उपयोगकर्ता को स्वामी (सभी प्रोजेक्ट्स तक पहुंचने के लिए) या प्रत्येक प्रोजेक्ट में एक सहयोगी के रूप में जोड़ें।

एक सिस्टम उपयोगकर्ता के लिए कई सार्वजनिक कुंजियाँ काम नहीं करेंगी क्योंकि GitHub को पहली बार मिलान की गई कुंजी मिलेगी और "ERROR: उपयोगकर्ता को अनुमति / repo2 उपयोगकर्ता / repo1 को अस्वीकार करने" जैसी त्रुटि भेजेगा

http://help.github.com/ssh-issues/


2
यदि आप सिर्फ एक रिपॉजिटरी रखते हैं, तो एक प्रमुख कुंजी का उपयोग करने के बारे में जवाब बहुत अच्छा है। लेकिन जब आप एक CI सर्वर चाहते हैं कि आप कई रिपोज में प्रोजेक्ट्स बना सकें तो आप तुरंत कई सारे सेट्स (एक जोड़ी प्रति रेपो) को मैनेज करने की स्थिति में होंगे और इस उत्तर में सूचीबद्ध दृष्टिकोण को लेना काफी आसान हो जाएगा।
21

इस लड़के की मार्गदर्शिका बताती है कि इसे ~ / .ssh
जॉर्ज ऑर्पीनेल

@ जोर्जऑर्पिनल, मेरा मानना ​​है कि लिंक में दृष्टिकोण जीथब वेबहूक को जीथब प्लगइन का उपयोग करके ट्रिगरिंग बिल्ड से रोक सकता है। मुझे एक एकल कुंजी मिली जिसमें एक रिपॉजिट और सभी रिपोज के एक्सेस का उपयोग बेहतर ढंग से किया गया था जब मैं चाहता था कि एक वेबहुक द्वारा ट्रिगर किया जाए, क्योंकि मुझे गिटहब यूआरएल से मिलान करने के लिए बिल्ड कॉन्फिगरेशन में रिपॉजिटरी URL की आवश्यकता थी, मेरे अन्य
क्रिसबूननी

6

जेनकिन्स सिस्टम पर एक उपयोगकर्ता जेनकिन्स बनाता है। जेनकींस उपयोगकर्ता के लिए ssh कुंजी उत्पन्न की जानी चाहिए। यहाँ कदम हैं:

sudo su jenkins -s /bin/bash
cd ~
mkdir .ssh // may already exist
cd .ssh
ssh-keygen

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

इस विकल्प को चुनें

निजी कुंजी: जेनकींस मास्टर से ~ / .sh


1

मुझे गिटलैब के साथ भी ऐसी ही समस्या थी। यह पता चला है कि मैंने उन उपयोगकर्ताओं को प्रतिबंधित कर दिया था जिन्हें ssh के माध्यम से लॉगिन करने की अनुमति है। यह GitHub उपयोगकर्ताओं को प्रभावित नहीं करेगा, लेकिन मामले में लोगों gitlab के लिए यहाँ अंत (और) की तरह के मुद्दों, सुनिश्चित करें कि आप जोड़ने gitके लिए AllowUsersसेटिंग में /etc/ssh/sshd_config:

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers batman git

0

एक अन्य विकल्प GitHub व्यक्तिगत एक्सेस टोकन का उपयोग करना है :

  • Https://github.com/settings/tokens/new पर जाएं
  • रेपो स्कोप जोड़ें
  • जेनकिंस में, एक GitHub स्रोत जोड़ें
  • रिपोजिटरी HTTPS URL का उपयोग करें
  • Git रेपो (नहीं SSH एक, जैसे। ) के HTTPS URL को जोड़ें ।https://github.com/my-username/my-project.git
  • क्रेडेंशियल जोड़ें
    • तरह: पासवर्ड के साथ उपयोगकर्ता नाम
    • उपयोगकर्ता नाम: GitHub उपयोगकर्ता नाम
    • पासवर्ड: व्यक्तिगत एक्सेस टोकन जो आपने GitHub पर बनाया है
    • आईडी: कुछ इस तरह github-token-for-my-username

मैंने इसका परीक्षण जेनकिंस वेर पर किया। 2.222.1 और जेनकीट्स गिटहब प्लगइन 1.29.5 एक निजी गिटहब रेपो के साथ।


-1

Sergey_mo से उत्तर का एक विकल्प जेनकिंस सर्वर पर कई ssh कुंजी बनाना है।

(हालांकि sergey_mo के जवाब के पहले टिप्पणीकार के रूप में कहा, यह अंत में एक ही कुंजी जोड़ी के प्रबंधन की तुलना में अधिक दर्दनाक हो सकता है।)


9
अब मैं देख रहा हूं कि केवल URL पोस्ट करना उत्तरों के लिए एक भयानक रणनीति क्यों है। ऊपर का लिंक मर चुका है।
देजय क्लेटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.