高级管道功能和配置

可以扩展 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 pipeline config时请求该值,azd将其保存为管道机密,并在管道运行时自动检索该值。

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 以更新管道配置。