教程:使用 GitHub Actions 部署到应用服务并连接到数据库
了解如何设置 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 中的存储库。