了解如何设置 GitHub Actions 工作流来使用 Azure SQL 数据库后端部署 ASP.NET Core 应用程序。 完成后,你便拥有了一个在 Azure 中运行并连接到 SQL 数据库的 ASP.NET 应用。 首先使用 ARM 模板创建资源。
本教程不使用容器。 如果要部署到容器化的 ASP.NET Core 应用程序,请参阅使用 GitHub Actions 部署到用于容器的应用服务并连接到数据库。
在本教程中,你将了解如何执行以下操作:
- 使用 GitHub Actions 工作流通过 Azure 资源管理器模板(ARM 模板)将资源添加到 Azure
- 使用 GitHub Actions 工作流生成 ASP.NET Core 应用程序
如果没有 Azure 订阅,可在开始前创建一个试用帐户。
若要完成本教程,你需要:
- 具有活动订阅的 Azure 帐户。 创建试用版订阅。
- 一个 GitHub 帐户。 如果没有该帐户,请注册免费版。
- GitHub 存储库,用于存储资源管理器模板和工作流文件。 若要创建一个存储库,请参阅创建新存储库。
在 Azure 示例存储库中创建示例项目的分支。
https://github.com/Azure-Samples/dotnetcore-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}
在该示例中,请将占位符替换为你的订阅 ID、资源组名称和服务主体名称。 输出是一个 JSON 对象,包含的角色分配凭据可提供对应用服务应用的访问权限。 复制此 JSON 对象供以后使用。 如需帮助,请参阅配置部署凭据。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
在 GitHub 中,转到存储库。
选择“安全性”>“机密和变量”>“操作”。
选择“新建存储库机密”。
将 Azure CLI 命令的整个 JSON 输出粘贴到机密的值字段中。 为机密指定名称
AZURE_CREDENTIALS
。选择“添加机密”。
在 GitHub 存储库中为
SQLADMIN_PASS
和SQLADMIN_LOGIN
创建两个新机密。 确保选择复杂的密码,否则 SQL 数据库服务器的创建步骤将失败。 以后你不再可以访问此密码,因此请将其另行保存。为你的 Azure 订阅 ID 创建
AZURE_SUBSCRIPTION_ID
机密。 如果不知道订阅 ID,请使用 Azure Shell 中的此命令进行查找。 复制SubscriptionId
列中的值。az account list -o table
“创建 Azure 资源”工作流运行一个 ARM 模板以将资源部署到 Azure。 该工作流:
- 通过签出操作签出源代码。
- 通过 Azure 登录操作登录到 Azure,并收集环境和 Azure 资源的信息。
- 通过 Azure 资源管理器部署操作部署资源。
若要运行“创建 Azure 资源”工作流,请执行以下操作:
打开存储库内
.github/workflows
中的infraworkflow.yml
文件。将
AZURE_RESOURCE_GROUP
的值更新为你的资源组名称。将 ARM 部署操作中
region
的输入设置为你所在的区域。- 打开
templates/azuredeploy.resourcegroup.parameters.json
并将rgLocation
属性更新为你所在的区域。
- 打开
转到“操作”并选择“运行工作流” 。
通过检查“操作”页上是否显示了绿色打勾标记来确认操作是否成功运行。
创建资源后,转到“操作”,选择“创建 Azure 资源”,然后禁用该工作流。
在 Azure 门户中,打开使用
Create Azure Resources
工作流创建的新暂存应用服务(槽)。选择“获取发布配置文件”。
在文本编辑器中打开发布配置文件并复制其内容。
为
AZURE_WEBAPP_PUBLISH_PROFILE
创建新的 GitHub 机密。
若要运行生成和部署工作流:
打开存储库内
.github/workflows
中的workflow.yaml
文件。确认
AZURE_RESOURCE_GROUP
、AZURE_WEBAPP_NAME
、SQLSERVER_NAME
和DATABASE_NAME
的环境变量是否与infraworkflow.yml
中的环境变量相匹配。访问“交换到生产槽”输出中的 URL 来验证应用是否已部署。 应会看到名为“我的 TodoList 应用”的示例应用。
如果不再需要示例项目,请删除 Azure 门户中的资源组,并删除 GitHub 中的存储库。