新增和使用變數群組

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

變數群組會儲存您可能想要 傳遞至 YAML 管線的值和秘密,或跨多個管線 提供。 您可以在相同專案中的多個管線中共用和使用變數群組。

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

建立變數群組

您無法在 YAML 中建立變數群組,但可以使用它們,如使用變數群組中所述

使用變數群組

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

variables:
- group: my-variable-group

然後,變數群組中的變數可以在 YAML 檔案中使用。

如果您使用變數和變數群組,請使用 name/value 個別非群組變數的語法:

variables:
- group: my-variable-group
- name: my-bare-variable
  value: 'value of my-bare-variable'

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

variables:
- group: my-variable-group
- name: my-passed-variable
  value: $[variables.myhello] # uses runtime expression

steps:
- script: echo $(myhello) # uses macro syntax
- script: echo $(my-passed-variable) 

您可以在相同的管線中參考多個變數群組。 如果多個變數群組包含相同的變數,則 YAML 檔案中最後包含的變數群組會設定變數的值。

variables:
- group: my-first-variable-group
- group: my-second-variable-group

您也可以參考範本中的變數群組。 在範本 variables.yml中,會參考群組 my-variable-group 。 變數群組包含名為的 myhello變數。

# variables.yml
variables:
- group: my-variable-group

在此管線中,會包含變數群組my-variable-group中的變數$(myhello)variables.yml參考。

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

授權變數群組

若要使用變數群組,您必須授權群組。 如果您只將 YAML 中的變數群組命名為 ,則任何可將程式代碼推送至存放庫的人員都可以擷取變數群組中的秘密內容。 若要授權群組,請使用下列其中一種技術:

  • 若要授權任何管線使用變數群組,請移至 Azure Pipelines。 如果您沒有群組中的任何秘密,這可能是一個很好的選擇。 選取 [鏈接庫>變數群組],然後選取有問題的變數群組,然後啟用 [允許存取所有管線] 設定。

  • 若要授權特定管線的變數群組,請開啟管線,選取 [ 編輯],然後手動將組建排入佇列。 您會看到資源授權錯誤和錯誤上的「授權資源」動作。 選擇此動作,以明確將管線新增為變數群組的授權使用者。

注意

如果您將變數群組新增至管線,並在預期時未在組建中收到資源授權錯誤,請關閉 [允許存取所有管線] 設定。

存取連結變數群組中的變數值,方式與您 在管線本身內定義的變數相同。 例如,若要存取連結至管線之變數群組中名為 customer 的變數值,請在 $(customer) 工作參數或腳本中使用 。 但是,您無法直接在腳本中存取秘密變數(加密的變數和密鑰保存庫變數),而是必須將它們當做自變數傳遞至工作。 如需詳細資訊,請參閱 秘密

您對變數群組所做的變更會自動提供給變數群組連結的所有定義或階段。

列出變數群組

使用 CLI 以 az pipelines variable-group list 命令列出管線執行的變數群組。 如果適用於 CLI 的 Azure DevOps 延伸模組不熟悉,請參閱 開始使用 Azure DevOps CLI

az pipelines variable-group list [--action {manage, none, use}]
                                 [--continuation-token]
                                 [--group-name]
                                 [--org]
                                 [--project]
                                 [--query-order {Asc, Desc}]
                                 [--top]

選擇性參數

  • action:指定可在變數群組上執行的動作。 接受的值是 管理使用
  • continuation-token:列出提供接續令牌之後的變數群組。
  • group-name:變數群組的名稱。 接受通配符,例如 new-var*
  • 組織:Azure DevOps 組織 URL。 使用 az devops configure -d organization=ORG_URL設定預設組織。 如果未設定為預設或使用 git config來挑選,則為必要項。 範例:--org https://dev.azure.com/MyOrganizationName/
  • 專案:專案的名稱或識別碼。 使用 az devops configure -d project=NAME_OR_ID設定預設專案。 如果未設定為預設或使用 git config來挑選,則為必要項。
  • 查詢順序:以遞增或遞減順序序列出結果。。 接受的值是 AscDesc
  • top:要列出之變數群組的數目。

範例

下列命令會以遞增順序列出前三個變數群組,並以數據表格式傳回結果。

az pipelines variable-group list --top 3 --query-order Asc --output table

ID    Name               Type    Number of Variables
----  -----------------  ------  ---------------------
1     myvariables        Vsts    2
2     newvariables       Vsts    4
3     new-app-variables  Vsts    3

顯示變數群組的詳細數據

使用 az pipelines variable-group show 命令顯示專案中變數群組的詳細數據。 如果適用於 CLI 的 Azure DevOps 延伸模組不熟悉,請參閱 開始使用 Azure DevOps CLI

az pipelines variable-group show --group-id
                                 [--org]
                                 [--project]

參數

  • group-id:必要。 變數群組的標識碼。 若要尋找變數群組標識符,請參閱 列出變數群組
  • 組織:Azure DevOps 組織 URL。 使用 az devops configure -d organization=ORG_URL設定預設組織。 如果未設定為預設或使用 git config來挑選,則為必要項。 範例:--org https://dev.azure.com/MyOrganizationName/
  • 專案:專案的名稱或識別碼。 使用 az devops configure -d project=NAME_OR_ID設定預設專案。 如果未設定為預設或使用 git config來挑選,則為必要項。

