আপনি যদি কোনও নির্দিষ্ট শাখা তৈরি করেন তবে কীভাবে আপনি বিল্ড স্টেপ / পর্যায় পরিচালনা করবেন?
উদাহরণস্বরূপ, শাখাটি ডাকা হলে কেবল একটি স্থাপনার পদক্ষেপ চালান deployment
, সমস্ত কিছু একই রেখে।
উত্তর:
ঘোষিত পাইপলাইন সিনট্যাক্সে একই কাজ করা নীচে কয়েকটি উদাহরণ রয়েছে:
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 পুল অনুরোধ তৈরি করে তবে এটি সত্য হবে। আপনি পরিবর্তনের অনুরোধের বিরুদ্ধে আরও বিস্তারিত চেক করতে পারেন, আপনাকে জিজ্ঞাসা করার অনুমতি দিয়ে "" এটি কি মাস্টার শাখার বিরুদ্ধে পরিবর্তনের অনুরোধ? " এবং আরো অনেক কিছু.
বিল্ডিংট্যাগ - একটি সাধারণ শর্ত যা কেবল শাখা বা নির্দিষ্ট অঙ্গীকারের রেফারেন্সের চেয়ে পাইপলাইনটি এসসিএম-এ কোনও ট্যাগের বিরুদ্ধে চলছে কিনা তা পরীক্ষা করে।
ট্যাগ - বিল্ডিংট্যাগের আরও বিশদ সমতুল্য, আপনাকে ট্যাগের নামটিই পরীক্ষা করতে দেয়।
when{}
শর্তটি মিথ্যা হিসাবে মূল্যায়ন করলেও আমি জেনকিন্স নির্দিষ্ট এজেন্টকে স্পিন করতে দেখি । :(
beforeAgent true
তা এড়াতে ব্যবহার করতে পারেন
beforeAgent
এখন এটির জন্য একঝাঁক কাজ ।
কেবল ব্যবহার করুন if
এবং env.BRANCH_NAME
উদাহরণস্বরূপ:
if (env.BRANCH_NAME == "deployment") {
... do some build ...
} else {
... do something else ...
}
অন্যান্য উত্তর অনুসারে আমি সমান্তরাল পর্যায়ের দৃশ্যের যোগ করছি:
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'
}
}
}
}
}
}