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

适用于 Azure Database for MySQL 单一服务器的 Azure Pipelines

适用于:Azure Database for MySQL - 单一服务器

通过 Azure Pipelines 部署数据库更新即可开始使用 Azure Database for MySQL。 利用 Azure Pipelines,可以使用 Azure DevOps 通过持续集成 (CI) 和持续交付 (CD) 来进行生成、测试和部署。

我们将使用 Azure Database for MySQL 部署任务。 Azure Database for MySQL 部署任务仅适用于 Azure Database for MySQL 单一服务器。

先决条件

开始前,需要具备:

此快速入门使用以下任意指南中创建的资源作为起点:

创建管道

你将使用基本的初学者管道作为管道的基础。

  1. 登录到你的 Azure DevOps 组织,并转到你的项目。

  2. 在项目中,导航到“Pipelines”页面 。 然后选择“操作”以创建新的管道。

  3. 首先选择“GitHub”作为源代码位置,完成向导的各个步骤 。

  4. 可能会重定向到 GitHub 进行登录。 如果是这样,请输入 GitHub 凭据。

  5. 显示存储库列表时,选择你的所需存储库。

  6. Azure Pipelines 会分析存储库并提供配置选项。 选择“初学者管道”。

    Screenshot of Select Starter pipeline.

创建机密

你需要知道与 Azure Database for MySQL 部署任务配合使用的数据库服务器名称、SQL 用户名和 SQL 密码。

为了安全起见,需要在管道的管道设置 UI 中将 SQL 密码另存为机密变量。

  1. 转到“管道”页,选择适当的管道,然后选择“编辑”。

  2. 选择“变量”。

  3. 添加一个名为 SQLpass 的新变量,然后选择“保留此值机密”以加密并保存变量。

    Screenshot of adding a secret variable.

  4. 选择“确定”和“保存”以添加变量。

验证数据库的权限

若要使用 Azure Pipelines 访问 MySQL 数据库,需要将数据库设置为接受来自所有 Azure 资源的连接。

  1. 在 Azure 门户中,打开数据库资源。

  2. 选择“连接安全性”。

  3. 将“允许访问 Azure 服务”切换为“是”。

    Screenshot of setting MySQL to allow Azure connections.

添加 Azure Database for MySQL 部署任务

在此示例中,我们将创建一个名为 quickstartdb 的新数据库并添加一个清单表。 内联 SQL 脚本会执行以下操作:

  • 如果 quickstartdb 存在,请将其删除,并创建新的 quickstartdb 数据库。
  • 如果 inventory 表存在,请将其删除,并创建新的 inventory 表。
  • 将三行插入 inventory
  • 显示所有行。
  • 更新 inventory 中的第一行的值。
  • 删除 inventory 中的第二行。

需要替换部署任务中的以下值。

输入 说明 示例
azureSubscription 使用服务连接向 Azure 订阅进行身份验证。 My Subscription
ServerName Azure Database for MySQL 服务器的名称。 fabrikam.mysql.database.azure.com
SqlUsername Azure Database for MySQL 的用户名。 mysqladmin@fabrikam
SqlPassword 对应于用户名的密码。 应将其定义为机密变量。 $(SQLpass)

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- task: AzureMysqlDeployment@1
  inputs:
    azureSubscription: '<your-subscription>
    ServerName: '<db>.mysql.database.azure.com'
    SqlUsername: '<username>@<db>'
    SqlPassword: '$(SQLpass)'
    TaskNameSelector: 'InlineSqlTask'
    SqlInline: |
      DROP DATABASE IF EXISTS quickstartdb;
      CREATE DATABASE quickstartdb;
      USE quickstartdb;
      
      -- Create a table and insert rows
      DROP TABLE IF EXISTS inventory;
      CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);
      INSERT INTO inventory (name, quantity) VALUES ('banana', 150);
      INSERT INTO inventory (name, quantity) VALUES ('orange', 154);
      INSERT INTO inventory (name, quantity) VALUES ('apple', 100);
      
      -- Read
      SELECT * FROM inventory;
      
      -- Update
      UPDATE inventory SET quantity = 200 WHERE id = 1;
      SELECT * FROM inventory;
      
      -- Delete
      DELETE FROM inventory WHERE id = 2;
      SELECT * FROM inventory;
    IpDetectionMethod: 'AutoDetect'

部署和验证资源

选择“保存并运行”以部署管道。 此时会启动管道作业。几分钟后,作业状态应指示“Success”。

可以验证管道是否已在此管道运行的 AzureMysqlDeployment 任务中成功运行。

打开任务并验证最后两个条目是否显示 inventory 中的两行。 有两行是因为第二行已被删除。

Screenshot to show reviewing final table results.

清理资源

完成管道操作后,请在 Azure Database for MySQL 中删除 quickstartdb。 还可以删除创建的部署管道。

后续步骤