範例

下列命令顯示識別碼為 4變數群組詳細數據,並以 YAML 格式傳回結果。

az pipelines variable-group show --group-id 4 --output yaml

authorized: false
description: Variables for my new app
id: 4
name: MyNewAppVariables
providerData: null
type: Vsts
variables:
  app-location:
    isSecret: null
    value: Head_Office
  app-name:
    isSecret: null
    value: Fabrikam

刪除變數群組

使用 az pipelines variable-group delete 命令,刪除專案中的變數群組。 如果適用於 CLI 的 Azure DevOps 延伸模組不熟悉,請參閱 開始使用 Azure DevOps CLI

az pipelines variable-group delete --group-id
                                   [--org]
                                   [--project]
                                   [--yes]

參數

  • group-id:必要。 變數群組的標識碼。 若要尋找變數群組標識符,請參閱 列出變數群組
  • 組織:Azure DevOps 組織 URL。 使用 az devops configure -d organization=ORG_URL設定預設組織。 如果未設定為預設或使用 git config來挑選,則為必要項。 範例:--org https://dev.azure.com/MyOrganizationName/
  • 專案:專案的名稱或識別碼。 使用 az devops configure -d project=NAME_OR_ID設定預設專案。 如果未設定為預設或使用 git config來挑選,則為必要項。
  • :選擇性。 不提示確認。

範例

下列命令會刪除標識碼為 1 且未提示確認的變數群組。

az pipelines variable-group delete --group-id 1 --yes

Deleted variable group successfully.

將變數新增至變數群組

使用 Azure DevOps CLI,您可以使用 az pipelines variable-group variable create 命令,將變數新增至管線中的變數群組。 如果適用於 CLI 的 Azure DevOps 延伸模組不熟悉,請參閱 開始使用 Azure DevOps CLI

az pipelines variable-group variable create --group-id
                                            --name
                                            [--org]
                                            [--project]
                                            [--secret {false, true}]
                                            [--value]

參數

  • group-id:必要。 變數群組的標識碼。 若要尋找變數群組標識符,請參閱 列出變數群組
  • name:必要。 您要新增之變數的名稱。
  • 組織:Azure DevOps 組織 URL。 使用 az devops configure -d organization=ORG_URL設定預設組織。 如果未設定為預設或使用 git config來挑選,則為必要項。 範例:--org https://dev.azure.com/MyOrganizationName/
  • 專案:專案的名稱或識別碼。 使用 az devops configure -d project=NAME_OR_ID設定預設專案。 如果未設定為預設或使用 git config來挑選,則為必要項。
  • secret:選擇性。 指出變數的值是否為秘密。 接受的值為 falsetrue
  • value:非秘密變數的必要值。 變數的值。 針對秘密變數,如果未 提供 value 參數,則會從前面 AZURE_DEVOPS_EXT_PIPELINE_VAR_ 加上的環境變數中挑選,或系統會提示使用者透過標準輸入輸入。 例如,名為 MySecret 的變數可以使用環境變數 AZURE_DEVOPS_EXT_PIPELINE_VAR_MySecret來輸入 。

範例

下列命令會在標識碼為 4 的變數群組中建立變數。 新的變數命名 為 requires-login ,且值為 True,結果會以數據表格式顯示。

az pipelines variable-group variable create --group-id 4 --name requires-login --value True --output table

Name            Is Secret    Value
--------------  -----------  -------
requires-login  False        True

列出變數群組中的變數

您可以使用 az pipelines variable-group variable list 命令,列出變數群組中的變數。 如果適用於 CLI 的 Azure DevOps 延伸模組不熟悉,請參閱 開始使用 Azure DevOps CLI

az pipelines variable-group variable list --group-id
                                          [--org]
                                          [--project]

參數

  • group-id:必要。 變數群組的標識碼。 若要尋找變數群組標識符,請參閱 列出變數群組
  • 組織:Azure DevOps 組織 URL。 使用 az devops configure -d organization=ORG_URL設定預設組織。 如果未設定為預設或使用 git config來挑選,則為必要項。 範例:--org https://dev.azure.com/MyOrganizationName/
  • 專案:專案的名稱或識別碼。 使用 az devops configure -d project=NAME_OR_ID設定預設專案。 如果未設定為預設或使用 git config來挑選,則為必要項。

範例

下列命令會列出標識碼為 4 的變數群組中的所有變數,並以數據表格式顯示結果。

az pipelines variable-group variable list --group-id 4 --output table

Name            Is Secret    Value
--------------  -----------  -----------
app-location    False        Head_Office
app-name        False        Fabrikam
requires-login  False        True

更新變數群組中的變數

使用 az pipelines variable-group variable update 命令更新變數群組中的變數。 如果適用於 CLI 的 Azure DevOps 延伸模組不熟悉,請參閱 開始使用 Azure DevOps CLI

