web-dev-qa-db-fra.com

Comment utiliser correctement les `options` du pipeline Jenkins

Le générateur d'extraits de code a créé un bloc properties pour moi. Première exécution signalée

WorkflowScript: 1: The properties section has been renamed as of version 0.8. Use options instead. @ line 1, column 1.
   pipeline {

Le remplacement de properties par optionsresults avec l'erreur suivante:

Errors encountered validating Jenkinsfile:
WorkflowScript: 4: options can not be empty @ line 4, column 5.
   options([$class: 'ThrottleJobProperty',

Voici le jenkinsfile complet pour référence

pipeline {
    agent any

    options([[$class: 'ThrottleJobProperty',
            categories: ['xcodebuild'],
            limitOneJobWithMatchingParams: false,
            maxConcurrentPerNode: 0,
            maxConcurrentTotal: 0,
            paramsToUseForLimit: '',
            throttleEnabled: true,
            throttleOption: 'category']])

    stages {
        stage("Empty" {
            steps {
                echo "Do nothing"
            }
        }
    }
}
9
Anton Matosov

TLDR

Il n'est plus possible d'utiliser un $class Personnalisé dans les options

Notez que la syntaxe [$class: 'Foo', arg1: 'something', ...] Ne peut pas être utilisée, seulement booleanParam(...) et similaires.

Syntaxe des options complètes

  • Description : JobPropertys traditionnels, tels que buildDiscarder ou disableConcurrentBuilds, options déclaratives spécifques, telles comme skipDefaultCheckout, et des "wrappers" qui devraient envelopper la construction entière, comme timeout.
  • Obligatoire : Non
  • Autorisé dans : fermeture de niveau supérieur pipeline uniquement.
  • Paramètres : Aucun
  • Clôture : Oui
  • Contenu de la fermeture : Une séquence d'une ou plusieurs configurations d'options déclaratives ou de propriétés de travail, en utilisant des noms @Symbol Pour les constructeurs.
    • Notez que la syntaxe [$class: 'Foo', arg1: 'something', ...] Ne peut pas être utilisée, seulement booleanParam(...) et similaires.
    • Notez que les parameters et pipelineTriggers@Symbol Ne peuvent pas être utilisés ici directement.

Exemple:

options {
    buildDiscarder(logRotator(numToKeepStr:'1'))
    disableConcurrentBuilds()
}

Source

7
Anton Matosov