共用方式為


管理變數群組

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

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

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

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

建立變數群組

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

注意

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

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

必要條件

您有權建立管線和變數的 Azure DevOps 組織和專案。

建立變數群組

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

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

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

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

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

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

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

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

您可以建立變數群組,連結至現有的 Azure 金鑰保存庫,並將選取的 金鑰保存庫 秘密對應至變數群組。 只有秘密名稱會對應至變數群組,而不是秘密值。 連結至變數群組的管線會從保存庫擷取最新的秘密值。

對密鑰保存庫中現有秘密所做的任何變更,都會自動提供給所有使用變數群組的管線使用。 不過,如果從保存庫新增或刪除秘密,則相關聯的變數群組不會自動更新。 您必須明確地更新秘密,以包含在變數群組中。

雖然 金鑰保存庫 支援在 Azure 中儲存和管理密碼編譯密鑰和憑證,但 Azure Pipelines 變數群組整合僅支持對應密鑰保存庫秘密。 不支援密碼編譯金鑰和憑證。

注意

不支援使用 Azure 角色型存取控制 (Azure RBAC) 的金鑰保存庫。

必要條件

建立變數群組

  1. 在您的 Azure DevOps 專案中,選取 [管線連結>>+ 變數] 群組。
  2. 在 [ 變數群組] 頁面上,輸入變數群組的名稱和選擇性描述。
  3. 啟用 Azure 金鑰保存庫中的連結秘密作為變數切換。
  4. 選取您的 Azure 訂用帳戶端點和金鑰保存庫名稱。
  5. 選取保存庫名稱旁的 [ 授權 ],讓 Azure DevOps 存取金鑰保存庫。
  6. 在 [ 選擇秘密] 畫面上,從保存庫選取特定秘密以對應至此變數群組,然後選取 [ 確定]。
  7. 選取 [ 儲存 ] 以儲存秘密變數群組。

具有 Azure 金鑰保存庫整合之變數群組的螢幕快照。

注意

您的 Azure 服務連線至少 必須具有金鑰保存庫的 [取得 ] 和 [列出 ] 許可權,您可以在上述步驟中授權。 您也可以遵循下列步驟,從 Azure 入口網站 提供這些權限:

  1. 開啟金鑰保存庫的 [設定],然後選擇 [存取組態>移至存取原則]。
  2. 在 [存取原則] 頁面上,如果您的 Azure Pipelines 專案未列在 [至少取得列出許可權的應用程式] 底下,請選取 [建立]。
  3. 在 [秘密許可權] 底下,選取 [取得列表],然後選取 [下一步]。
  4. 選取您的服務主體,然後選取 [ 下一步]。
  5. 再次選取 [下一步 ],檢閱設定,然後選取 [ 建立]。

如需詳細資訊,請參閱使用 Azure 金鑰保存庫 秘密

更新變數群組

您可以使用 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 管線使用變數群組,您就可以在管線中使用變數群組或變數。

授權 YAML 管線使用變數群組

如果您只將 YAML 管線中的變數群組命名,任何可以將程式代碼推送至存放庫的人,都可以擷取變數群組中的秘密內容。 因此,若要搭配 YAML 管線使用變數群組,您必須授權管線使用群組。 傳統管線可以使用變數群組,而不需個別授權。

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

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

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

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

在 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)

在 YAML 管線中使用變數群組變數

您可以存取連結變數群組中的變數值,方式與您存取管線內定義的變數相同。 例如,若要存取連結至管線之變數群組中名為 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)

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

在傳統管線中使用變數群組

傳統管線可以使用變數群組,而不需個別授權。 若要使用變數群組:

  1. 開啟您的傳統管線。

  2. 選取 [變數>變數群組],然後選取 [鏈接變數群組]。

  3. 在組建管線中,您會看到可用的群組清單。 將變數群組連結至管線。 群組中的所有變數都可用於管線內。

    在發行管線中,您也會在管線中看到階段的下拉式清單。 將變數群組連結至管線本身,或連結至發行管線的一或多個特定階段。 如果您連結至一或多個階段,變數群組中的變數會限定於這些階段,而且無法在發行的其他階段中存取。

    顯示連結變數群組的螢幕快照。

當您在多個範圍中設定具有相同名稱的變數時,會先使用下列優先順序最高:

  1. 在佇列時設定的變數
  2. 管線中設定的變數
  3. 變數群組中的變數集

如需變數優先順序的詳細資訊,請參閱 變數的擴充。

注意

連結至相同範圍中管線之不同群組中的變數(例如作業或階段)將會碰撞,而且結果可能會無法預測。 請確定您針對所有變數群組的變數使用不同的名稱。