az pipelines variable-group variable update --group-id
                                            --name
                                            [--new-name]
                                            [--org]
                                            [--project]
                                            [--prompt-value {false, true}]
                                            [--secret {false, true}]
                                            [--value]

參數

  • group-id:必要。 變數群組的標識碼。 若要尋找變數群組標識符,請參閱 列出變數群組
  • name:必要。 您要新增之變數的名稱。
  • new-name:選擇性。 指定 以變更變數的名稱。
  • 組織:Azure DevOps 組織 URL。 使用 az devops configure -d organization=ORG_URL設定預設組織。 如果未設定為預設或使用 git config來挑選,則為必要項。 範例:--org https://dev.azure.com/MyOrganizationName/
  • 專案:專案的名稱或識別碼。 使用 az devops configure -d project=NAME_OR_ID設定預設專案。 如果未設定為預設或使用 git config來挑選,則為必要項。
  • prompt-value:設定為 true ,以使用環境變數或透過標準輸入提示來更新秘密變數的值。 接受的值為 falsetrue
  • secret:選擇性。 指出變數的值是否保持秘密。 接受的值為 falsetrue
  • value:更新 變數的值。 針對秘密變數,請使用 提示值 參數來提示它透過標準輸入輸入。 對於非互動式控制台,可以從前面加上 AZURE_DEVOPS_EXT_PIPELINE_VAR_的環境變數中挑選它。 例如,名為 MySecret 的變數可以使用環境變數 AZURE_DEVOPS_EXT_PIPELINE_VAR_MySecret來輸入 。

範例

下列命令會以標識碼為 4 的變數群組中,將 requires-login 變數更新為 False 的新值。 它會指定變數為 秘密 ,並以 YAML 格式顯示結果。 請注意,輸出會將值 顯示為 null而不是 False ,因為它是秘密隱藏值。

az pipelines variable-group variable update --group-id 4 --name requires-login --value False --secret true --output yaml

requires-login:
  isSecret: true
  value: null

從變數群組中刪除變數

使用 az pipelines variable-group variable delete 命令,從變數群組中刪除 變數。 如果適用於 CLI 的 Azure DevOps 延伸模組不熟悉,請參閱 開始使用 Azure DevOps CLI

az pipelines variable-group variable delete --group-id
                                            --name
                                            [--org]
                                            [--project]
                                            [--yes]

參數

  • group-id:必要。 變數群組的標識碼。 若要尋找變數群組標識符,請參閱 列出變數群組
  • name:必要。 您要刪除的變數名稱。
  • 組織:Azure DevOps 組織 URL。 使用 az devops configure -d organization=ORG_URL設定預設組織。 如果未設定為預設或使用 git config來挑選,則為必要項。 範例:--org https://dev.azure.com/MyOrganizationName/
  • 專案:專案的名稱或識別碼。 使用 az devops configure -d project=NAME_OR_ID設定預設專案。 如果未設定為預設或使用 git config來挑選,則為必要項。
  • :選擇性。 不提示確認。

範例

下列命令會從標識碼為 4 的變數群組中刪除 requires-login 變數,並提示確認。

az pipelines variable-group variable delete --group-id 4 --name requires-login

Are you sure you want to delete this variable? (y/n): y
Deleted variable 'requires-login' successfully.

注意

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

將現有的 Azure 金鑰保存庫連結至變數群組,並將選擇性保存庫秘密對應至變數群組。

  1. 在 [ 變數群組 ] 頁面中,啟用 Azure 金鑰保存庫中的連結秘密作為變數。 您需要包含秘密的現有金鑰保存庫。 使用 Azure 入口網站 建立金鑰保存庫。

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

  2. 指定您的 Azure 訂用帳戶端點,以及包含秘密的保存庫名稱。

    請確定 Azure 服務連線至少 具有保存庫的取得列出 秘密管理許可權。 選擇保存庫名稱旁的 [ 授權 ],讓 Azure Pipelines 設定這些許可權。 或者,在 Azure 入口網站手動設定許可權:

    1. 開啟保存庫 設定,然後選擇 [存取原則>] [新增]。
    2. 選取 [ 選取主體 ],然後選擇用戶端帳戶的服務主體。
    3. 選取 [秘密許可權],並確定 [取得] 和 [列表] 具有複選標記。
    4. 選取 OK,儲存變更。
  3. 在 [ 變數群組] 頁面上,選取 [+ 新增 ] 以從保存庫選取特定秘密,以對應至此變數群組。

管理金鑰保存庫秘密

請參閱下列用於管理秘密的實用秘訣清單。

  • 只有秘密 名稱 會對應至變數群組,而不是秘密值。 從保存庫擷取的最新秘密值會用於連結至變數群組的管線執行中。

  • 對密鑰保存庫中現有秘密所做的任何變更,都會自動提供給變數群組所使用的所有管線。

  • 當新的秘密新增至保存庫或刪除時,不會自動更新相關聯的變數群組。 變數群組中包含的秘密必須明確更新,以便正確執行使用變數群組的管線。

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

展開群組中的變數

當您在群組中設定變數,並將其用於 YAML 檔案時,它等於 YAML 檔案中的其他已定義變數。 如需變數優先順序的詳細資訊,請參閱 變數