2013-09-03 5 views
5

Ich brauche den Namen Job in diesem Beispiel zu bekommen, habe ich einen Code für den vorherigen Wert des Parameters Build erhalte mit diesem CodeWie kann man den Namen auf einem starken dynamischen Parameter in Jenkins zu bekommen

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

Die Name des Jobs ist jetzt hart codiert, ich brauche diesen Name wird der Name des aktuellen Jobs sein, Wie kann ich tun?

Danke

Antwort

8

Groovy dynamische Parameter bauen keinen Zugang zu den üblichen Umgebungsvariablen, die der Rest des jenkins Jobs ist eingeweiht.

hier ein Arbeits Hack die Jobnamen zu erhalten:

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

Wenn Sie einen Schritt in einem Projekt ausgeführt wird, dann gibt es eine Umgebungsvariable JOB_NAME

, die in groovy Sie

String jobName = System.getenv('JOB_NAME') 

zugreifen Wenn Sie es bauen stellen dann Überprüfen Sie diese Antwort How to get specific information about the current build project in Jenkins with Groovy?

Wie bei der zusätzlichen Frage, um Zugriff auf den Jenkins-Job-Namen in der Setup-Phase benötigen Sie um die EnvInject plugin zu verwenden, die stark unterstützt - die neue Umgebung

braucht es eine Karte zurückzukehren

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

[currentJob: currentJob, currentBuild: currentBuild] 

Dies ist der Ausgang, wenn ich ein Shell-Job verwenden

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 

Sie zu Echo brauchen eine String-Manipulation zu tun den Job zu trennen und

+0

Vielen Dank –

+0

Mann, in den dynamischen Parameter dieses –

+1

nicht funktionieren Du hast Recht. wenn Sie dies in der dynamischen Eigenschaft 'System.getenv() tun. jeder {println es}' dann ist es nicht die JENKINS Umgebung auflisten. – KeepCalmAndCarryOn

2

Nach Arbeiten für mich von dem uno-Wahl-Plugin Parameter Groovy-Skript (bedeutet, bevor die Build gebunden ist):

def job = this.binding.jenkinsProject 

Wenn Sie in den Jobnamen interessiert, dann:

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

einfach anrufen 'jenkinsProject'? – akostadinov

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