Ich habe derzeit ein Jenkins DSL-Skript, das meine Release-Pipeline (unten) definiert. Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Versionsnummer des freigegebenen Artefakts für jedes Build automatisch zu erhöhen, sodass ich es mit einer neuen eindeutigen Versionsnummer auf Nexus veröffentlichen kann, anstatt es manuell einstellen zu müssen. Ich habe in der Vergangenheit ein Plugin benutzt, das dies automatisch mit normalen Jenkins-Jobs macht, aber ich kann nicht herausfinden, wie das mit dem Pipelineskript funktioniert.Automatische Nexus Artefakt Versionierung mit Jenkins 2 Jenkinsfile Skript
node('master') {
//input 'Proceed?'
stage 'Checkout'
checkout scm
stage 'Build'
dir('./collector') {
sh "./gradlew clean build -Penv=${ENVIRONMENT}"
}
stage 'Flyway Migrate'
dir('./database') {
sh "./gradlew flywayMigrate -i -Penv=${ENVIRONMENT}"
}
stage 'Run cucumber Tests'
dir('./collector') {
sh "./gradlew cucumber -Penv=${ENVIRONMENT}"
}
stage 'Publish artifact to Nexus'
dir('./collector') {
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'NEXUS_PASSWORD',
usernameVariable: 'NEXUS_USERNAME', passwordVariable: 'NEXUS_PASSWORD']]) {
sh ("./gradlew publish -Pnexus_username=" + env.NEXUS_USERNAME+" -Pnexus_password=" + env.NEXUS_PASSWORD+ " -Penv=${ENVIRONMENT}--stacktrace")
}
}
//stage ''
}
Wir haben gerade einen JJJJMMTThhmm Zeitstempel verwenden, wenn der Build + der kurzen Hash unserer git Revision gestartet. Jetzt, wenn Sie eine atomare fortlaufende Nummer haben wollen, brauchen Sie einen Platz, um es zu behalten. Vielleicht in eine DB und lesen/update nach Bedarf –
Ich entschied mich, eine Datei unter Versionskontrolle zu platzieren und erhöhen Sie die Nebenversion Wert pro erfolgreichen Build. Nicht die schönste Art, es zu tun, aber es bringt das gewünschte Ergebnis. – user1712258
Sie können $ BUILD_NUMBER verwenden und es wird automatisch erhöht, aber ich bin mir nicht sicher, ob es eine gute Übung ist – agusgambina