Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本教程逐步介绍如何设置一个 GitHub Actions 工作流,以使用 Azure SQL 数据库后端部署容器化的 ASP.NET Core 应用程序。 完成后,你便拥有了一个在 Azure 中运行并连接到 SQL 数据库的 ASP.NET 应用。 首先,你将使用 ARM 模板 GitHub Actions 工作流创建 Azure资源。
在本教程中,你将了解如何执行以下操作:
- 使用 GitHub Actions 工作流通过 Azure 资源管理器模板(ARM 模板)将资源添加到 Azure
- 使用 GitHub Actions 工作流生成包含最新 Web 应用更改的容器
如果没有 Azure 订阅,可在开始前创建一个试用帐户。
先决条件
若要完成本教程,你需要:
- 具有活动订阅的 Azure 帐户。 创建试用版订阅。
- 一个 GitHub 帐户。 如果没有该帐户,请注册免费版。
- GitHub 存储库,用于存储资源管理器模板和工作流文件。 若要创建一个存储库,请参阅创建新存储库。
下载示例
在 Azure 示例存储库中创建示例项目的分支。
https://github.com/Azure-Samples/dotnetcore-containerized-sqldb-ghactions/
创建资源组
使用 Azure CLI。
az group create --name {resource-group-name} --location {resource-group-location}
生成部署凭据
需使用服务主体进行身份验证才能正常运行资源部署脚本。 可以使用 Azure CLI 中的 az ad sp create-for-rbac 命令创建服务主体。
az ad sp create-for-rbac --name "{service-principal-name}" --sdk-auth --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}
在该示例中,请将占位符替换为你的订阅 ID、资源组名称和服务主体名称。 输出是一个 JSON 对象,包含的角色分配凭据可提供对应用服务应用的访问权限。 复制此 JSON 对象供以后使用。 如需帮助,请参阅配置部署凭据。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
重要
始终应授予最小访问权限。 上一个示例中的范围仅限于特定的应用服务应用而不是整个资源组。
配置 GitHub 机密以进行身份验证
在 GitHub 中,转到存储库。
选择“安全性”>“机密和变量”>“操作”。
选择“新建存储库机密”。
将 Azure CLI 命令的整个 JSON 输出粘贴到机密的值字段中。 为机密指定名称
AZURE_CREDENTIALS。选择“添加机密”。
添加 SQL Server 机密
在存储库中为 SQL_SERVER_ADMIN_PASSWORD 创建新机密。 此机密可以是符合 Azure 密码安全标准的任何密码。 以后你不再可以访问此密码,因此请将其另行保存。
创建 Azure 资源
“创建 Azure 资源”工作流运行一个 ARM 模板以将资源部署到 Azure。 该工作流:
- 通过签出操作签出源代码。
- 通过 Azure 登录操作登录到 Azure,并收集环境和 Azure 资源的信息。
- 通过 Azure 资源管理器部署操作部署资源。
若要运行“创建 Azure 资源”工作流,请执行以下操作:
打开存储库内
.github/workflows中的azuredeploy.yaml文件。将
AZURE_RESOURCE_GROUP的值更新为你的资源组名称。将
WEB_APP_NAME和SQL_SERVER_NAME的值更新为 Web 应用名称和 SQL Server 名称。转到“操作”并选择“运行工作流” 。
通过检查“操作”页上是否显示了绿色打勾标记来确认操作是否成功运行。
添加容器注册表和 SQL 机密
在 Azure 门户中,打开资源组中新建的 Azure 容器注册表。
转到“访问密钥”,然后复制用户名和密码值。
在存储库中为
ACR_USERNAME和ACR_PASSWORD密码创建新的 GitHub 机密。在 Azure 门户中,打开你的 SQL 数据库。 打开“连接字符串”并复制值。
为
SQL_CONNECTION_STRING创建新机密。 将{your_password}替换为你的SQL_SERVER_ADMIN_PASSWORD。
生成、推送和部署映像
生成、推送和部署工作流生成一个包含最新应用更改的容器,将该容器推送到 Azure 容器注册表,并将 Web 应用程序过渡槽更新为指向所推送的最新容器。 该工作流包含生成和部署作业:
- 生成作业通过签出操作签出源代码。 然后,该作业使用 Docker 登录操作和自定义脚本向 Azure 容器注册表进行身份验证,生成容器映像,并将其部署到 Azure 容器注册表。
- 部署作业通过 Azure 登录操作登录到 Azure,并收集环境和 Azure 资源的信息。 然后,该作业通过 Azure 应用服务设置操作更新 Web 应用设置,并通过 Azure Web 部署操作部署到应用服务过渡槽。 最后,该作业运行自定义脚本来更新 SQL 数据库,并从过渡槽交换到生产槽。
若要运行生成、推送和部署工作流,请执行以下操作:
打开存储库内
.github/workflows中的build-deploy.yaml文件。确认
AZURE_RESOURCE_GROUP和WEB_APP_NAME的环境变量是否与azuredeploy.yaml中的环境变量相匹配。将
ACR_LOGIN_SERVER值更新为你的 Azure 容器注册表登录服务器。