変数グループの管理
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
この記事では、Azure Pipelines で変数グループを作成して使用する方法について説明します。 変数グループには、YAML パイプラインに渡したり、プロジェクト内の複数のパイプラインで使用できるようにしたりできる値とシークレットが格納されます。
変数グループ内のシークレット変数は、保護されたリソースです。 承認、チェック、パイプラインのアクセス許可の組み合わせを追加して、変数グループ内のシークレット変数へのアクセスを制限できます。 シークレットでない変数へのアクセスは、承認、チェック、パイプラインのアクセス許可によって制限されません。
変数グループは、ロールとパーミッションのライブラリ セキュリティ モデルに従います。
前提条件
- パイプラインと変数を作成するアクセス許可を持つ Azure DevOps Services の組織とプロジェクト。
- Azure DevOps 組織または Azure DevOps Server コレクション内のプロジェクト。 プロジェクトがない場合は プロジェクトを作成します。
- Azure DevOps CLI を使用している場合は、Azure DevOps CLI 拡張機能を使用した Azure CLI バージョン 2.30.0 以降が必要です。 詳細については、「 Azure DevOps CLI の概要」を参照してください。
- パイプラインと変数を作成するアクセス許可を持つ Azure DevOps Server コレクションとプロジェクト。
- Azure DevOps 組織または Azure DevOps Server コレクション内のプロジェクト。 プロジェクトがない場合は プロジェクトを作成します。
CLI を設定する
Azure DevOps CLI を使用している場合は、Azure DevOps の組織とプロジェクトと連携するように CLI を設定する必要があります。
az login コマンドを使用して、Azure DevOps 組織にサインインします。
az login
メッセージが表示されたら、ターミナル ウィンドウに表示される一覧からサブスクリプションを選択します。
次のコマンドを使用して、最新バージョンの Azure CLI と Azure DevOps 拡張機能を実行していることを確認します。
az upgrade az extension add --name azure-devops --upgrade
Azure DevOps CLI コマンドでは、次を使用して既定の組織とプロジェクトを設定できます。
az devops configure --defaults organization=<YourOrganizationURL> project=<Project Name or ID>`
既定の組織とプロジェクトを設定していない場合は、コマンドで
detect=true
パラメーターを使用して、現在のディレクトリに基づいて組織とプロジェクトのコンテキストを自動的に検出できます。 既定値が構成されていない場合、または検出されない場合は、コマンドでorg
パラメーターとproject
パラメーターを明示的に指定する必要があります。
変数グループを作成する
プロジェクトでパイプライン実行の変数グループを作成できます。
Note
Azure Key Vault のシークレットを変数としてリンクするシークレット変数グループを作成するには、「 変数グループを Azure Key Vault 内のシークレットにリンクするの手順に従います。
Azure DevOps プロジェクト ページの左側のメニューで [パイプライン]>[ライブラリ] を選択します。
[ライブラリ] ページで、[+ 変数グループ] を選択します。
新しい変数グループ ページの [プロパティ] で、変数グループの名前と説明 (オプション) を入力します。
[変数] で [+ 追加] を選択し、グループに含める変数名と値を入力します。 値を暗号化して安全に格納する場合は、変数の横にあるロック アイコンを選択します。
[+ 追加] を選択して、新しい変数をそれぞれ追加します。 変数の追加が完了したら、[保存] を選択します。
これで、プロジェクト パイプラインでこの変数グループを使用できるようになりました。
変数グループを更新する
変数グループは、Azure Pipelines ユーザー インターフェイスを使用して更新できます。
- Azure DevOps プロジェクト ページの左側のメニューで [パイプライン]>[ライブラリ] を選択します。
- [ライブラリ] ページで、更新する変数グループを選択します。 変数グループの一覧にカーソルを合わせ、[その他のオプション] アイコンを選択し、メニューから [編集] を選択することもできます。
- 変数グループ ページで、プロパティのいずれかを変更し、[保存] を選択します。
変数グループを削除する
Azure Pipelines ユーザー インターフェイスで変数グループを削除できます。
- Azure DevOps プロジェクト ページの左側のメニューで [パイプライン]>[ライブラリ] を選択します。
- [ライブラリ] ページで、削除する変数グループにカーソルを合わせ、[その他のオプション] アイコンを選択します。
- メニューから [削除] を選択し、確認画面で [削除] を選択します。
変数グループ内の変数を管理します。
Azure Pipelines ユーザー インターフェイスを使用して、変数グループ内の変数を変更、追加、または削除できます。
- Azure DevOps プロジェクト ページの左側のメニューで [パイプライン]>[ライブラリ] を選択します。
- [ライブラリ] ページで、更新する変数グループを選択します。 変数グループの一覧にカーソルを合わせ、[その他のオプション] アイコンを選択し、メニューから [編集] を選択することもできます。
- 変数グループ ページでは、次のことができます。
- 変数名または値のいずれかを変更します。
- 変数名の横にあるごみ箱アイコンを選択して、変数を削除します。
- 変数の値の横にあるロック アイコンを選択して、変数をシークレットまたは非シークレットに変更します。
- [+ 追加] を選択して、新しい変数を追加します。
- 変更後、[保存] を選択します。
パイプラインで変数グループを使用する
変数グループは、YAML またはクラシック パイプラインで使用できます。 変数グループに加えた変更は、変数グループがリンクされているすべての定義またはステージで自動的に利用できるようになります。
YAML パイプラインで変数グループにのみ名前を付けると、リポジトリにコードをプッシュできるユーザーは誰でも変数グループ内のシークレットの内容を抽出できるようになります。 したがって、YAML パイプラインで変数グループを使用するには、パイプラインがグループを使用するように承認する必要があります。 Azure Pipelines ユーザー インターフェイスまたは Azure DevOps CLI を使用して、変数グループを使用するパイプラインを承認できます。
Pipelines UI を使用した承認
Azure Pipelines ユーザー インターフェイスを使用して、パイプラインが変数グループを使用することを承認できます。
- Azure DevOps プロジェクト ページの左側のメニューで [パイプライン]>[ライブラリ] を選択します。
- [ライブラリ] ページで、承認する変数グループを選択します。
- 変数グループのページで、[パイプラインのアクセス許可] タブを選択します。
- [パイプラインのアクセス許可] 画面で、+ を選択してから、承認するパイプラインを選択します。 または、[その他の操作] アイコンを選択し、[アクセスを開く] を選択し、もう一度 [アクセスを開く] を選択して確認します。
パイプラインを選択すると、そのパイプラインが変数グループを使用することが許可されます。 別のパイプラインを承認するには、もう一度 + アイコンを選択します。 [アクセスを開く] を選択すると、変数グループを使用するすべてのプロジェクト パイプラインが承認されます。 グループ内に秘密がない場合は、[アクセスを開く] が適切なオプションとなる可能性があります。
変数グループを承認する別の方法は、パイプラインを選択し、[編集] を選択し、ビルドを手動でキューに入れることです。 リソース承認エラーが表示され、変数グループの承認されたユーザーとしてパイプラインを明示的に追加できます。
Azure DevOps CLI を使用した承認
Azure DevOps Services では、Azure DevOps CLI を使用して変数グループを承認できます。
Azure DevOps CLI コマンドは、Azure DevOps Server ではサポートされていません。
変数グループを使用するようにすべてのプロジェクト パイプラインを承認するには、az pipelines variable-group create コマンドで authorize
パラメーターを設定して、true
します。 グループにシークレットがない場合は、このオープン アクセスが適している可能性があります。
変数グループをパイプラインにリンクする
変数グループを使用するように 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)
暗号化された変数や Key Vault 変数などのシークレット変数にスクリプトで直接アクセスすることはできません。 これらの変数を引数としてタスクに渡す必要があります。 詳しくは、「シークレット変数」を参照してください。