你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 GitHub Actions 连接到 Azure Database for MySQL - 灵活服务器

使用工作流将数据库更新部署到 Azure Database for MySQL - 灵活服务器,以开始使用 GitHub Actions

Prerequisites

需要:

工作流文件概述

GitHub Actions 工作流是由存储库中 /.github/workflows/ 路径中的 YAML (.yml) 文件定义的。 此定义包含组成工作流的各种步骤和参数。

此文件包含两个部分:

部分 任务
身份验证 1. 生成部署凭据。
部署 1. 部署数据库。

生成部署凭据

若要对 OIDC 使用 Azure 登录操作,需要在 Microsoft Entra 应用或用户分配的托管身份上配置联合身份凭证。

选项 1:Microsoft Entra 应用程序

选项 2:用户分配的托管标识

复制 MySQL 连接字符串

在 Azure 门户中,转到 Azure Database for MySQL 灵活服务器实例,然后打开“设置”“连接字符串”。> 复制 ADO.NET 连接字符串。 将占位符值替换为 your_databaseyour_password

重要说明

  • 对于 Azure Database for MySQL 单一服务器,请使用 Uid=adminusername@servername。 请注意,@servername 是必需的
  • 对于 Azure Database for MySQL 灵活服务器,请使用不带 的 @servername。

你将使用连接字符串作为 GitHub 机密。

配置 GitHub 机密

需要在登录操作中提供应用程序的 客户端 ID目录(租户)ID订阅 ID。 这些值可直接在工作流中提供,或可存储在 GitHub 机密中并在工作流中引用。 将这些值保存为 GitHub 机密是更安全的选择。

  1. GitHub 中,转到存储库。

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

    添加机密的屏幕截图

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

    注释

    若要增强公共存储库中的工作流安全性,请使用 环境机密 而不是存储库机密。 如果环境需要审批,在所需审阅者之一批准之前,作业无法访问环境机密。

  4. AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_SUBSCRIPTION_ID 创建机密。 请从 Microsoft Entra 应用程序或用户分配的托管标识中复制这些值,以用于您的 GitHub 机密。

    GitHub 机密 Microsoft Entra 应用程序或用户分配的托管标识
    AZURE_CLIENT_ID 客户 ID
    AZURE_SUBSCRIPTION_ID 订阅 ID
    AZURE_TENANT_ID 目录(租户)ID

    注释

    出于安全原因,我们建议使用 GitHub 机密,而不是将值直接传递到工作流。

添加工作流

  1. 转到 GitHub 存储库的“操作”

  2. 选择“自己设置工作流”

  3. 删除工作流文件 on: 部分后面的所有内容。 例如,剩余工作流的外观可能如以下所示。

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. 将工作流重命名为 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@v2
                with:
                  client-id: ${{ secrets.AZURE_CLIENT_ID }}
                  tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                  subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
  5. 使用 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'
    
  6. 通过添加注销 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@v2
                with:
                  client-id: ${{ secrets.AZURE_CLIENT_ID }}
                  tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                  subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
              - 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
    

查看部署

  1. 转到 GitHub 存储库的“操作”

  2. 打开第一个结果,查看工作流运行的详细日志。

    GitHub Actions 运行的日志的屏幕截图。

清理资源

不再需要 Azure Database for MySQL 灵活服务器数据库和存储库时,请删除资源组和 GitHub 存储库来清理部署的资源。

后续步骤