環境變量是實現流水線過程定制化的一種常見方法,可以在流水線的任何階段使用。本文介紹流水線環境變量,包括內置變量、自定義變量、通用變量組,以及如何在流水線中使用變量。
環境變量來源
內置變量
云效流水線提供流水線基本信息、代碼源相關內置變量,幫助定制化流程,可按需直接使用。
功能模塊 | 環境變量名 | 說明 |
基本信息 | PIPELINE_ID | 流水線 ID |
BUILD_NUMBER | 流水線的運行編號,從1開始,按自然數自增 | |
PIPELINE_NAME | 流水線名稱,如:前端項目發布 | |
BUILD_REMARK | 流水線運行備注 | |
BUILD_EXECUTOR | 流水線觸發人,如:張三 | |
BUILD_MESSAGE | 流水線觸發信息,如:張三·頁面手動觸發 | |
PROJECT_DIR | 運行命令的工作目錄,如:/root/workspace/1084-abc_docker-08191_b0wE | |
DATETIME | 當前時間,如:2017-06-22-23-26-33 | |
TIMESTAMP | 當前時間戳,如:1581581273232 | |
代碼源(單個) | CI_SOURCE_NAME | 代碼源名稱 |
CI_COMMIT_REF_NAME | 代碼源的分支名或者 Tag 名(根據用戶運行時選擇),如:master or V1.0 | |
CI_COMMIT_TITLE | 最后一次提交的提交信息 | |
CI_COMMIT_SHA | 最后一次提交的代碼版本的 commit ID:如2bfb63d779e3648c91950f82d374a25784cdabaf | |
CI_COMMIT_ID | 最后一次提交的代碼版本的 8 位 commit ID(Git場景) 最后一次提交的代碼版本的 Revision(SVN場景) | |
代碼源 (多個) | CI_SOURCE_NAME_n | 第n個代碼源名稱 |
CI_COMMIT_REF_NAME_n | 第n個代碼源的分支名或者 Tag 名(根據用戶運行時選擇),如:master or V1.0 | |
CI_COMMIT_TITLE_n | 第n個代碼源的最后一次提交的提交信息 | |
CI_COMMIT_SHA_n | 第n個代碼源的最后一次提交的代碼版本的 commit ID:如2bfb63d779e3648c91950f82d374a25784cdabaf | |
CI_COMMIT_ID_n | 第n個代碼源的最后一次提交的代碼版本的 8 位 commit ID | |
制品源 | CI_SOURCE_NAME | 制品源名稱 |
CI_SOURCE_URL | 制品源地址,如:https://packages.aliyun.com/generic/flow_generic_repo/artifacts?artifactName=Artifacts_2778530&version=2024-01-05-16-28-23 | |
CI_VERSION_NAME | 制品源的版本號名(根據用戶運行時選擇),如:2024-01-05-16-28-23 |
當流水線配置了多個代碼源或制品源時,不同代碼源或制品源信息可以通過變量名+數字后綴(第n個代碼源)獲取。下圖環境變量依次為:第1個源,Git類型代碼源環境變量;第2個源,制品源環境變量;第3個源,SVN類型代碼源環境變量。
自定義變量
除了流水線內置變量外,云效Flow還支持用戶自定義流水線變量,用于滿足更多定制化場景。流水線內自定變量生效范圍僅限本流水線。進入流水線 > 變量和緩存,云效Flow支持字符串和枚舉兩種類型變量。
字符變量
在流水線變量和緩存 > 字符變量處,單擊 新建變量,打開新建變量彈窗。
輸入變量名稱和默認值,可以設置私密模式和運行時設置。
變量名稱:注意環境變量名稱不可使用橫杠符號 - 。
私密模式:控制變量是否對外公開。當變量設置為私密模式后,將無法查看變量的值,相應的執行日志中也不會顯示私密值。通常適用于用戶名密碼等私密信息場景。
運行時設置:控制變量值是否需要在流水線運行時設置。當變量設置為運行時設置后,流水線運行時需要設置變量的值。通常適用于需要動態配置流水線參數值場景。
可以添加更多變量,也可以刪除變量。
單擊添加后,需要保存流水線才可以將變量保存至流水線。保存完畢后即可按場景 使用環境變量。
運行選擇變量
在流水線變量和緩存 > 運行選擇變量處,單擊 新建變量,打開新建變量彈窗。
輸入變量名稱和選項。
單擊添加選項可以為變量取值添加多個選項。
選項打開默認值則該選項為該變量的默認取值。
單擊添加后,需要保存流水線才可以將變量保存至流水線。保存完畢后即可按場景 使用環境變量。
流水線運行時選擇變量取值。
通用變量組
通用變量組是企業統一管控的通用環境變量,用企業統一管理。流水線可以關聯通用變量組使用。
在流水線變量和緩存 > 通用變量組處,單擊 關聯變量組,下拉選擇變量組,單擊 確定 即可關聯變量組到本流水線。
在流水線通用變量組處可以查看流水線關聯的通用變量組,可以查看變量組詳情,可以解除變量組關聯。保存完畢后即可按場景 使用環境變量。
使用環境變量
上述變量定義好后,可在流水線任意需要使用環境變量的地方通過${XXX}
引用變量。變量生效邏輯如下:
變量優先級:步驟輸出變量 > 流水線運行時輸入變量 > 流水線變量 > 通用變量組。
同一流水線關聯多個通用變量組,變量組中變量名稱重復的,以后關聯的變量組取值為準。
以下舉幾個典型的使用環境變量場景,如執行命令、主機部署、鏡像構建參數、配置文件參數等使用環境變量場景。
執行命令使用變量
將配置文件a.conf
中的 key 的參數值,從123
更改為變量名稱為abc
的環境變量值。
主機部署使用變量
可以在部署腳本中直接通過${XXX}
引用環境變量控制主機部署邏輯。
鏡像構建參數使用變量
鏡像構建時如需使用流水線環境變量作為構建參數,則可按照以下方式進行配置。
在鏡像構建步驟的構建參數中,通過
${XXX}
形式將環境變量賦值給構建參數。構建參數會以--build-arg
的形式傳遞到build命令的參數中。
在 Dockerfile 中,通過
ARG argName
引用變量。
配置文件參數使用變量
如果您的配置文件中某個參數,需要通過環境變量進行修改,例如:代碼庫配置文件a.conf
中有參數username
,希望用流水線的環境變量進行替換,則可按照以下方式進行配置。
修改配置文件內容
username = ${abc}
。將
abc
的參數值配置在流水線的環境變量中,默認值設置為my_name_is_hanmeimei
。在流水線中添加 替換文件中的環境變量 步驟,填寫配置文件的源文件路徑。目標文件路徑非必填(如果填寫了目標文件路徑,則會生成一個新的配置文件;不填寫則直接修改原文件)。
查看修改效果如下:
a.conf
中的username
被修改為b.conf
中的my_name_is_hanmeimei
。注意:因為 Flow 同一個任務才會共享工作區,因此修改配置文件變量步驟需要和您后續使用配置文件的步驟放在同一任務中。