क्रेडेंशियल्स के साथ चेकआउट जेनकींस पाइप लाइन Git SCM?


104

मैं पीछा कर रहा था इस ट्यूटोरियल :

node {
  git url: 'https://github.com/joe_user/simple-maven-project-with-tests.git'
  ...
}

हालांकि यह नहीं बताता है कि क्रेडेंशियल्स कैसे जोड़ें। जेनकिंस में विशिष्ट "क्रेडेंशियल्स" अनुभाग होता है जहां आप उपयोगकर्ता उपयोगकर्ता को परिभाषित करते हैं और पास करते हैं, और उसके बाद नौकरी में उपयोग करने के लिए आईडी प्राप्त करते हैं, लेकिन मैं पाइपलाइन निर्देशों में इसका उपयोग कैसे करूं?

मैंने कोशिश की:

git([url: 'git@bitbucket.org:company/repo.git', branch: 'master', credentialsId: '12345-1234-4696-af25-123455'])

कोई भाग्य नहीं:

stderr: Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

क्या पाइप लाइन में क्रेडेंशियल को कॉन्फ़िगर करने का एक तरीका है, या क्या मुझे जेएनकिन के लिनक्स उपयोगकर्ता के लिए एसएसएच-कीज़ लगाना है। एसश / अधिकृत_की फ़ाइल?

आदर्श दुनिया में मैं पाइपलाइन जॉब्स और रेपो-कीज़ के लिए एक रिपॉजिटरी रखना चाहता हूं, फिर डॉकर जेनकींस लॉन्च करें, और गतिशील रूप से जेनकिंस कंसोल में कुछ भी कॉन्फ़िगर किए बिना इन नौकरियों और कुंजियों को जोड़ें।

जवाबों:


161

आप एक पाइपलाइन में निम्नलिखित का उपयोग कर सकते हैं:

git branch: 'master',
    credentialsId: '12345-1234-4696-af25-123455',
    url: 'ssh://git@bitbucket.org:company/repo.git'

यदि आप ssh url का उपयोग कर रहे हैं तो आपके क्रेडेंशियल्स का उपयोगकर्ता नाम + निजी कुंजी होना चाहिए। यदि आप ssh एक के बजाय https क्लोन url का उपयोग कर रहे हैं, तो आपके क्रेडेंशियल का उपयोगकर्ता नाम + पासवर्ड होना चाहिए।


1
यह तय है, धन्यवाद। मुझे पता नहीं था कि SSH-url और HTTPS-url के साथ काम करने के लिए अलग-अलग क्रेडेंशियल्स की आवश्यकता होती है!
रेंडर

3
यह मददगार था, लेकिन credentialsIdआईडी से आता है /var/lib/jenkins/credentials.xmlक्योंकि मुझे यह पता लगाने के लिए संघर्ष करना पड़ा था।
प्रयागपद

17
@prayagupd, आपको क्रेडेंशियल पृष्ठ ( http://yourjenkinsinstall/credentials) से क्रेडेंशियल आईडी प्राप्त करने में सक्षम होना चाहिए । कॉन्फ़िगरेशन फ़ाइलों को ट्रॉल करने की आवश्यकता नहीं है।
सेर्बन कॉन्स्टेंटिन

4
उन लोगों के लिए जो "कैसे एक क्रेडेंशियल उत्पन्न करने के लिए पूछते हैं"। यहाँ कैसे इसे खोजने के लिए। [1। जेनकिंस होमपेज पर क्रेडेंशियल्स पर क्लिक करें, 2. फिर आप अपने द्वारा बनाए गए सभी क्रेडेंशियल्स के साथ एक तालिका देखेंगे। 3. आईडी इस तालिका में है]
vincedjango

1
जब मैंने इसे शुरू करने के लिए सेट किया तो मेरे लिए यह URL को हल नहीं कर सका ssh://। इसे हटाकर इसे ठीक कर दिया।
मोशीशो

30

विशिष्ट क्रेडेंशियल्स का उपयोग करके स्पष्ट रूप से चेकआउट करना

    stage('Checkout external proj') {
        steps {
            git branch: 'my_specific_branch',
                credentialsId: 'my_cred_id',
                url: 'ssh://git@test.com/proj/test_proj.git'

            sh "ls -lat"
        }
    }

वर्तमान जेनकिंस जॉब में कॉन्फ़िगर किए गए क्रेडेंशियल्स के आधार पर चेकआउट करने के लिए

    stage('Checkout code') {
        steps {
            checkout scm
        }
    }

आप किसी एकल जेनकिंस फ़ाइल के भीतर दोनों चरणों का उपयोग कर सकते हैं।


2
यह क्रेडेंशियल कैसे उत्पन्न करें?
अपरिभाषित


मुझे क्रेडेंशियल फ़ाइल कहाँ संग्रहीत करनी चाहिए। jenkins sais: चेतावनी: CredentialId "jenkins_key" नहीं मिल सका।
दीनू निकोले

@ डिनु क्रेडेंशियल्स जेनकिन्स में बनाए गए हैं, आपको इसे मुख्य मेनू में देखना चाहिए यदि प्लगइन स्थापित है। support.cloudbees.com/hc/en-us/articles/…
उपुल डोलुवेरा

1
धन्यवाद! कोई व्यक्ति जिसने यहाँ और यहाँ केवल बिट के बजाय पूरी चीज़ पोस्ट की है, और लोगों को उम्मीद है कि जादुई रूप से पता है कि इसे बाकी के लिए क्या रखा जाए।

25

यदि आप ssh क्रेडेंशियल्स का उपयोग करना चाहते हैं,

  git(
       url: 'git@github.com<repo_name>.git',
       credentialsId: 'xpc',
       branch: "${branch}"
    )

यदि आप उपयोगकर्ता नाम और पासवर्ड क्रेडेंशियल का उपयोग करना चाहते हैं, तो आपको http क्लोन का उपयोग करना होगा जैसा कि @Serban ने उल्लेख किया है।

    git(
       url: 'https://github.com/<repo_name>.git',
       credentialsId: 'xpc',
       branch: "${branch}"
    )

10
यह क्रेडेंशियल कैसे उत्पन्न करें?
अपरिभाषित

मैंने इस तरह से क्रेडेंशियल्स उत्पन्न किए: help.github.com/en/articles/… , मैंने अपने git में सार्वजनिक कुंजी जोड़ी, लेकिन मुझे इस फ़ाइल को कहाँ संग्रहीत करना है। जेनकिंस का कहना है: चेतावनी: क्रेडेंशियलआईड "जेनकिंस_की" नहीं मिल सका।
दीनू निकोले

@DinuNicolae कृपया Adding new global credentials -> 7.निम्न लिंक पर देखें । jenkins.io/doc/book/use/use-credentials
f- समाज

14

Git plugin GitSCM का उपयोग करके आपको एक त्वरित उदाहरण जोड़ना :

    checkout([
        $class: 'GitSCM', 
        branches: [[name: '*/master']], 
        doGenerateSubmoduleConfigurations: false, 
        extensions: [[$class: 'CleanCheckout']], 
        submoduleCfg: [], 
        userRemoteConfigs: [[credentialsId: '<gitCredentials>', url: '<gitRepoURL>']]
    ])

अपनी पाइपलाइन में

stage('checkout'){
    steps{
        script{
            checkout
        }
    }
}

क्या आप जानते हैं कि पूरी टीम के लिए वैश्विक साख का उपयोग कैसे किया जाए? या फिर कोई तरीका है ताकि जो भी डेवलपर
जीथब

आप अपने देव टीम में अपने स्वयं के तर्क से संबंधित तंत्र का प्रबंधन कर सकते हैं, और प्रत्येक समूह के लिए विभिन्न क्रेडेंशियल्स कुंजियों का उपयोग कर सकते हैं। उदाहरण के लिए: यदि कोई Github उपयोगकर्ता 'backend_developers' उपयोग की सूची में है <gitCredentialsGroupA>, यदि Github उपयोगकर्ता 'frontend_developers' सूची का उपयोग करते हैं, तो <gitCredentialsGroupB> का उपयोग करें, अपने स्वयं के उपयोग के मामले से संबंधित अपने तंत्र को डिज़ाइन करें।
अविवगम

आप इन साख को कहाँ रखेंगे? यह जेनकींस क्रेडेंशियल प्लगइन के साथ है?
हेनन

जेनकिंस क्रेडेंशियल्स प्रलेखन का उपयोग करें - jenkins.io/doc/book/use/use-credentials
avivamg

1
मैंने checkoutइस तरह के एक सरल उदाहरण के लिए दूर-दूर खोज की है , धन्यवाद।
301_Moved_Permanently

1

चर्चा के लिए इसे जोड़ने लायक क्या है ... मैंने जो किया वह मेरी मदद करने के लिए हुआ ... चूंकि पाइपलाइन कार्यस्थल के भीतर एक डॉक छवि के भीतर चलाई जाती है जिसे हर बार चलाने के बाद साफ किया जाता है। मैंने अपनी पाइपलाइन के भीतर रेपो पर आवश्यक संचालन करने के लिए आवश्यक क्रेडेंशियल्स को पकड़ा और उन्हें एक .netrc फ़ाइल में संग्रहीत किया। इसने मुझे git रेपो संचालन को सफलतापूर्वक अधिकृत करने की अनुमति दी।

withCredentials([usernamePassword(credentialsId: '<credentials-id>', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
    sh '''
        printf "machine github.com\nlogin $GIT_USERNAME\n password $GIT_PASSWORD" >> ~/.netrc
        // continue script as necessary working with git repo...
    '''
}

1

इसका उपयोग करके मेरे लिए हल हो गया

checkout scm: ([
                    $class: 'GitSCM',
                    userRemoteConfigs: [[credentialsId: '******',url: ${project_url}]],
                    branches: [[name: 'refs/tags/${project_tag}']]
            ])
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.