共用方式為


管理變數群組

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

本文說明如何在 Azure Pipelines 中建立和使用變數群組。 變數群組會儲存您可以傳入 YAML 管線的值和秘密,或跨專案中的多個管線提供。

變數群組中的秘密變數是 受保護的資源。 您可以新增核准、檢查和管線許可權的組合,以限制對變數群組中秘密變數的存取。 存取非Secret 變數不受核准、檢查或管線許可權所限制。

變數群組會遵循連結 庫安全性模型 來取得角色和許可權。

必要條件

  • 您有權建立管線和變數的 Azure DevOps Services 組織和專案。
  • Azure DevOps 組織或 Azure DevOps Server 集合中的專案。 如果您沒有專案,請建立專案
  • 如果您使用 Azure DevOps CLI,則需要 Azure CLI 2.30.0 版或更新版本搭配 Azure DevOps CLI 擴充功能。 如需詳細資訊,請參閱 開始使用 Azure DevOps CLI

設定 CLI

如果您使用 Azure DevOps CLI,您必須設定 CLI 以與您的 Azure DevOps 組織和專案搭配使用。

  1. 使用 az login 命令登入您的 Azure DevOps 組織。

    az login
    
  2. 如果出現提示,請從終端機視窗中顯示的清單中選取您的訂用帳戶。

  3. 使用下列命令,確定您正在執行最新版的 Azure CLI 和 Azure DevOps 擴充功能。

    az upgrade
    az extension add --name azure-devops --upgrade
    
  4. 在 Azure DevOps CLI 命令中,您可以使用下列方式設定預設組織和專案:

    az devops configure --defaults organization=<YourOrganizationURL> project=<Project Name or ID>`
    

    如果您尚未設定預設組織和專案,您可以使用 detect=true 命令中的 參數,根據目前的目錄自動偵測組織和項目內容。 如果未設定或偵測到預設值,您必須在命令中明確指定 orgproject 參數。

建立變數群組

您可以在專案中建立管線執行的變數群組。

注意

若要建立秘密變數群組,以將來自 Azure 金鑰保存庫的秘密連結為變數,請遵循將變數群組連結至 Azure 金鑰保存庫 中的秘密中的指示

  1. 在您的 Azure DevOps 專案中,從左側功能表中選取 [管線連結>庫]。

  2. 在 [程式庫] 頁面上,選取 [+ 變數群組]

    [鏈接庫] 畫面和 [新增變數群組] 按鈕的螢幕快照。

  3. 在新的變數群組頁面上,於 [屬性] 底下,輸入變數群組的名稱和選擇性描述。

  4. 在 [變數],選取 [+ 新增],然後輸入要包含在群組中的變數名稱和值。 如果您想要加密並安全地儲存值,請選取變數旁邊的鎖定圖示。

  5. 選取 [+ 新增 ] 以新增每個新變數。 當您完成新增變數時,請選取 [ 儲存]。

    設定和儲存變數群組的螢幕快照。

您現在可以在專案管線中使用這個變數群組。

更新變數群組

您可以使用 Azure Pipelines 使用者介面來更新變數群組。

  1. 在您的 Azure DevOps 專案中,從左側功能表中選取 [管線連結>庫]。
  2. 在 [ 連結庫] 頁面上,選取您要更新的變數群組。 您也可以將滑鼠停留在變數群組清單上、選取 [更多選項 ] 圖示,然後從功能表中選取 [ 編輯 ]。
  3. 在變數群組頁面上,變更任何屬性,然後選取 [ 儲存]。

刪除變數群組

您可以在 Azure Pipelines 使用者介面中刪除變數群組。

  1. 在您的 Azure DevOps 專案中,從左側功能表中選取 [管線連結>庫]。
  2. 在 [ 鏈接庫 ] 頁面上,將滑鼠停留在您想要刪除的變數群組上,然後選取 [ 更多選項 ] 圖示。
  3. 從功能表中選取 [ 刪除 ],然後在確認畫面上選取 [ 刪除 ]。

管理變數群組中的變數

您可以使用 Azure Pipelines 使用者介面,在變數群組中變更、新增或刪除變數。

  1. 在您的 Azure DevOps 專案中,從左側功能表中選取 [管線連結>庫]。
  2. 在 [ 連結庫] 頁面上,選取您要更新的變數群組。 您也可以將滑鼠停留在變數群組清單上、選取 [更多選項 ] 圖示,然後從功能表中選取 [ 編輯 ]。
  3. 在變數群組頁面上,您可以:
    • 變更任何變數名稱或值。
    • 選取變數名稱旁邊的垃圾箱圖示,以刪除任何變數。
    • 選取變數值旁的鎖定圖示,將變數變更為秘密或非秘密。
    • 選取 [+ 新增] 以新增變數。
  4. 進行變更之後,請選取 [ 儲存]。

在管線中使用變數群組

您可以在 YAML 或傳統管線中使用變數群組。 您對變數群組所做的變更會自動提供給變數群組所連結的所有定義或階段。

如果您只將 YAML 管線中的變數群組命名,任何可以將程式代碼推送至存放庫的人,都可以擷取變數群組中的秘密內容。 因此,若要搭配 YAML 管線使用變數群組,您必須授權管線使用群組。 您可以授權管線在 Azure Pipelines 使用者介面中使用變數群組,或使用 Azure DevOps CLI。

透過管線 UI 進行授權

您可以使用 Azure Pipelines 使用者介面,授權管線使用您的變數群組。

  1. 在您的 Azure DevOps 專案中,從左側功能表中選取 [管線連結>庫]。
  2. 在 [ 連結庫] 頁面上,選取您要授權的變數群組。
  3. 在變數群組頁面上,選取 [ 管線許可權] 索引卷標。
  4. 在 [ 管線許可權] 畫面上,選取 + 並選取要授權的管線。 或者,選取 [ 更多動作] 圖示,選取 [ 開啟存取權],然後再次選取 [ 開啟存取 權] 以確認。

選取管線會授權該管線使用變數群組。 若要授權另一個管線,請再次選取 + 圖示。 選取 [ 開啟存取 權] 會授權所有專案管線使用變數群組。 如果您在群組中沒有任何秘密,則開啟存取可能是一個很好的選項。

授權變數群組的另一種方式是選取管線、選取 [ 編輯],然後手動將組建排入佇列。 您會看到資源授權錯誤,然後可以明確地將管線新增為變數群組的授權使用者。

透過 Azure DevOps CLI 進行授權

在 Azure DevOps Services 中,您可以使用 Azure DevOps CLI 來授權變數群組。

Azure DevOps Server 不支援 Azure DevOps CLI 命令。

若要授權所有項目管線使用變數群組,請將 az pipelines variable-group create 命令中的 參數設定authorizetrue。 如果您在群組中沒有任何秘密,則此開啟存取可能是一個很好的選項。

一旦您授權 YAML 管線使用變數群組,您就可以在管線中的群組內使用變數。

若要使用變數群組中的變數,請在 YAML 管線檔案中新增組名的參考。

variables:
- group: my-variable-group

您可以在相同的管線中參考多個變數群組。 如果多個變數群組包含具有相同名稱的變數,則使用檔案中變數的最後一個變數群組會設定變數的值。 如需變數優先順序的詳細資訊,請參閱 變數的擴充。

您也可以參考範本中的變數群組。 下列 variables.yml 樣本檔案參考變數群組 my-variable-group。 變數群組包含名為的 myhello變數。

variables:
- group: my-variable-group

YAML 管線會參考variables.yml範本,並使用變數群組 my-variable-group中的變數$(myhello)

stages:
- stage: MyStage
  variables:
  - template: variables.yml
  jobs:
  - job: Test
    steps:
    - script: echo $(myhello)

在連結變數群組中使用變數

您可以存取連結變數群組中的變數值,就像存取管線內定義的變數一樣。 例如,若要存取連結至管線之變數群組中名為 customer 的變數值,您可以在 $(customer) 工作參數或腳本中使用。

如果您在管線檔案中使用獨立變數和變數群組,請使用 name-value 獨立變數的語法。

variables:
- group: my-variable-group
- name: my-standalone-variable
  value: 'my-standalone-variable-value'

若要參考變數群組中的變數,您可以使用巨集語法或運行時間表達式。 在下列範例中,群組 my-variable-group 具有名為的 myhello變數。

若要使用執行時間表示式:

variables:
- group: my-variable-group
- name: my-passed-variable
  value: $[variables.myhello]
- script: echo $(my-passed-variable)

若要使用巨集語法:

variables:
- group: my-variable-group

steps:
- script: echo $(myhello)

您無法直接在文稿中存取秘密變數,包括加密的變數和密鑰保存庫變數。 您必須將這些變數當做自變數傳遞至工作。 如需詳細資訊,請參閱 秘密變數