2017-06-20 161 views
9

我开始使用Jenkins declarative Pipeline。从一些我所看到的例子,我注意到Jenkinsfile是建立与管道指令:Jenkins管道Jenkinsfile:'node'和'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' 
      } 
     } 
    } 
} 

在其他例子中,我注意到Jenkinsfile是建立与节点的指令:

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

} 

我一直无法找到关于何时/为什么要使用其中每一个的可靠文档。有没有人有任何信息,说明为什么这些不同以及何时适合使用它们中的任何一种?

我不确定,但我相信'节点'指令用于脚本管道,而不是声明式管道。

在此先感谢您的任何指导。

回答

18

是的,顶级node意味着脚本化流水线,而顶层pipeline意味着声明式流水线。

陈述式似乎是更有前途的选择,也是人们推荐的选择,就像在jenkins user list post中核心贡献者所说的“去声明式”那样。它是Visual Pipeline Editor可以支持的唯一一个。它支持验证。它最终具有大部分的脚本功能,因为你可以在大多数情况下回退到脚本。偶尔会有人想出一个用例,他们无法完成他们想用声明进行的工作,但这通常是一段时间使用脚本的人,并且这些功能差距可能会及时结束。最后,如果你真的需要在这两者之间进行保释,那么编写一个从声明式到脚本式的编程式翻译会比其他方式更容易(按定义排序,因为语法受到更严格的限制)。

从一般可用性博客中声明的利弊

更多的背景:https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/

最官方的文档,我可以发现,同时提及(如6月21日,2017年):https://jenkins.io/doc/book/pipeline/syntax/

+0

大非常感谢你获取信息! – J0991