你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 GitHub Actions 部署 Bicep 文件

GitHub Actions 是 GitHub 中用于自动执行软件开发工作流的一套功能。 在本快速入门中,你将使用 GitHub Actions 部署 Azure 资源管理器,以自动将 Bicep 文件部署到 Azure。

本快速入门简要介绍了 GitHub Actions 和 Bicep 文件。 若要了解设置 GitHub Actions 和项目的更详细步骤,请参阅使用 Bicep 和 GitHub Actions 部署 Azure 资源

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建帐户
  • 一个 GitHub 帐户。 如果没有该帐户,请注册免费版
  • 一个 GitHub 存储库,用于存储 Bicep 文件和工作流文件。 若要创建一个存储库,请参阅创建新存储库

创建资源组

创建资源组。 稍后在本快速入门中,你要将 Bicep 文件部署到此资源组。

az group create -n exampleRG -l westus

生成部署凭据

若要凭借 OIDC 使用 Azure 登录操作,需要在 Microsoft Entra 应用程序或用户分配的托管标识上配置联合标识凭据。

选项 1:Microsoft Entra 应用程序

选项 2:用户分配的托管标识

配置 GitHub 机密

需要向登录操作提供应用程序的“客户端 ID”、“目录(租户) ID”和“订阅 ID”。 这些值可直接在工作流中提供,或可存储在 GitHub 机密中并在工作流中引用。 将这些值保存为 GitHub 机密是更安全的选择。

  1. GitHub 中,转到存储库。

  2. 选择“安全性”>“机密和变量”>“操作”。

    添加机密的屏幕截图

  3. 选择“新建存储库机密”。

    注意

    若要增强公共存储库中的工作流安全性,请使用环境机密而不是存储库机密。 如果环境需要批准,作业在所需的审查者批准之前不能访问环境机密。

  4. AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_SUBSCRIPTION_ID 创建机密。 从 GitHub 机密的 Microsoft Entra 应用程序或用户分配的托管标识复制这些值:

    GitHub 机密 Microsoft Entra 应用程序或用户分配的托管标识
    AZURE_CLIENT_ID 客户端 ID
    AZURE_SUBSCRIPTION_ID 订阅 ID
    AZURE_TENANT_ID 目录(租户)ID

    注意

    出于安全原因,我们建议使用 GitHub 机密,而不是将值直接传递到工作流。

添加 Bicep 文件

将 Bicep 文件添加到 GitHub 存储库。 以下 Bicep 文件创建存储帐户:

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Bicep 文件采用一个名为 storagePrefix 的参数,其中包含 3 到 11 个字符。

你可以将该文件放到存储库中的任何位置。 下一部分中的工作流示例假设 Bicep 文件名为 main.bicep,并存储在存储库的根目录中。

创建工作流

工作流定义了在触发时要执行的步骤。 它是存储库的 .github/workflows/ 路径中的一个 YAML (.yml) 文件。 工作流文件扩展名可以是“.yml”或“.yaml”。

若要创建工作流,请执行以下步骤:

  1. 在 GitHub 存储库的顶部菜单中,选择“操作”。

  2. 选择“新建工作流”。

  3. 选择“自己设置工作流”。

  4. 如果希望使用“main.yml”以外的其他名称,请重命名工作流文件。 例如:deployBicepFile.yml。

  5. 将 yml 文件的内容替换为以下代码:

    on: [push]
    name: Azure ARM
    permissions:
      id-token: write
      contents: read
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
    
          # Checkout code
        - uses: actions/checkout@main
    
          # Log into Azure
        - uses: azure/login@v2
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
          # Deploy Bicep file
        - name: deploy
          uses: azure/arm-deploy@v1
          with:
            subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
            resourceGroupName: ${{ secrets.AZURE_RG }}
            template: ./main.bicep
            parameters: 'storagePrefix=mystore storageSKU=Standard_LRS'
            failOnStdErr: false
    
  6. 选择“提交更改”。

  7. 选择“直接提交到主分支”。

  8. 选择“提交新文件”(或“提交更改”)。

更新工作流文件或 Bicep 文件会触发工作流。 提交更改后,工作流将立即启动。

检查工作流状态

  1. 选择“操作”选项卡。你将看到列出的“创建 deployBicepFile.yml”工作流。 运行此工作流需要 1-2 分钟。
  2. 选择要打开的工作流,并验证 Status 是否为 Success

清理资源

不再需要资源组和存储库时,请通过删除资源组和 GitHub 存储库来清理部署的资源。

az group delete --name exampleRG

后续步骤