53 votes

Pipeline Jenkins Jenkinsfile : Directives 'node' et 'pipeline

Je commence avec Pipeline déclaratif Jenkins . Dans certains des exemples que j'ai vus, je remarque que le fichier Jenkins 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 Jenkins 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 réussi à trouver de documentation solide sur le moment et la raison d'être de chacun d'entre eux. Quelqu'un a-t-il des informations sur les raisons de ces différences et sur les cas où il convient d'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 tout conseil.

62voto

burnettk Points 6712

Oui, un niveau supérieur node implique un pipeline scénarisé, et un système de niveau supérieur pipeline implique un pipeline déclaratif.

déclarative semble être l'option la plus sûre pour l'avenir et celle que les gens recommandent, comme dans cette liste d'utilisateurs jenkins post c'est le seul que l'éditeur visuel de pipeline peut prendre en charge. il prend en charge la validation. et il finit par avoir la plus grande partie de la puissance de scripted puisque vous pouvez revenir à scripted dans la plupart des contextes. occasionnellement, quelqu'un vient avec un cas d'utilisation où il ne peut pas tout à fait faire ce qu'il veut faire avec declarative, mais il s'agit généralement de personnes qui utilisent scripted depuis un certain temps, et ces lacunes dans les fonctionnalités sont susceptibles de se combler avec le temps. et enfin, si vous devez vraiment renoncer à l'un ou l'autre, écrire un traducteur programmatique de déclaratif à scripté serait plus facile que l'inverse (en quelque sorte par définition, puisque la grammaire est plus étroitement contrainte).

Pour en savoir plus sur les avantages de la déclaration, consultez l'article du blog sur la disponibilité générale : https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/

Les documents les plus officiels que j'ai pu trouver mentionnent les deux (en date du 21 juin 2017) : https://jenkins.io/doc/book/pipeline/syntax/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X