教程:使用 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 机密以进行身份验证

  1. GitHub 中,转到存储库。

  2. 选择“安全性”>“机密和变量”>“操作”。

  3. 选择“新建存储库机密”。

  4. 将 Azure CLI 命令的整个 JSON 输出粘贴到机密的值字段中。 为机密指定名称 AZURE_CREDENTIALS

  5. 选择“添加机密”。

为生成项添加 Github 机密

  1. 在 GitHub 存储库中为 SQLADMIN_PASSSQLADMIN_LOGIN 创建两个新机密。 确保选择复杂的密码,否则 SQL 数据库服务器的创建步骤将失败。 以后你不再可以访问此密码,因此请将其另行保存。

  2. 为你的 Azure 订阅 ID 创建 AZURE_SUBSCRIPTION_ID 机密。 如果不知道订阅 ID,请使用 Azure Shell 中的此命令进行查找。 复制 SubscriptionId 列中的值。

    az account list -o table
    

创建 Azure 资源

“创建 Azure 资源”工作流运行一个 ARM 模板以将资源部署到 Azure。 该工作流:

若要运行“创建 Azure 资源”工作流,请执行以下操作:

  1. 打开存储库内 .github/workflows 中的 infraworkflow.yml 文件。

  2. AZURE_RESOURCE_GROUP 的值更新为你的资源组名称。

  3. 将 ARM 部署操作中 region 的输入设置为你所在的区域。

    1. 打开 templates/azuredeploy.resourcegroup.parameters.json 并将 rgLocation 属性更新为你所在的区域。
  4. 转到“操作”并选择“运行工作流” 。

    运行 GitHub Actions 工作流以添加资源。

  5. 通过检查“操作”页上是否显示了绿色打勾标记来确认操作是否成功运行。

    成功运行创建资源的操作。

  6. 创建资源后,转到“操作”,选择“创建 Azure 资源”,然后禁用该工作流。

    禁用“创建 Azure 资源”工作流。

创建发布配置文件机密

  1. 在 Azure 门户中,打开使用 Create Azure Resources 工作流创建的新暂存应用服务(槽)。

  2. 选择“获取发布配置文件”。

  3. 在文本编辑器中打开发布配置文件并复制其内容。

  4. AZURE_WEBAPP_PUBLISH_PROFILE 创建新的 GitHub 机密。

生成并部署你的应用

若要运行生成和部署工作流:

  1. 打开存储库内 .github/workflows 中的 workflow.yaml 文件。

  2. 确认 AZURE_RESOURCE_GROUPAZURE_WEBAPP_NAMESQLSERVER_NAMEDATABASE_NAME 的环境变量是否与 infraworkflow.yml 中的环境变量相匹配。

  3. 访问“交换到生产槽”输出中的 URL 来验证应用是否已部署。 应会看到名为“我的 TodoList 应用”的示例应用。

清理资源

如果不再需要示例项目,请删除 Azure 门户中的资源组,并删除 GitHub 中的存储库。