你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 GitHub Actions 连接到 Azure Database for MySQL - 灵活服务器
适用于:Azure Database for MySQL - 单一服务器 Azure Database for MySQL - 灵活服务器
重要
Azure Database for MySQL 单一服务器即将停用。 强烈建议升级到 Azure Database for MySQL 灵活服务器。 有关如何迁移到 Azure Database for MySQL 灵活服务器的详细信息,请参阅 Azure Database for MySQL 单一服务器发生了什么情况?
使用工作流将数据库更新部署到 Azure Database for MySQL - 灵活服务器,以开始使用 GitHub Actions。
先决条件
需要:
具有活动订阅的 Azure 帐户。 免费创建帐户。
一个 GitHub 帐户。 如果没有 GitHub 帐户,可以免费注册。
包含示例数据的 GitHub 存储库 (
data.sql
)。重要
本快速入门假设你已将 GitHub 存储库克隆到计算机,以便可以将关联的 IP 地址添加到防火墙规则(如有必要)。
Azure Database for MySQL 灵活服务器实例。
工作流文件概述
GitHub Actions 工作流是由存储库中 /.github/workflows/
路径中的 YAML (.yml) 文件定义的。 此定义包含组成工作流的各种步骤和参数。
此文件包含两个部分:
部分 | 任务 |
---|---|
身份验证 | 1. 生成部署凭据。 |
部署 | 1.部署数据库。 |
生成部署凭据
在 Azure CLI 中使用 az ad sp create-for-rbac 命令创建服务主体。 请使用 Azure 门户中的 Azure Cloud Shell 或选择“试用”按钮运行此命令。
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
参数 --json-auth
在 Azure CLI 版本 >= 2.51.0 中可用。 此版本之前的版本使用 --sdk-auth
,带有弃用警告。
在上面的示例中,请将占位符替换为你的订阅 ID、资源组名称和应用名称。 输出是一个 JSON 对象,包含的角色分配凭据可提供对应用服务应用的访问权限,如下所示。 复制此 JSON 对象供以后使用。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
复制 MySQL 连接字符串
在 Azure 门户中,转到 Azure Database for MySQL 灵活服务器实例,然后打开“设置”>“连接字符串”。 复制 ADO.NET 连接字符串。 将占位符值替换为 your_database
和 your_password
。
重要
- 对于 Azure Database for MySQL 单一服务器,请使用 Uid=adminusername@servername。 请注意,@servername 是必需的。
- 对于 Azure Database for MySQL 灵活服务器,请使用不带 @servername 的 Uid=adminusername。
你将使用连接字符串作为 GitHub 机密。
配置 GitHub 机密
在 GitHub 中,转到存储库。
转到导航菜单中的“设置”。
选择“安全性”>“机密和变量”>“操作”。
选择“新建存储库机密”。
将 Azure CLI 命令的整个 JSON 输出粘贴到机密的值字段中。 为机密指定名称
AZURE_CREDENTIALS
。选择“添加机密”。
添加工作流
转到 GitHub 存储库的“操作”。
选择“自己设置工作流”。
删除工作流文件
on:
部分后面的所有内容。 例如,剩下的工作流可能如下所示。name: CI on: push: branches: [ main ] pull_request: branches: [ main ]
将工作流重命名为
MySQL for GitHub Actions
,并添加签出和登录操作。 这些操作会签出你的站点代码,并使用之前创建的AZURE_CREDENTIALS
GitHub 机密向 Azure 进行身份验证。name: MySQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
使用 Azure MySQL 部署操作连接到 MySQL 实例。 将
MYSQL_SERVER_NAME
替换为服务器的名称。 在存储库的根级别应该有一个名为data.sql
的 MySQL 数据文件。- uses: azure/mysql@v1 with: server-name: MYSQL_SERVER_NAME connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }} sql-file: './data.sql'
通过添加注销 Azure 的操作来完成工作流。 下面是已完成的工作流。 文件会显示在存储库的
.github/workflows
文件夹中。name: MySQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - uses: azure/mysql@v1 with: server-name: MYSQL_SERVER_NAME connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }} sql-file: './data.sql' # Azure logout - name: logout run: | az logout
查看部署
转到 GitHub 存储库的“操作”。
打开第一个结果,查看工作流运行的详细日志。
清理资源
如果不再需要 Azure Database for MySQL 灵活服务器数据库和存储库,请删除资源组和 GitHub 存储库,从而清理所部署的资源。