Jenkins pipeline 參數化建置 示範

在使用 Jenkins 建置的過程中,有時候會想要將部分資料保留,或是使用環境中的其他資訊來建置,這時候就可以使用 Jenkins 提供的參數化建置來達成。

點選專案 > 組態(Configuration) > General > 參數化建置
勾選「參數化建置」後點選「新增參數」,即可選擇參數的型態



目前可以使用的有:
  • 憑證參數(Credentials Parameter)
  • 執行參數
  • 字串參數
  • 密碼參數
  • 布林值
  • 文字參數: 和字串參數相比,文字參數可以換行
  • 檔案參數: 檔案的完整路徑
  • 選擇: 就是列舉,只能是預先定義的字串中的其中一個
本篇以字串參數做示範。

假設我們要將上一個建立的版本號碼記錄起來,我們可以新增一個參數叫做 LAST_BUILD_NUMBER,預設值為 1

儲存後就會發現專案的「馬上建置」變成了「帶參數建置」,並且預設值為我們剛剛輸入的 1。
每次執行前都可以輸入不同的值來變更。

讀取和寫入參數

在 Jenkinsfile 中我們可以使用下列兩種方式來讀取參數,:
    
pipeline {
    agent any
    stages {
    
        stage('Check')
        {
            steps {
                echo 'LAST_BUILD_NUMBER: ' + LAST_BUILD_NUMBER
                echo 'LAST_BUILD_NUMBER: ${LAST_BUILD_NUMBER}'
            }
        }
    }
}
    

太棒了,可以正常讀取,那寫入呢?
如果直接使用 BUILD_NUMBER = 2 這樣的方式執行後會發現未變更,因為語法錯誤,參數無法這樣簡單的被更新。經過研究後發現除了使用套件外,可以在 pipeline 區塊的最外面使用下面這行更新:
    
pipeline {
    agent any
    stages {
    
        stage('Check')
        {
            steps {
                echo 'LAST_BUILD_NUMBER: ' + LAST_BUILD_NUMBER
                echo 'LAST_BUILD_NUMBER: ${LAST_BUILD_NUMBER}'
            }
        }
    }
}

properties([parameters([string(defaultValue: '2' , description: '上一個建立的版本號碼', name: 'LAST_BUILD_NUMBER')])])
    

不知道有沒有網友知道更好的更新方式?

歡迎留言

留言