শংসাপত্র সহ জেনকিনস পাইপলাইন গিট এসসিএম চেকআউট করবেন?


108

আমি এই টিউটোরিয়াল অনুসরণ করছিলাম :

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.

পাইপলাইনে ক্রেডিটগুলি কনফিগার করার কোনও উপায় আছে, বা জেনকিনের লিনাক্স ব্যবহারকারীর .ssh / অনুমোদিত_কিজ ফাইলে আমাকে এসএসএইচ-কিগুলি রাখতে হবে?

আদর্শ বিশ্বে আমি পাইপলাইন চাকরি এবং রেপো-কিগুলির জন্য একটি সংগ্রহস্থল রাখতে চাই, তারপরে ডকার জেনকিনস চালু করুন এবং জেনকিনস কনসোলে কোনও কনফিগার না করে এই চাকরীগুলি এবং কীগুলি গতিশীলভাবে যুক্ত করুন।

উত্তর:


167

আপনি পাইপলাইনে নিম্নলিখিতটি ব্যবহার করতে পারেন:

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

আপনি যদি ssh url ব্যবহার করছেন তবে আপনার শংসাপত্রগুলি অবশ্যই ব্যবহারকারীর নাম + ব্যক্তিগত কী হতে হবে। আপনি যদি ssh এর পরিবর্তে https ক্লোন url ব্যবহার করেন তবে আপনার শংসাপত্রগুলি ব্যবহারকারীর নাম + পাসওয়ার্ড হওয়া উচিত।


4
এটি ঠিক করে দিয়েছে, আপনাকে ধন্যবাদ। আমি অবগত ছিলাম না যে এসএসএইচ-ইউআরএল এবং এইচটিটিপিএস-ইউআরএলটির সাথে কাজ করার জন্য বিভিন্ন শংসাপত্রের প্রয়োজন!
রেন্ডার করুন

4
এটি সহায়ক ছিল, তবে credentialsIdআইডি থেকে আসে /var/lib/jenkins/credentials.xmlকারণ এটি বের করার জন্য আমাকে संघर्ष করতে হয়েছিল।
প্রয়াগাপড

18
@ প্রিয়াগআপড, আপনার শংসাপত্রগুলির পৃষ্ঠা ( http://yourjenkinsinstall/credentials) থেকে শংসাপত্র আইডি পেতে সক্ষম হওয়া উচিত । কনফিগারেশন ফাইলগুলি ট্রল করার দরকার নেই।
সার্বান কনস্টান্টিন

4
যারা "একটি শংসাপত্রগুলি কীভাবে তৈরি করবেন" জিজ্ঞাসা করেন তাদের জন্য। এখানে এটি কীভাবে খুঁজে পাবেন। [১। জেনকিন্স হোমপেজে শংসাপত্রগুলিতে ক্লিক করুন, ২. আপনি তারপরে আপনার তৈরি সমস্ত শংসাপত্রগুলির সাথে একটি সারণী দেখতে পাবেন। ৩. আইডি এই টেবিলটিতে রয়েছে]
ভিন্সডজ্যাঙ্গো

4
আমার যখন এটি শুরু করার সাথে সেট করা হয়েছিল তখন এটি আমার জন্য URL টি সমাধান করতে পারে না ssh://। এটি অপসারণ, এটি স্থির।
মোশিষো

32

একটি নির্দিষ্ট শংসাপত্র ব্যবহার করে স্পষ্টতই চেকআউট করা

    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
        }
    }

আপনি একক জেনকিনস ফাইলের মধ্যে উভয় পর্যায়ে ব্যবহার করতে পারেন।


4
কিভাবে এই শংসাপত্র উত্পন্ন?
সংজ্ঞায়িত

এক
নজরে

আমি শংসাপত্রের ফাইলটি কোথায় সঞ্চয় করব? জেনকিনস সাইস: সতর্কতা: শংসাপত্র আইড "জেনকিনস_কি" খুঁজে পাওয়া যায় নি।
দিনু নিকোলে

@ ডিনু শংসাপত্রগুলি জেনকিনসে তৈরি করা হয়, প্লাগইন ইনস্টল থাকলে এটি আপনাকে মেনুতে দেখতে হবে। সমর্থন.
cloudbees.com/hc/en-us/articles/…

