Jenkins Pipeline Jenkinsfile: directives "node" et "pipeline"

je commence avec Jenkins déclarative Pipeline. D'après certains exemples que j'ai vus, je remarque que le fichier Jenkinsfile est configuré avec la directive Pipeline:

pipeline {
    agent any 

    stages {
        stage('Build') { 
            steps { 
                sh 'make' 
            }
        }
        stage('Test'){
            steps {
                sh 'make check'
                junit 'reports/**/*.xml' 
            }
        }
        stage('Deploy') {
            steps {
                sh 'make publish'
            }
        }
    }
}

dans d'autres exemples, je remarque que le fichier Jenkinsfile est configuré avec une directive node:

node {
    stage 'Checkout'
        checkout scm

    stage 'Build'
        bat 'nuget restore SolutionName.sln'
        bat ""${tool 'MSBuild'}" SolutionName.sln /p:Configuration=Release /p:Platform="Any CPU" /p:ProductVersion=1.0.0.${env.BUILD_NUMBER}"

    stage 'Archive'
        archive 'ProjectName/bin/Release/**'

}

Je n'ai pas été en mesure de trouver de la documentation solide sur exactement quand / pourquoi utiliser chacun de ceux-ci. Est-ce que quelqu'un a des informations sur pourquoi ces différences et quand il est approprié pour utiliser l'un ou l'autre?

Je ne suis pas sûr mais je crois que la directive 'node' est utilisée dans le pipeline scripté par opposition au pipeline déclaratif.

Merci d'avance pour tous conseils.

21
demandé sur J0991 2017-06-20 19:01:21

1 réponses

oui, un haut niveau node implique un pipeline scripté, et un niveau supérieur pipeline implique un pipeline déclaratif.

déclarative semble être le plus de l'avenir de l'option et celui que les gens recommandent, comme dans ce jenkins liste des utilisateurs post où un collaborateur principal dit "allez déclarative."C'est le seul que Visual Pipeline Editor peut supporter. il soutient la validation. et il finit par avoir la plupart de la puissance de scénario puisque vous pouvez revenir à des écrits dans la plupart des contextes. de temps en temps quelqu'un arrive avec un cas d'utilisation où ils ne peuvent pas tout à fait faire ce qu'ils veulent faire avec declarative, mais ce sont généralement des gens qui ont été utilisant scripted pendant un certain temps, et ces lacunes de fonctionnalité sont susceptibles de se fermer à temps. et enfin, si vous devez vraiment sauter sur l'un ou l'autre, Écrire un traducteur programmatique du déclaratif au scripté serait plus facile que l'autre (par définition, puisque la grammaire est plus étroite). contraindre.)

plus de contexte sur les avantages de déclaratif de la disponibilité générale de blog: https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/

les documents les plus officiels que j'ai pu trouver que mentionner les deux (à partir de juin 21, 2017): https://jenkins.io/doc/book/pipeline/syntax/

29
répondu burnettk 2017-06-21 11:05:19