2017-04-19 176 views
18

我試圖將我的舊式項目基礎工作流轉換爲基於詹金斯的管道。在通過docs時,我發現有兩種不同的語法,名爲scripteddeclarative。如Jenkins網站declarative最近發佈的語法(2016年末)。雖然有新的語法版本,但Jenkins仍然支持腳本語法。詹金斯腳本管道或聲明管道

現在,我不確定在哪種情況下,這兩種類型都是最佳匹配。 scripted語法很快就會被棄用?那麼declarative將成爲詹金斯管道的未來嗎?

任何人都可以分享關於這兩種語法類型的一些想法。

+0

我沒有看到有關腳本的任何內容會被棄用,並且考慮到聲明和腳本之間的功能差異,這會令人擔憂。 –

回答

8

聲明式似乎是更有前途的選擇和人們推薦的選項。它是Visual Pipeline Editor可以支持的唯一一個。它支持驗證。它最終具有大部分的腳本功能,因爲你可以在大多數情況下回退到腳本。偶爾會有人想出一個用例,他們無法完成他們想用聲明進行的工作,但這通常是一段時間使用腳本的人,並且這些功能差距可能會及時結束。

多個方面:https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/

3

詹金斯文檔正確介紹並比較兩種類型。

要引用: 「腳本管道爲Jenkins用戶提供了巨大的靈活性和可擴展性Groovy學習曲線通常不適用於給定團隊的所有成員,因此創建聲明性管道以提供更簡單以及更多用於創作Jenkins Pipeline的自以爲是的語法。

這兩者在底下都是基本相同的Pipeline子系統。

更多在這裏閱讀:https://jenkins.io/doc/book/pipeline/syntax/#compare

7

當詹金斯管道首次創建,Groovy中被選爲基礎。 Jenkins長期以來一直使用嵌入式Groovy引擎來爲管​​理員和用戶提供高級腳本功能。此外,Jenkins Pipeline的實現者發現Groovy是建立現在稱爲「腳本管道」DSL的堅實基礎。

由於它是一個全功能的編程環境,腳本管道爲Jenkins用戶提供了巨大的靈活性和可擴展性。對於給定團隊的所有成員而言,Groovy學習曲線通常並不需要,因此創建了聲明式管道以爲創建Jenkins管道提供更簡單和更有見地的語法。

這兩者在底下都是基本相同的Pipeline子系統。它們都是「管道作爲代碼」的持久實現。他們都可以使用內置於Pipeline的步驟或插件提供的步驟。兩者都能夠利用共享庫

但是,它們的區別在於語法和靈活性。聲明性限制了對用戶可用的更嚴格和預先定義的結構,使其成爲更簡單的連續交付管道的理想選擇。腳本化提供了極少的限制,只要Groovy自己定義了結構和語法的唯一限制,而不是任何Pipeline特定的系統,使其成爲高級用戶和具有更復雜需求的用戶的理想選擇。顧名思義,聲明式管道就是鼓勵聲明式編程模型。腳本管道遵循更強制性的編程模型。

https://jenkins.io/doc/book/pipeline/syntax/