4
ধন্যবাদ! এমন কেউ যিনি এখানে পুরোপুরি কিছুটা পোস্ট করেছেন এবং এখানে কিছুটা বিট করেছেন, এবং আশা করছেন লোকেরা জাদুকরভাবে জানেন যে এর বাকি অংশগুলির জন্য কী রাখবেন।

25

আপনি যদি ssh শংসাপত্র ব্যবহার করতে চান,

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

আপনি যদি ব্যবহারকারীর নাম এবং পাসওয়ার্ডের শংসাপত্রগুলি ব্যবহার করতে চান তবে আপনাকে @ সার্বান উল্লিখিত হিসাবে HTTP ক্লোন ব্যবহার করতে হবে।

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

10
কিভাবে এই শংসাপত্র উত্পন্ন?
সংজ্ঞায়িত

আমি এর মতো শংসাপত্র তৈরি করেছি: help.github.com/en/articles/… , আমি আমার গিটের জন্য পাবলিক কী যুক্ত করেছি, তবে আমাকে এই ফাইলটি কোথায় সঞ্চয় করতে হবে। জেনকিন্স বলেছেন: সতর্কতা: ক্রেডেনশিয়াল আইড "জেনকিনস_কি" খুঁজে পাওয়া যায় নি।
দিনু নিকোলে

@ দিনুনিকোলে দয়া করে Adding new global credentials -> 7.নীচের লিঙ্কটিতে উল্লেখ করুন। jenkins.io/doc/book/using/used-credentials
এফ-সোসাইটি

16

গিট প্লাগইন GitSCM ব্যবহার করে আপনাকে একটি দ্রুত উদাহরণ যোগ করা :

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

আপনার পাইপলাইনে

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

আপনি কীভাবে পুরো দলের জন্য একটি বৈশ্বিক শংসাপত্র ব্যবহার করবেন জানেন? বা এমন কোনও উপায় রয়েছে যাতে যে কোনও বিকাশকারী গিথুবকে চাপ দিচ্ছেন, তারা জেনকিনসফাইলে এটি প্রকাশ না করেই তাদের শংসাপত্রগুলি সরবরাহ করতে পারে
হেনেন

আপনি নিজের ডেভ টিমে আপনার নিজস্ব যুক্তি সম্পর্কিত আপনার মেকানিজম পরিচালনা করতে পারেন এবং প্রতিটি গ্রুপের জন্য বিভিন্ন শংসাপত্র কী ব্যবহার করতে পারেন। উদাহরণস্বরূপ: যদি কোনও গিথুব ব্যবহারকারী 'ব্যাকএন্ড_ডিভলভারস' ব্যবহারের তালিকায় থাকে <gitCredentialsGroupA>, যদি গিথুব ব্যবহারকারী 'ফ্রন্টএন্ড_ডিভলভারস' ব্যবহারের তালিকাতে <gitCredentialsGroupB>, আপনার নিজের ব্যবহারের ক্ষেত্রে সম্পর্কিত আপনার পদ্ধতিটি ডিজাইন করুন।
আভিভামগ

আপনি এই শংসাপত্র কোথায় রাখবেন? এটি কি জেনকিনস শংসাপত্র প্লাগইনের সাথে রয়েছে?
হেনেন

জেনকিনস শংসাপত্রাদি ডকুমেন্টেশন ব্যবহার করুন - jenkins.io/doc/book/used/used-credentials
avivamg

4
আমি এর checkoutমতো একটি সাধারণ উদাহরণের জন্য অনেকদূর অনুসন্ধান করেছি , আপনাকে ধন্যবাদ।
301_ মোভেড_প্রেমেন্ট

1

এটি আলোচনায় যুক্ত করার মতো মূল্য ... আমি কী করেছিলাম তা আমাকে সাহায্য করেছিল ... যেহেতু পাইপলাইনটি ডকারের চিত্রের মধ্যে একটি ওয়ার্কস্পেসের মধ্যে চালিত হয় যা প্রতিবার চালিত হওয়ার পরে পরিষ্কার হয়। আমি আমার পাইপলাইনের মধ্যে রেপোতে প্রয়োজনীয় ক্রিয়াকলাপ সম্পাদনের জন্য প্রয়োজনীয় শংসাপত্রগুলি ধরেছিলাম এবং সেগুলিকে একটি .netrc ফাইলে সংরক্ষণ করেছি। এটি আমাকে গিট রেপো ক্রিয়াকলাপ সাফল্যের সাথে অনুমোদিত করতে দেয়।

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}']]
            ])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.