2017-05-03 10 views
5

मैं अपनी शाखा का नाम जेनकींस ग्रोवी स्क्रिप्ट के लिए प्राप्त करने की कोशिश कर रहा हूं। मुझे वर्तमान शाखा का नाम नहीं मिल रहा है। मैं निम्नलिखित कोशिश करता हूं:जेनकींस पाइपलाइन शाखा का नाम शून्य देता है

stage('Check out code') 
checkout scm 
echo "My branch is: ${env.BRANCH_NAME}" 

यहां आउटपुट है - यह हमेशा शून्य देता है।

Checking out Revision 33b531b2f1caaf8b64d968e437306f39d2dba1da (origin/pipeline) 
    > git.exe config core.sparsecheckout # timeout=10 
    > git.exe checkout -f 33b531b2f1caaf8b64d968e437306f39d2dba1da 
[Pipeline] echo 
My branch is: null 

क्या मुझे कुछ याद आ रही है?

+0

की कोशिश की पता नहीं है: 'गूंज" मेरे शाखा है: $ {BRANCH_NAME} "' ? –

+1

@tim_yates ने कोशिश की कि उसी परिणाम के साथ – pogorman

उत्तर

4
git.exe checkout -f 33b531b2f1caaf8b64d968e437306f39d2dba1da 

कि Git रेपो एक detached HEAD mode, जो अपने स्वभाव से ही, कोई शाखा है में प्रवेश होगा।

Jenkinsfile से:

चेकआउट स्रोत नियंत्रण से कोड चेकआउट होगा; scm एक विशेष चर है जो इस पाइपलाइन रन को ट्रिगर करने वाले विशिष्ट संशोधन को क्लोन करने के लिए चेकआउट चरण को निर्देशित करता है।

तो ${env.BRANCH_NAME} शून्य है।

"Jenkins Workflow Checkout Accessing BRANCH_NAME and GIT_COMMIT" में उल्लेख किया है, तो आप SHA1 तुम सिर्फ ग्रूवी वाक्य रचना के साथ की जाँच की (एक जेनकींस पाइपलाइन डीएसएल में अनुकूलित किया जा करने के लिए) प्राप्त कर सकते हैं के रूप में:

sh 'git rev-parse HEAD > commit' 
def commit = readFile('commit').trim() 
+0

इसका मतलब है कि आप यह अनुमान लगाने का प्रयास कर सकते हैं कि कौन सी शाखा चेक आउट SHA1 से शामिल है: http://stackoverflow.com/a/1419637/6309 – VonC

11

यह चर केवल एक multibranch pipline में काम करता है :

BRANCH_NAME एक मल्टीब्रैंच प्रोजेक्ट के लिए, यह शाखा के नाम पर सेट किया जाएगा, उदाहरण के लिए यदि आप मास्टर से उत्पादन में तैनाती करना चाहते हैं लेकिन फीचर शाखाओं से नहीं।

मैं एक सामान्य pipline

+0

अच्छा बिंदु, मेरे उत्तर से अधिक सटीक । +1 – VonC

1

मेरे वैकल्पिक हल में परीक्षण किया गया था, अगर किसी और के लिए काम ..

def branchName = getCurrentBranch() 
echo 'My branch is' + branchName 

def getCurrentBranch() { 
    return sh (
     script: 'git rev-parse --abbrev-ref HEAD', 
     returnStdout: true 
    ).trim() 
} 
संबंधित मुद्दे