2017-06-20 191 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