你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Github 操作是 GitHub 中的一个功能套件,可以在存储代码的同一位置自动执行软件开发工作流,并针对拉取请求和问题进行协作。
使用“部署 Azure 资源管理器模板”操作将 Azure 资源管理器模板(ARM 模板)自动部署到 Azure。
先决条件
具有活动订阅的 Azure 帐户。 免费创建帐户。
一个 GitHub 帐户。 如果没有该帐户,请注册免费版。
- GitHub 存储库,用于存储资源管理器模板和工作流文件。 若要创建一个存储库,请参阅创建新存储库。
工作流文件概述
工作流通过存储库的 /.github/workflows/
路径中的 YAML (.yml) 文件定义。 此定义包含组成工作流的各种步骤和参数。
此文件包含两个部分:
部分 | 任务 |
---|---|
身份验证 | 1. 生成部署凭据。 |
部署 | 1.部署资源管理器模板。 |
生成部署凭据
若要凭借 OIDC 使用 Azure 登录操作,需要在 Microsoft Entra 应用程序或用户分配的托管标识上配置联合标识凭据。
选项 1:Microsoft Entra 应用程序
- 通过 Azure 门户、Azure CLI 或 Azure PowerShell 创建具有服务主体的 Microsoft Entra 应用程序。
- 复制客户端 ID、订阅 ID 和目录(租户)ID 的值,以便在 GitHub Actions 工作流中稍后使用。
- 由 Azure 门户、Azure CLI 或 azure PowerShell 为服务主体分配适当的角色。
- 在 Microsoft Entra 应用程序上配置联合标识凭据,以信任 GitHub Actions 颁发的令牌到 GitHub 存储库。
选项 2:用户分配的托管标识
- 创建用户分配的托管标识。
- 复制客户端 ID、订阅 ID 和目录(租户)ID 的值,以便在 GitHub Actions 工作流中稍后使用。
- 为用户分配的托管标识分配适当的角色。
- 在用户分配的托管标识上配置联合标识凭据,以信任 GitHub Actions 颁发给 GitHub 存储库的令牌。
配置 GitHub 机密
需要向登录操作提供应用程序的“客户端 ID”、“目录(租户) ID”和“订阅 ID”。 这些值可直接在工作流中提供,或可存储在 GitHub 机密中并在工作流中引用。 将这些值保存为 GitHub 机密是更安全的选择。
在 GitHub 中,转到存储库。
选择“安全性”>“机密和变量”>“操作”。
选择“新建存储库机密”。
注意
若要增强公共存储库中的工作流安全性,请使用环境机密而不是存储库机密。 如果环境需要批准,作业在所需的审查者批准之前不能访问环境机密。
为
AZURE_CLIENT_ID
、AZURE_TENANT_ID
和AZURE_SUBSCRIPTION_ID
创建机密。 从 GitHub 机密的 Microsoft Entra 应用程序或用户分配的托管标识复制这些值:GitHub 机密 Microsoft Entra 应用程序或用户分配的托管标识 AZURE_CLIENT_ID 客户端 ID AZURE_SUBSCRIPTION_ID 订阅 ID AZURE_TENANT_ID (Azure租户ID) 目录(租户)ID 注意
出于安全原因,我们建议使用 GitHub 机密,而不是将值直接传递到工作流。
添加资源管理器模板
将资源管理器模板添加到 GitHub 存储库。 此模板可用于创建存储帐户。
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
你可以将该文件放到存储库中的任何位置。 下一部分的工作流示例假定模板文件名为“azuredeploy.json”,它存储在存储库的根目录下。
创建工作流
工作流文件必须存储在存储库根目录的“.github/workflow”文件夹中。 工作流文件扩展名可以是“.yml”或“.yaml”。
- 在 GitHub 存储库的顶部菜单中,选择“操作”。
- 选择“新建工作流”。
- 选择“自己设置工作流”。
- 如果希望使用“main.yml”以外的其他名称,请重命名工作流文件。 例如:“deployStorageAccount.yml”。
- 将 yml 文件的内容替换为以下内容:
on: [push]
name: Azure ARM
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Checkout code
- uses: actions/checkout@main
# Log into Azure
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Deploy ARM template
- name: Run ARM deploy
uses: azure/arm-deploy@v1
with:
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
resourceGroupName: ${{ secrets.AZURE_RG }}
template: ./azuredeploy.json
parameters: storageAccountType=Standard_LRS
# output containerName variable from template
- run: echo ${{ steps.deploy.outputs.containerName }}
注意
可以改为在 ARM 部署操作中指定一个 JSON 格式的参数文件(例如:.azuredeploy.parameters.json
)。
工作流文件的第一部分包含:
- name:工作流的名称。
- 事件:触发工作流的 GitHub 事件的名称。 当主分支上有推送事件时,会触发工作流,修改所指定的两个文件中的至少一个。 这两个文件分别是工作流文件和模板文件。
- 选择“开始提交”。
- 选择“直接提交到主分支”。
- 选择“提交新文件”(或“提交更改”)。
由于工作流配置为由要更新的工作流文件或模板文件触发,因此在提交更改后,工作流将立即启动。
检查工作流状态
- 选择“操作”选项卡。此时会看到列出的“创建 deployStorageAccount.yml”工作流。 运行此工作流需要 1-2 分钟。
- 选择要打开的工作流。
- 从菜单中选择“运行 ARM 部署”以验证此部署。
清理资源
不再需要资源组和存储库时,请通过删除资源组和 GitHub 存储库来清理部署的资源。