web-dev-qa-db-fra.com

Définir le numéro de build pour les builds Jenkins (flux de production)

Je migre le travail jenkins-workflow vers un nouveau travail basé sur un modèle. Étant donné que le numéro de construction est utilisé dans la version des artefacts de génération générés par le flux de travail, je dois démarrer le numéro de génération du nouveau flux de travail avec un nombre supérieur à l'ancien. Malheureusement, le plug-in 'Next Build Number' ne fonctionne pas avec le pipeline de flux de travail. 

Quelqu'un sait un bon moyen de faire ça?

15
Vlad

Essayez d’exécuter le script ci-dessous dans Jenkins Script Console .. Changez "workFlow" en votre nom de travail

def job = Jenkins.instance.getItem("workFlow")
job.nextBuildNumber = 10
job.saveNextBuildNumber()
8
Jayan

Vous pouvez également ajouter un extrait de code comme celui-ci à votre script DSL de travail Pipeline/Workflow (ou Jenkinsfile ):

offset = 5
currentBuild.displayName = "#" + (currentBuild.number + offset)
15
MarkHu

Malheureusement, les méthodes énumérées ci-dessus ne fonctionnaient pas pour moi lors de l'utilisation de dossiers. J'ai eu recours à ce qui suit dans la console de script Jenkins:

job = Jenkins.getInstance().getItemByFullName("BSKAzureConversion-Jobs/master", Job.class)
job.nextBuildNumber = 92
job.save()
10
Ed Meagher

Quelques notes:

  • Les travaux et dossiers Jenkins ne sont pas sérialisables. Besoin d'utiliser @NonCPS
  • Désactivez Groovy Sandbox, car les éléments globaux tels que Jenkins.instance ne sont pas accessibles autrement
  • Jenkins.instance.getItem() ne fonctionnera pas bien avec les dossiers. Utilisez Jenkins.instance.getItemByFullName par rapport au env.JOB_NAME
  • Le paramétrage de job.nextBuildNumber entrera en vigueur lors de la construction suivante.
  • Assurez-vous que vous sortez de votre pipeline afin que la génération initiale ne continue pas avec un numéro de génération incorrect

Code:

@NonCPS
def updateBuildNumber(build_number) {
  def job = Jenkins.instance.getItemByFullName(env.JOB_NAME, Job.class)
  job.nextBuildNumber = build_number
  job.saveNextBuildNumber()
  build env.JOB_NAME
  return true
}
2
deepelement

J'ai aussi trouvé un autre moyen de le faire en utilisant 'jenkins-cli'. Cela fonctionne pour les installations verrouillées où l'accès à la console de script n'est pas disponible (Cloudbees Enterprise Jenkins)

Java -jar jenkins-cli.jar   -s https://instanceURL/ \
          set-next-build-number workflow-name  33
0
Vlad