Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Github 操作是 GitHub 中的一个功能套件,可以在存储代码的同一位置自动执行软件开发工作流,并针对拉取请求和问题进行协作。
使用“部署 Azure 资源管理器模板”操作将 Azure 资源管理器模板(ARM 模板)自动部署到 Azure。
先决条件
具有活动订阅的 Azure 帐户。 创建试用版订阅。
一个 GitHub 帐户。 如果没有该帐户,请注册免费版。
- GitHub 存储库,用于存储资源管理器模板和工作流文件。 若要创建一个存储库,请参阅创建新存储库。
工作流文件概述
工作流通过存储库的 /.github/workflows/ 路径中的 YAML (.yml) 文件定义。 此定义包含组成工作流的各种步骤和参数。
此文件包含两个部分:
| 部分 | 任务 |
|---|---|
| 身份验证 | 1. 生成部署凭据。 |
| 部署 | 1.部署资源管理器模板。 |
生成部署凭据
可以使用 Azure CLI 中的 az ad sp create-for-rbac 命令创建服务主体。
如果没有资源组,请创建一个。
az group create -n {MyResourceGroup} -l {location}
请将 myApp 占位符替换为应用程序的名称。
az ad sp create-for-rbac --name {myApp} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/{MyResourceGroup} --sdk-auth
在上面的示例中,请将占位符替换为你的订阅 ID 和资源组名称。 输出是一个 JSON 对象,包含的角色分配凭据可提供对应用程序服务应用的访问权限,如下所示。 复制此 JSON 对象供以后使用。 你只需要具有 clientId、clientSecret、subscriptionId 和 tenantId 值的部分。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
重要
始终应授予最小访问权限。 上一示例中的范围限制为资源组。
配置 GitHub 机密
需要为 Azure 凭据、资源组和订阅创建机密。
在 GitHub 中,浏览你的存储库。
选择“设置”>“机密”>“新建机密”。
将 Azure CLI 命令的整个 JSON 输出粘贴到机密的值字段中。 为机密指定名称
AZURE_CREDENTIALS。创建另一个名为
AZURE_RG的机密。 将资源组的名称添加到该机密的“值”字段(例如:myResourceGroup)。再创建一个名为
AZURE_SUBSCRIPTION的机密。 将订阅 ID 添加到该机密的“值”字段(例如:90fd3f9d-4c61-432d-99ba-1273f236afa2)。
添加资源管理器模板
将资源管理器模板添加到 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 存储库来清理部署的资源。