জেনকিনস পাইপলাইনে শর্তাধীন পদক্ষেপ / মঞ্চ


90

আপনি যদি কোনও নির্দিষ্ট শাখা তৈরি করেন তবে কীভাবে আপনি বিল্ড স্টেপ / পর্যায় পরিচালনা করবেন?

উদাহরণস্বরূপ, শাখাটি ডাকা হলে কেবল একটি স্থাপনার পদক্ষেপ চালান deployment, সমস্ত কিছু একই রেখে।

উত্তর:


180

ঘোষিত পাইপলাইন সিনট্যাক্সে একই কাজ করা নীচে কয়েকটি উদাহরণ রয়েছে:

stage('master-branch-stuff'){
  agent any
  when{
    branch 'master'
  }
  steps {
    echo 'run this stage - ony if the branch = master branch'
  }
}

<খ

stage('feature-branch-stuff') {
    agent label:'test-node'
    when { branch "feature/*" }
    steps {
        echo 'run this stage - only if the branch name started with feature/'
    }
}

<খ

stage('expression-branch') {
    agent label:'some-node'
    when {
    expression {
        return env.BRANCH_NAME != 'master';
        }
    }
    steps {
        echo 'run this stage - when branch is not equal to master'
    }
}

<খ

stage('env-specific-stuff') {
    agent label:'test-node'
    when { 
      environment name: 'NAME', value: 'this' 
    }
    steps {
        echo 'run this stage - only if the env name and value matches'
    }
}

আরও কার্যকর উপায় আসার উপায় - https://issues.jenkins-ci.org/browse/JENKINS-41187
এছাড়াও দেখুন - https://jenkins.io/doc/book/pipline/syntax/# কখন


beforeAgent trueশর্তসাপেক্ষে চালানোর জন্য কোনও এজেন্টকে কাটানো এড়ানোর জন্য নির্দেশটি সেট করা যেতে পারে, যদি শর্তসাপেক্ষে গিট স্টেটের প্রয়োজন হয় না তা চালানোর সিদ্ধান্ত নেওয়ার জন্য:

when { beforeAgent true; expression { return isStageConfigured(config) } }

পোস্ট এবং ডকস প্রকাশ করুন



নতুন যখন ক্লিনস
রেফ আপডেট করুন : https://jenkins.io/blog/2018/04/09/what-in-declarative

সমান - দুটি মানের তুলনা করে - স্ট্রিং, ভেরিয়েবল, সংখ্যা, বুলিয়ান - এবং যদি তারা সমান হয় তবে সত্যটি প্রদান করে। আমি সত্যই নিশ্চিত নই যে আমরা কীভাবে এর আগে যোগ করা মিস করেছি! আপনি নট {সমান ...} সংমিশ্রণটি ব্যবহার করে "না সমান সমান" তুলনা করতে পারেন।

changeRequest - এটির সহজতম ফর্মে, যদি এই পাইপলাইন কোনও পরিবর্তন অনুরোধ যেমন GitHub পুল অনুরোধ তৈরি করে তবে এটি সত্য হবে। আপনি পরিবর্তনের অনুরোধের বিরুদ্ধে আরও বিস্তারিত চেক করতে পারেন, আপনাকে জিজ্ঞাসা করার অনুমতি দিয়ে "" এটি কি মাস্টার শাখার বিরুদ্ধে পরিবর্তনের অনুরোধ? " এবং আরো অনেক কিছু.

বিল্ডিংট্যাগ - একটি সাধারণ শর্ত যা কেবল শাখা বা নির্দিষ্ট অঙ্গীকারের রেফারেন্সের চেয়ে পাইপলাইনটি এসসিএম-এ কোনও ট্যাগের বিরুদ্ধে চলছে কিনা তা পরীক্ষা করে।

ট্যাগ - বিল্ডিংট্যাগের আরও বিশদ সমতুল্য, আপনাকে ট্যাগের নামটিই পরীক্ষা করতে দেয়।


4
পোস্ট পোস্ট নির্মাণের জন্য আমি কি এটি ব্যবহার করতে পারি?
ডগ

4
when{}শর্তটি মিথ্যা হিসাবে মূল্যায়ন করলেও আমি জেনকিন্স নির্দিষ্ট এজেন্টকে স্পিন করতে দেখি । :(
ট্রেজকাজ

4
@ ট্রেজকাজ আপনি এখন beforeAgent trueতা এড়াতে ব্যবহার করতে পারেন
নিক জোনস

4
@ নিক জোনস সত্যই, beforeAgentএখন এটির জন্য একঝাঁক কাজ ।
ট্রেজকাজ

45

কেবল ব্যবহার করুন ifএবং env.BRANCH_NAMEউদাহরণস্বরূপ:

    if (env.BRANCH_NAME == "deployment") {                                          
        ... do some build ...
    } else {                                   
        ... do something else ...
    }                                                                       

4
যদি মঞ্চের আগে বা পরে হওয়া উচিত?
জেট

4
মঞ্চের আগে, শাখাগুলি যদি পর্যায়ে থাকে তবে ভিতরে থাকতে পারে
ক্রিজিসটফ ক্রোসো

স্থানটি বাস্তবে গুরুত্বপূর্ণ বলে মনে করবেন না
omu_negru

9
আমি ঘোষিত পাইপলাইন দিয়ে এই কাজটি পেতে পারি না। এটি কি ঘোষিত পাইপলাইনগুলির সাথে কাজ করে? কর্মপ্রবাহ স্ক্রিপ্ট: 9: প্রত্যাশিত একটি লাইন @ লাইন 9, কলাম 9 9. যদি (env.BRANCH_NAME == "স্থাপনা") {ওয়ার্কফ্লো স্ক্রিপ্ট: 8: কোনও লাইন 8 লাইন 8, কলাম 5 পর্যায়ে নির্দিষ্ট করা হয়নি {
পিচব্ল্যাক 408

4
এটি কেবল স্ক্রিপ্টযুক্ত পাইপলাইনগুলিতে কাজ করে। ঘোষিত পাইপলাইনগুলির জন্য, আপনার পদক্ষেপের ভিতরে script script স্ক্রিপ্ট ব্যবহার করা উচিত।
পেড্রো হেনরিক 18

1

অন্যান্য উত্তর অনুসারে আমি সমান্তরাল পর্যায়ের দৃশ্যের যোগ করছি:

pipeline {
    agent any
    stages {
        stage('some parallel stage') {
            parallel {
                stage('parallel stage 1') {
                    when {
                      expression { ENV == "something" }
                    }
                    steps {
                        echo 'something'
                    }
                }
                stage('parallel stage 2') {
                    steps {
                        echo 'something'
                    }
                }
            }
        }
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.