2017-06-20 12 views
9

私はJenkins declarative Pipelineを使い始めています。私が見てきた例の一部からは、私はJenkinsfileパイプラインディレクティブで設定されていることに気づく:Jenkins Pipeline Jenkinsfile: 'node'と 'pipeline'ディレクティブ

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/**' 

} 
:他の例では

pipeline { 
    agent any 

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

、私はJenkinsfileは、ノードディレクティブで設定されていることに気づきます

私はこれらのそれぞれをいつ/いつに使うべきかについての正確な文書を見つけることができませんでした。誰がこれらの違いがあるのか​​、どちらを使うのが適切なのかについての情報は誰にもありますか?

私はよく分かりませんが、私は 'node'ディレクティブが宣言パイプラインではなくスクリプトパイプラインで使用されていると考えています。

ご指摘いただきありがとうございます。

答えて

18

はい、最上位のnodeはスクリプト化されたパイプラインを意味し、最上位のpipelineは宣言的パイプラインを意味します。

宣言的なものは、将来の証明可能なオプションであり、人々が推薦するものであるように思われます。jenkins user list postのように、「貢献する」と言っています。これは、ビジュアルパイプラインエディタがサポートできる唯一のものです。検証をサポートします。ほとんどの文脈ではスクリプトに落ちる可能性があるので、スクリプトの力の大部分を持つことになります。時折、誰かが宣言的にやりたいことをやり遂げることができないユースケースが出てくることもありますが、これは一般的にスクリプトを使っていた人たちです。そして最後に、宣言からスクリプトへのプログラマチックトランスレータの作成は、文法が厳密に制約されているため、別の方法よりも簡単になります(定義によっては)。私は(2017年6月21日現在)の両方のことを言及を見つけることができるhttps://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/

最も公式ドキュメント:一般的な可用性のブログ記事からの宣言型の長所に

より文脈https://jenkins.io/doc/book/pipeline/syntax/

+0

グレートどうもありがとうございました情報のために! – J0991

関連する問題