2016-07-22 13 views
7

Ich versuche, eine poc Jenkins-Pipeline als Code zu tun. Ich verwende das Github-Organisationsordner-Plugin, um Github-Organisationen zu scannen und Jobs pro Zweig zu erstellen. Gibt es eine Möglichkeit, die Namen für die Pipeline-Jobs, die von Jenkinsfile abgerufen werden, explizit zu definieren? Ich möchte auch einige Beschreibungen für die Jobs hinzufügen.Legen Sie den Namen und die Beschreibung der Pipeline von Jenkinsfile

+0

Können Sie die Snippets von Jenkinsfile anzeigen? – Jayan

+0

für andere, die die Job-/Projektbeschreibung anstelle der Build-Beschreibung ändern möchten, siehe https://stackoverflow.com/questions/39200948/jenkins-multibranch-change-job-description-from-groovy – Mark

Antwort

11

Sie müssen currentBuild wie unten verwenden. Der node Teil ist wichtig,

node { 
    currentBuild.displayName = "$yournamevariable-$another" 
    currentBuild.description = "$yourdescriptionvariable-$another" 
} 

Edit: über eine bauen umbenennt, wo als Original Frage ist über Jobs umbenannt. Nach Skript in Pipeline wird das tun (dies erfordert entsprechenden Berechtigungen)

item = Jenkins.instance.getItemByFullName("originalJobName") 
item.setDescription("This description was changed by script") 
item.save() 
item.renameTo("newJobName") 
+1

Hallo Jayan, Danke für die Antworten. Ich habe bereits die Option currentBuild.description ausprobiert. Es erschien als ein Tag unter der Build-Nummer im Abschnitt Build History. Aber ich möchte diese so einstellen, dass sie unter der Option "Konfiguration anzeigen" für die Jobs angezeigt werden. Ist das machbar? – HarshaB

+0

Habe in den Plugin-Optionen keinen Weg gesehen. Die obige Antwort wurde aktualisiert, um renameTo api zu verwenden (was Sie vielleicht schon gesehen haben) – Jayan

+0

Vielen Dank Jayan. Das hat wie ein Zauber funktioniert. Genau das, was ich wollte. Ich musste sicherstellen, dass ich diese Skripts ausführen lasse, indem ich sie unter Jenkins-> In-Process-Skript-Genehmigung genehmige. Gibt es eine Möglichkeit, neue Klassen unter Genehmigung hier manuell hinzuzufügen? Die Art und Weise, wie ich es jetzt gemacht habe, war, indem ich die Option "approve" für alle Klassen ausgewählt habe, die ich in diesem Skript nacheinander verwendet habe. Ich konnte keine Klassen manuell eingeben und genehmigen. – HarshaB

2

Ich habe versucht, Code-Schnipsel aus akzeptierte Antwort auf verwendet, um meine Jenkins Pipeline in Jenkinsfile zu beschreiben. Ich musste Codeschnipsel in Funktion mit @NonCPS Anmerkung einwickeln und def für Einzelteilvariable benutzen. Ich habe das Code-Snippet im Root von Jenkinsfile platziert, nicht im Knotenbereich.

@NonCPS 
def setDescription() { 
    def item = Jenkins.instance.getItemByFullName(env.JOB_NAME) 
    item.setDescription("Some description.") 
    item.save() 
} 

setDescription() 
0

Ich bin an die Partei auf diesem späten, aber diese Frage hat mich gezwungen, in den #jenkins chatten, wo ich heute die meisten meiner Tage verbrachte. Ich möchte @ tang^aus diesem Chat dafür danken, dass er geholfen hat, dies in einer anmutigen Weise für meine Situation zu lösen.

Um die Job-Beschreibung und JOB Anzeigenamen für ein Kind in einer Multi-Zweig DEKLARATIVE Pipeline verwendet die folgenden Schritte blockieren in einer Bühne:

steps { 
    script { 
     if(currentBuild.rawBuild.project.displayName != 'jobName') { 
      currentBuild.rawBuild.project.description = 'NEW JOB DESCRIPTION' 
      currentBuild.rawBuild.project.setDisplayName('NEW JOB DISPLAY NAME') 
     } 
     else { 
      echo 'Name change not required' 
     } 
    } 
} 

Dies erfordert, dass Sie die einzelne Skript genehmigen Anrufe durch die Jenkins-Sandbox-Genehmigungsmethode, aber sie war weit einfacher als alles, was ich im Internet über das Umbenennen der eigentlichen untergeordneten Elemente der übergeordneten Pipeline gefunden hatte. Das letzte, was zu beachten ist, ist, dass dies in einer Jenkins-Datei funktionieren sollte, in der Sie die Umgebungsvariablen verwenden können, um die eingestellten Jobelemente zu manipulieren.