2013-09-03 8 views
5

में एक ग्रूवी गतिशील पैरामीटर पर काम नाम पाने के लिए मैं इस उदाहरण में नाम नौकरी पाने की जरूरत है, मैं एक कोड के लिए कि कोड के साथ निर्माण पैरामीटर के पिछले मूल्य प्राप्त हैकैसे जेनकींस

jenkins.model.Jenkins.instance.getItem("nameOfJob").lastBuild.getBuildVariables().get("NameOfParameter"); 

अब नौकरी का नाम कठिन कोड है, मुझे यह नाम मिलना चाहिए कि यह नाम वर्तमान नौकरी का नाम होगा, मैं कैसे नहीं कर सकता?

धन्यवाद

उत्तर

8

ग्रोवी डायनेमिक पैरामीटर के पास सामान्य पर्यावरण चरों तक पहुंच नहीं है जो शेष जेनकिन्स नौकरी के लिए गोपनीय है।

यहाँ काम नाम पाने के लिए काम कर रहे हैक है:

def build = Thread.currentThread().toString() 
def regexp= ".+?/job/([^/]+)/.*" 
def match = build =~ regexp 
def jobName = match[0][1] 
4

आप एक परियोजना में एक कदम चला रहे हैं तो वहाँ एक वातावरण चर JOB_NAME

ग्रूवी में आप

String jobName = System.getenv('JOB_NAME') 

उपयोग कर सकते हैं जो कि आप इसे फिर निर्माण के बाद चाहते हैं इस उत्तर को जांचें How to get specific information about the current build project in Jenkins with Groovy?

अतिरिक्त प्रश्न के अनुसार, सेटअप चरण में जेनकींस जॉब नाम तक पहुंच प्राप्त करने के लिए आपको आवश्यकता है EnvInject plugin जो ग्रूवी का समर्थन करता है का उपयोग करने के - यह एक नक्शा

println "currentJob -->${currentJob}" 
println "currentBuild --> ${currentBuild}" 

[currentJob: currentJob, currentBuild: currentBuild] 

यह आउटपुट जब मैं एक खोल काम का उपयोग नए माहौल

Started by user anonymous 
[EnvInject] - Loading node environment variables. 
[EnvInject] - Preparing an environment for the build. 
[EnvInject] - Keeping Jenkins system variables. 
[EnvInject] - Keeping Jenkins build variables. 
[EnvInject] - Evaluation the following Groovy script content: 

println "currentJob -->${currentJob}" 
println "currentBuild --> ${currentBuild}" 

[currentJob: currentJob, currentBuild: currentBuild] 

currentJob -->[email protected][_xxx] 
currentBuild --> _xxx #6 
[EnvInject] - Injecting contributions. 
Building on master in workspace /var/lib/jenkins/workspace/_xxx 
[_xxx] $ /bin/sh -xe /tmp/hudson3812821436584477615.sh 
+ echo _xxx #6 
_xxx #6 
+ echo [email protected][_xxx] 
[email protected][_xxx] 
Finished: SUCCESS 

प्रतिध्वनित करने के लिए आप कुछ स्ट्रिंग परिवर्तन करने की ज़रूरत है वापस जाने के लिए की जरूरत है नौकरी को अलग करने और

+0

आपको बहुत धन्यवाद –

+0

मैन, गतिशील पैरामीटर में यह –

+1

काम नहीं करता है आप सही हैं। यदि आप इसे गतिशील संपत्ति 'System.getenv() में करते हैं। प्रत्येक {println it}' तो यह जेनकिन्स पर्यावरण की सूची नहीं देता है। – KeepCalmAndCarryOn

2

uno पसंद प्लगइन पैरामीटर ग्रूवी स्क्रिप्ट से मेरे लिए काम करता है के बाद (पहले का निर्माण ही है का मतलब है):

def job = this.binding.jenkinsProject 

आप कार्य का नाम है, तो में रुचि रखते हैं:

def jobName = this.binding.jenkinsProject.name 
+0

बस 'जेनकिन्सप्रोजेक्ट' पर कॉल करें? – akostadinov

0
(Thread.currentThread().toString() =~ /job\/(.*?)\//)[0][1]