यदि आप एक विशिष्ट शाखा का निर्माण करते हैं, तो आप केवल एक निर्माण चरण / चरण कैसे चलाते हैं?
उदाहरण के लिए, केवल परिनियोजन चरण चलाएँ, यदि शाखा को कॉल किया जाता है deployment
, तो बाकी सब समान छोड़ दें।
जवाबों:
घोषणात्मक पाइपलाइन सिंटैक्स में ही कर रहे हैं, नीचे कुछ उदाहरण हैं:
stage('master-branch-stuff'){
agent any
when{
branch 'master'
}
steps {
echo 'run this stage - ony if the branch = master branch'
}
}
<b
stage('feature-branch-stuff') {
agent label:'test-node'
when { branch "feature/*" }
steps {
echo 'run this stage - only if the branch name started with feature/'
}
}
<b
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'
}
}
<b
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/pipeline/syntax/#when
beforeAgent true
सशर्त को चलाने के लिए एजेंट को कताई से बचने के लिए निर्देश सेट किया जा सकता है, अगर सशर्त को यह तय करने के लिए गिट स्थिति की आवश्यकता नहीं है कि:
when { beforeAgent true; expression { return isStageConfigured(config) } }
रिलीज पोस्ट और डॉक्स
UPDATE
न्यू व्हेन क्लॉज
REF: https://jenkins.io/blog/2018/04/09/whats-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'
}
}
}
}
}
}