DevOps課程-Jenkins 7

Jenkinsfile Syntax

ZONGRU Li
Jan 17, 2022

接下來會介紹許多Jenkinsfile上可以撰寫的語法操作

將直接改寫github上面的Jenkinsfile後直接執行Jenkins Job:

post操作:

  • 在stages後面加入的post,就是在stages後執行,並有分條件
  • always,success,failure才執行

試著commit後:

執行Job看到:

stage內的when條件:

這邊使用到jenkins本身帶有的環境變數名稱

可以查看Jenkins網站位置/env-vars.hrml

一樣commit到git的jenkins-jobs的branch後執行Job:

後來才發現:

所以這邊嘗試改用environment一般變數,自己宣告的:

可以注意到我用到參變數的$字號時都是要用雙引號喔!

commit後執行Job看到:

stage為test因為不合when條件,所以被跳過了!

進階點的environment還可以引用credentials:

在使用前要先確認有引入相關plugin,否則無法使用其調用的函式

點進去可以連結看到:

現在隨意建立一個credential:

透過上述的id改寫pipeline:

可以注意到我用到參變數的$字號時都是要用雙引號喔!

一樣commit後執行得到:

Tool引入pipeline中:

其中要引用到pipeline使用的工具,要找到其對應的名稱:

例如我在pipeline中要使用Maven工具

上面這個名稱要放到pipeline中,像下面這樣:

其他也可以換行引入gradle,jdk等等,後面引號給定其名稱(因為我們可能有好幾套不同版的工具!)

這邊就嘗試打包看看:

看起來就是上面的pipeline語法執行沒錯!

在pipeline中使用Parameters:

宣告方式如下

使用choice還沒執行前會看不到輸入參數:

先執行一次才會看到:

會看到上一次取得參數項目顯示或輸入值(我前面註解的string那邊打開的話會是可以輸入的)

確定上面的語法是可以正常執行的!

可以注意到我用到參變數的$字號時都是要用雙引號喔!

這邊也可以直接寫這樣:

不用加==true

並且也能透過參數來sh執行不同的groovy script如下介紹

使用groovy script:

首先撰寫groovyscript放到git上:

放好後commit
就算是參變數也能使用
放到git上

改寫pipeline:

我把一堆echo都改成呼叫groovy的script的function了!,記得要用script的區塊圍起來!

都commit後執行Job:

都來自:

pipeline小技巧 — replay:

隨意點擊一個pipeline執行歷程:

這樣修改可以很方便地進行測試pipeline流程!

但是記得不會異動到git上的Jenkinsfile & script.groovy檔案內容

然後點下面的Run

供使用者(中途或開始)時輸入參數:

再延續使用上面的script.groovy內容情況下,我想在deploy安插給使用者輸入

僅在deploy階段加入使用者要自行填入的參數:

不過這邊滿奇怪的,上面的${ENV}而不是${params.ENV}…但是真的可以執行!!

執行後會發現流程卡在這,並等待使用者填入參數:

隨便選個:

然後按DEON! 這邊打錯...DONE才對..不過可以跑就好!

稍微重新整理才會看到:

並且進階版也可以多個項目選擇:

執行後後面會看到:

一次有兩個參數可以選

Console Output看到:

但是記得這個input只有在deploy的stage區塊內

也就是該選擇的參數也只能使用在這個區塊內

另外在groovy的script的區塊內也可以定義input:

但是格式稍微不同(沿用上面的script.groovy檔內容不變)只改:

完整如下

執行一樣會看到選項:

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet