全部產品
Search
文件中心

Alibaba Cloud DevOps:環境變數

更新時間:May 08, 2025

環境變數是實現流水線過程定製化的一種常見方法,可以在流水線的任何階段使用。本文介紹流水線環境變數,包括內建變數、自訂變數、通用變數組,以及如何在流水線中使用變數。

環境變數來源

內建變數

雲效流水線提供基本資料和代碼源相關內建變數,支援定製化流程。

功能模組

環境變數名

說明

基本資料

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

多個代碼源或製品源的資訊通過變數名+數字尾碼擷取。

下圖環境變數依次為:第1個源,Git類型代碼源環境變數;第2個源,製品源環境變數;第3個源,SVN類型代碼源環境變數。容器 1@1x

CI_COMMIT_REF_NAME 變數的值取決於使用者在觸發流水線時選擇的具體分支或標籤。如果使用者手動觸發流水線並選擇了某個特定分支(如 master),則 CI_COMMIT_REF_NAME 的值為 master。如果使用者選擇了某個標籤(如 V1.0),則 CI_COMMIT_REF_NAME 的值為 V1.0。運行時選擇指的是使用者在觸發流水線時可以選擇不同的分支或標籤來運行流水線,變數值會根據選擇的不同而變化。

高的 - 2025-02-18T095109

自訂變數

除了流水線內建變數外,雲效Flow還支援使用者自訂流水線變數,以滿足更多定製化情境。流水線內自訂變數生效範圍僅限本流水線。選中流水線,點擊編輯,點擊變數和緩衝。雲效Flow支援字串和枚舉兩種類型變數。

image

字元變數

  1. 在流水線變數和緩衝 > 字元變數處,單擊 建立變數,開啟建立變數彈窗。

  2. 輸入變數名稱預設值,可以設定私密模式運行時設定

    1. 變數名稱:注意環境變數名稱不可使用橫杠符號 - 。

    2. 私密模式:控制變數是否對外公開。當變數設定為私密模式後,將無法查看變數的值,相應的執行日誌中也不會顯示。通常適用於使用者名稱,密碼等私密資訊情境。

    3. 運行時設定:控制變數值是否需要在流水線運行時設定。當變數設定為運行時設定後,流水線運行時需要設定變數的值。通常適用於需要動態配置流水線參數值情境。

  3. 可以添加更多變數,也可以刪除變數。

  4. 單擊添加後,需要儲存流水線才可以將變數儲存至流水線。儲存完畢後即可按情境 使用環境變數

image

運行選擇變數

  1. 在流水線變數和緩衝 > 運行選擇變數處,單擊 建立變數,開啟建立變數彈窗。

  2. 輸入變數名稱選項

    1. 單擊添加選項可以為變數取值添加多個選項。

    2. 選項開啟預設值則該選項為該變數的預設取值。

  3. 單擊添加後,需要儲存流水線才可以將變數儲存至流水線。儲存完畢後即可按情境 使用環境變數

image

  1. 在流水線點擊運行時需要選擇變數取值。

image

通用變數組

通用變數組是企業統一管控的環境變數,流水線可以關聯使用。

  1. 在流水線變數和緩衝 > 通用變數組處,單擊 關聯變數組,下拉選擇變數組,單擊 確定 即可將變數組關聯到流水線。

  2. 在流水線通用變數組處可以查看流水線關聯的通用變數組,可以查看變數組詳情,可以解除變數組關聯。儲存完畢後即可按情境 使用環境變數

image

使用環境變數

定義好變數後,可在流水線中通過${XXX}引用。變數生效邏輯如下:

  • 變數優先順序:步驟輸出變數 > 流水線運行時輸入變數 > 流水線變數 > 通用變數組。

  • 同一流水線關聯多個通用變數組,後關聯的變數組取值為準。

以下舉幾個典型的使用環境變數情境,如執行命令、主機部署、鏡像構建參數、設定檔參數、環境變數傳遞等使用環境變數情境。

執行命令使用變數

將設定檔a.conf中的 key 的參數值,從123更改為變數名稱為abc的環境變數值。

橫向多個

高的 (7)

橫向多個 (1)

主機部署使用變數

可以在部署指令碼中直接通過${XXX}引用環境變數控制主機部署邏輯。運行流水線後,在主機部署步驟的日誌中查看。高的 (1)

鏡像構建參數使用變數

鏡像構建時如需使用流水線環境變數作為構建參數,則可按照以下方式進行配置。

  1. 在鏡像構建步驟中使用指定容器環境,在構建參數中添加自訂參數,通過${XXX}形式將環境變數賦值給構建參數。構建參數會以 --build-arg的形式傳遞到build命令的參數中。

橫向多個 (2)

  1. 在 Dockerfile 中,通過ARG argName引用變數。

橫向多個

設定檔參數使用變數

如果您的設定檔中某個參數,需要通過環境變數進行修改,例如:程式碼程式庫設定檔a.conf中有參數username,希望用流水線的環境變數進行替換,則可按照以下方式進行配置。

  1. 修改設定檔a.conf中內容username = ${abc}

  2. abc的參數值配置在流水線的環境變數中,預設值設定為my_name_is_hanmeimei

  3. 在流水線中新增工作,在工具中找到並添加替換檔案中的環境變數 步驟,填寫設定檔的源檔案路徑目標檔案路徑非必填(如果填寫了目標檔案路徑,則會產生一個新的設定檔;不填寫則直接修改原檔案)。

設定檔中的參數使用環境變數3

  1. 查看修改效果如下:a.conf中的username被修改為b.conf中的my_name_is_hanmeimei。注意:因為 Flow 流水線同一個任務才會共用工作區,因此修改設定檔變數步驟需要和您後續使用設定檔的步驟放在該流水線的同一個任務中。

設定檔中的參數使用環境變數4

環境變數傳遞

在流水線配置頁定義的環境變數為預置的固定環境變數,在流水線實際運行過程中,會出現以流水線運行時的輸出定義的環境變數,並將其傳遞給後續的步驟或任務中使用的情境。對應情境有以下兩種:

  • 任務內環境變數傳遞:步驟一產生自訂環境變數 -> 步驟二使用。

  • 任務間環境變數傳遞:任務一產生環境變數 -> 任務二使用。

值得注意的是,在使用不同的構建環境時需要使用不同的文法。

高的 (28)

指定容器環境或預設VM環境

任務內環境變數傳遞

這種情境主要是單個任務節點內的環境變數共用,比如步驟一產生變數 yaojia_Test=myParam,步驟二通過 ${yaojia_Test} 引用。

您可以在前序步驟中通過echo "yaojia_Test=myParam" >> "$FLOW_ENV"將環境變數輸出到$FLOW_ENV中完成環境變數注入。高的 (3)

高的 (4)

任務間環境變數傳遞

這種情境主要是流水線內多個任務節點的環境變數共用,比如任務一產生變數 yaojia_Test=myParam,任務二通過 ${yaojia_Test} 引用。

  • 您可以在任務一的步驟中通過將環境變數輸出到$FLOW_ENV中完成環境變數注入。

  • 在任務一中添加步驟 > 工具 > 設定變數,將環境變數設定為流水線層級的環境變數。

  • 在任務二中通過 ${yaojia_Test} 使用該環境變數。

橫向多個高的