DevOps課程-Jenkins 6

Freestyle to Pipeline Job Intro.

ZONGRU Li
Jan 16, 2022

Freestyle :

Freestyle
  • 通常針對單一Step進行設計,並可串接不同Step
  • 但是常常受限於UI介面
  • 雖然可以將不同Freestyle進行串接,但仍受限於提供的Plugin可傳入的值及其執行的方式
  • 並不適合複雜的workflows

所以真的一般在使用上實際都會使用"Pipeline Job"

Pipeline Job:

  • 適合應用於CI/CD設計
  • 主要設計其腳本(Script) — Pipeline as Code

下面開始演示如何設計Pipeline Job:

當使用到上圖中Pipeline script選項時,將在UI介面內直接撰寫Groovy腳本

並且可以注意到右邊有提供一些範例Script:

選取後會看到:

也有:

另外可以看到:

當上圖中的Use Groovy Sandbox項目勾起來時

代表可以使用有限的Groovy的Function,而不需要admin核准

但是以上的Pipeline並不是最佳的撰寫方式

在InfraStructure as Code的概念下的Best Practice

是要將Pipeline納入Git(Repository)版控

所以下面將選擇另一個選項:

SCM選擇git:

然後要填入git位置

來到github:

建立git憑證帳號密碼資訊:

回頭繼續設定pipeline:

改成正確的憑證:

就正常了!

先將上面的pipeline設定儲存

並且注意到我目前尚未在Git Repo內放入Jenkinsfile

嘗試直接執行Job:

為了後面展示方便,我後面複製建立另一個git branch — jenkins-jobs

接著就是要開始寫一個Jenkinsfile的Script擺上去

一般標準來說名稱就會叫做:Jenkinsfile

並且大致有分做兩種格式:

  • Scriped
  • Declarative

Scriped:

  • 為第一個Jenkinsfile語法,並有較高的彈性,但是相對也比較難
  • 基本結構如下:

Declarative:

  • 則是比較建議使用的,雖然沒上面的強,但是比較容易使用
  • 結構如下,使用pre-defined結構:

可以簡單整理上面兩個兩不同語法結構來說

這兩個相等!
  • 其中右邊Declarative開頭一定是先宣告”pipeline”
  • 接著跟著的agent代表要執行的Jenkins agent是誰
  • (如果有建立Jenkins Cluster(多台)的話)
  • 其中上面寫到的any指的是下一個可執行的agent
  • 這邊有比較多的解釋:
link
  • 接著stages意指"工作事項"的發生
  • 並在裡面定義許多的stage & steps,基本可能如下gist:

首先就先把上述的內容放到git Repo新建的檔案內:

儲存並commit
成功執行!

進到Console log畫面內看到:

再次比較為何要使用pipeline而不是前面幾篇學的freestyle方式設置:

  1. 不用受限於UI設定,無法執行複數複雜tasks
  2. 若有很多參數要設置,透過UI可能無法提供新的選項
  3. 後面會講到pipeline可以設置條件condition
  4. freestyle極度依賴plugin的功能
  5. 後面還會講到pipeline可以設變數
  6. 並且freestyle比較偏向單一Step設置,多個Step是要靠連串式的執行

...etc

下一篇開始整理比較複雜的Jenkinsfile也就是pipeline寫法

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet