次の方法で共有


高度なパイプラインの機能と構成

次のセクションで説明するように、 azd pipeline config コマンドを拡張して、高度なシナリオとカスタム要件をサポートできます。

カスタム シークレットと変数

既定では、 azd はパイプラインに不可欠な変数とシークレットを設定します。 たとえば、 azd pipeline configを実行すると、 subscription idenvironment nameregionなどの変数が作成されます。 これらの変数は、パイプライン定義で参照されます。

env:
   AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
   AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
   AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
   AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
   AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}

パイプラインを実行すると、 azd 環境からこれらの値が取得され、パイプライン変数とシークレットにマップされます。 テンプレートによっては、環境変数を使用して追加の設定を制御できます。 たとえば、 KEY_VAULT_NAME 環境変数を設定して、インフラストラクチャ内の Key Vault リソースの名前を定義できます。

カスタム変数とシークレットをサポートするには、テンプレートの azure.yaml ファイルで定義します。 例えば次が挙げられます。

pipeline:
  variables:
    - KEY_VAULT_NAME
    - STORAGE_NAME
  secrets:
    - CONNECTION_STRING

この構成では、 azd は、リストされている変数またはシークレットのいずれかが環境内に値を持っているかどうかを確認します。 次に、環境の値を使用して、対応する変数またはシークレットをパイプラインに作成します。

これらの変数とシークレットは、 azure-dev.yaml パイプライン定義で参照できます。

- name: Provision Infrastructure
   run: azd provision --no-prompt
   env:
      KEY_VAULT_NAME: ${{ variables.KEY_VAULT_NAME }}
      STORAGE_NAME: ${{ variables.STORAGE_NAME }}
      CONNECTION_STRING: ${{ secrets.CONNECTION_STRING }}

azure.yaml内のシークレットまたは変数の一覧を更新した後、azd pipeline config再実行してパイプライン値を更新します。

インフラストラクチャ パラメータ

次の Bicep の例を考えてみましょう。

@secure()
param BlobStorageConnection string

BlobStorageConnection パラメーターに既定値がない場合は、azdセットアップ時に値の入力を求められます。 ただし、CI/CD の実行中に対話型プロンプトはありません。 代わりに、 azd は、 azd pipeline configの実行時に値を要求し、それをパイプライン シークレットとして保存し、パイプラインの実行時に自動的に取得します。

azd では、 AZD_INITIAL_ENVIRONMENT_CONFIG と呼ばれるパイプライン シークレットを使用して、必要なパラメーター値を格納して指定します。 パイプライン定義でこのシークレットを参照します。

- name: Provision Infrastructure
   run: azd provision --no-prompt
   env:
      AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }}

パイプラインを実行すると、 azd はシークレットを使用してパラメーター値を指定するため、対話型プロンプトが不要になります。

新しいパラメーターを追加する場合は、 azd pipeline config 再実行してパイプライン構成を更新します。