Legen Sie die build-name und-Beschreibung von einem Jenkins Deklarative Pipeline
Ich würde gerne den build-Namen und die Beschreibung aus einem Jenkins Deklarative Pipeline, aber nicht finden können, den richtigen Weg, es zu tun. Ich habe versucht, mit einer Umgebung Klammer nach der pipeline, das mit einem Knoten Halterung in einem Agenten-Halterung, usw. Ich bekomme immer syntax Fehler.
Die Letzte version meiner Jenkinsfile geht in etwa so:
pipeline {
stages {
stage("Build") {
steps {
echo "Building application..."
bat "%ANT_HOME%/bin/ant.bat clean compile"
currentBuild.name = "MY_VERSION_NUMBER"
currentBuild.description = "MY_PROJECT MY_VERSION_NUMBER"
}
}
stage("Unit Tests") {
steps {
echo "Testing (JUnit)..."
echo "Testing (pitest)..."
bat "%ANT_HOME%/bin/ant.bat run-unit-tests"
}
}
stage("Functional Test") {
steps {
echo "Selenium..."
}
}
stage("Performance Test") {
steps {
echo "JMeter.."
}
}
stage("Quality Analysis") {
steps {
echo "Running SonarQube..."
bat "%ANT_HOME%/bin/ant.bat run-sonarqube-analysis"
}
}
stage("Security Assessment") {
steps {
echo "ZAP..."
}
}
stage("Approval") {
steps {
echo "Approval by a CS03"
}
}
stage("Deploy") {
steps {
echo "Deploying..."
}
}
}
post {
always {
junit '/test/reports/*.xml'
}
failure {
emailext attachLog: true, body: '', compressLog: true, recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'DevelopersRecipientProvider']], subject: '[JENKINS] MY_PROJECT build failed', to: '...recipients...'
}
success {
emailext attachLog: false, body: '', compressLog: false, recipientProviders: [[$class: 'DevelopersRecipientProvider']], subject: '[JENKINS] MY_PROJECT build succeeded', to: '...recipients...'
}
}
}
Fehler:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 11: Expected a step @ line 11, column 5.
currentBuild.name = "MY_VERSION_NUMBER"
^
WorkflowScript: 12: Expected a step @ line 12, column 5.
currentBuild.description = "MY_PROJECT MY_VERSION_NUMBER"
^
Im Idealfall würde ich mag in der Lage sein zu Lesen MY_PROJECT und MY_VERSION_NUMBER aus dem build.Datei Eigenschaften, oder von den Jenkins-build-log. Weitere Hinweise zu dieser Anforderung würde geschätzt werden, wie gut.
UPDATE
Basierend auf der Antwort, die ich hatte unter der folgenden gearbeitet:
stage("Build") {
steps {
echo "Building application..."
bat "%ANT_HOME%/bin/ant.bat clean compile"
script {
def props = readProperties file: 'build.properties'
currentBuild.displayName = "v" + props['application.version']
}
}
Nun die build-version wird automatisch eingestellt, während die pipeline durch das Lesen der bauen.Eigenschaften-Datei.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das wird tun, was Sie wollen. Ich war in der Lage, es zu tun im inneren ein
script
block:Das Skript ist irgendwie ein Schlupfloch, um aus einem deklarativen pipeline. Es ist wahrscheinlich eine deklarative Art und Weise, es zu tun, aber ich konnte ihn nicht finden. Und noch eine Anmerkung. Ich denke, Sie wollen
currentBuild.displayName
stattcurrentBuild.name
Sie In der Dokumentation für Jenkins globals habe ich nicht sehen, eine name-Eigenschaft unter currentBuild.Wenn Sie festlegen möchten, bauen name, um einen job von einem parameter, die Sie verwenden können,
currentBuild.displayName = "${nameOfYourParameter}"
.Stellen Sie sicher, verwenden Sie doppelte Anführungszeichen statt Anführungszeichen.
Job-Konfiguration
Build-job mit dem parameter
Bauen Geschichte
REFERENZ: Wie set erstellen name des Pipeline-job?
'${NumeroCambio}'
). Diese scheinbar arbeitet nur mit double-quoted strings.