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

手动配置用于运行负载测试的 CI/CD 工作流

可以通过创建 CI/CD 管道在 Azure 负载测试中自动执行负载测试。 本文介绍如何手动配置 GitHub Actions、Azure Pipelines 或其他 CI 工具以调用 Azure 负载测试中的现有测试。 自动执行负载测试,以持续验证负载下的应用程序性能和稳定性。

若要将现有负载测试添加到 CI/CD 管道,请执行以下操作:

  • 配置服务身份验证以允许 CI 工具连接到 Azure 负载测试资源。
  • 将负载测试输入文件添加到存储库,例如 JMeter 测试脚本和负载测试 YAML 配置。
  • 更新 CI/CD 管道定义以调用 Azure 负载测试。

先决条件

配置服务身份验证

若要在 CI/CD 工作流中运行负载测试,需要向 CI/CD 工作流授予访问负载测试资源的权限。 为 CI/CD 工作流创建服务主体,并分配负载测试参与者 Azure RBAC 角色。

在 Azure Pipelines 中创建服务连接

在 Azure Pipelines 中,在 Azure DevOps 项目中创建服务连接,以访问 Azure 订阅中的资源。 创建服务连接时,Azure DevOps 会创建 Microsoft Entra 服务主体对象。

  1. 登录到你的 Azure DevOps 组织 (https://dev.azure.com/<your-organization>),并选择你的项目。

    <your-organization> 文本占位符替换为项目标识符。

  2. 选择“项目设置”>“服务连接”>“+ 新建服务连接”。

  3. 在“新建服务连接”窗格中,选择“Azure 资源管理器”,然后选择“下一步”。

  4. 依次选择“服务主体(自动)”身份验证方法、“下一步”。

  5. 输入服务连接详细信息,然后选择“保存”以创建服务连接。

    字段
    范围级别 订阅
    订阅 选择用于托管负载测试资源的 Azure 订阅。
    资源组 选择用于包含负载测试资源的资源组。
    服务连接名称 为服务连接输入唯一的名称。
    向所有管道授予访问权限 已选中。
  6. 从服务连接列表中,选择之前创建的连接,然后选择“管理服务主体”。

    Screenshot that shows selections for managing a service principal.

    Azure 门户将在单独的浏览器标签页中打开,并显示服务主体详细信息。

  7. 在 Azure 门户中,复制“显示名称”值。

    在下一步中,使用此值向服务主体授予运行负载测试的权限。

授予对 Azure 负载测试的访问权限

Azure 负载测试使用 Azure RBAC 授予对负载测试资源执行特定活动的权限。 若要从 CI/CD 管道运行负载测试,请将负载测试参与者角色授予服务主体。

  1. Azure 门户中,转到 Azure 负载测试资源。

  2. 选择“访问控制(IAM)”>“添加”>“添加角色分配”。

  3. 在“角色”选项卡中,选择作业功能角色列表中的“负载测试参与者” 。

    Screenshot that shows the list of roles in the Add role assignment page in the Azure portal, highlighting the Load Test Contributor role.

  4. 在“成员”选项卡中,选择“选择成员”,然后使用之前复制的显示名称搜索服务主体。

  5. 选择服务主体,然后选择“选择”。

  6. 在“查看 + 分配”选项卡中,选择“查看 + 分配”,以添加角色分配。

现在可以使用 Azure Pipelines 工作流定义中的服务连接来访问 Azure 负载测试资源。

在存储库中添加负载测试文件

若要在 CI/CD 工作流中使用 Azure 负载测试运行负载测试,需要在源代码管理存储库中添加所有负载测试输入文件。

如果没有现有的负载测试,请将以下文件添加到源代码存储库:

  • 负载测试配置 YAML 文件。 了解如何创建 负载测试配置 YAML 文件
  • 测试计划文件。 对于基于 JMeter 的测试,请添加 JMeter 测试脚本(JMX 文件)。 对于基于 URL 的测试,请添加请求 JSON 文件
  • 任何 JMeter 用户属性文件
  • 测试计划使用的任何输入数据文件。 例如,CSV 数据文件。

如果有现有的负载测试,可以直接从Azure 门户下载配置设置和所有输入文件。 执行以下步骤,以在 Azure 门户中下载现有负载测试的输入文件:

  1. Azure 门户中,转到 Azure 负载测试资源。

  2. 在左窗格中,选择“测试”以查看负载测试的列表,然后选择测试。

    Screenshot that shows the list of tests for an Azure Load Testing resource.

  3. 选择使用的测试运行旁边的省略号 (...),然后选择“下载输入文件” 。

    浏览器会下载包含负载测试输入文件的压缩文件夹。

    Screenshot that shows how to download the results file for a load test run.

  4. 使用任何 zip 工具提取输入文件。

    此文件夹包含以下文件:

    • config.yaml:负载测试 YAML 配置文件。 你将在 CI/CD 工作流定义中引用此文件。
    • .jmx:JMeter 测试脚本
    • 运行负载测试所需的任何其他输入文件,例如 CSV 文件或用户属性文件。
  5. 将所有提取的输入文件提交到源代码管理存储库。

    使用在其中配置 CI/CD 管道的源代码存储库。

更新 CI/CD 工作流定义

Azure 负载测试支持 GitHub Actions 和 Azure Pipelines 运行负载测试。

安装适用于 Azure DevOps 的 Azure 负载测试扩展

若要创建和运行负载测试,Azure Pipelines 工作流定义使用 Azure DevOps 市场中的 Azure 负载测试任务扩展。

  1. 打开 Azure DevOps 市场中的 Azure 负载测试任务扩展,然后选择“免费获取”。

  2. 选择你的 Azure DevOps 组织,然后选择“安装”以安装扩展。

    如果对所选 Azure DevOps 组织没有管理员权限,请选择“请求”以请求管理员安装扩展。

更新 Azure Pipelines 工作流

更新 Azure Pipelines 工作流,为 Azure 负载测试资源运行负载测试。

  1. 登录到你的 Azure DevOps 组织 (https://dev.azure.com/<your-organization>),并选择你的项目。

  2. 在左侧导航栏中选择“管道”,选择你的管道,然后选择“编辑”以编辑工作流定义。

    或者,选择“创建管道”以在 Azure Pipelines 中创建新管道。

  3. 使用 AzureLoadTest 任务运行负载测试。

    指定之前在 loadTestConfigFile 属性中导出的负载测试配置文件。

    <load-testing-resource><load-testing-resource-group> 文本占位符替换为 Azure 负载测试资源和资源组的名称。

        - task: AzureLoadTest@1
          inputs:
            azureSubscription: $(serviceConnection)
            loadTestConfigFile: 'config.yaml'
            loadTestResource: <load-testing-resource>
            resourceGroup: <load-testing-resource-group>
    

    (可选)可以使用 envsecrets 属性将参数或机密传递给负载测试。

  4. 使用 publish 任务在 Azure Pipelines 工作流运行中将测试结果作为项目发布。

        - publish: $(System.DefaultWorkingDirectory)/loadTest
          artifact: loadTestResults
    

查看负载测试结果

从 CI/CD 管道运行负载测试时,可以直接在 CI/CD 输出日志中查看摘要结果。 如果将测试结果作为管道项目发布,还可以下载 CSV 文件进行进一步报告。

Screenshot that shows the workflow logging information.

清理资源

如果你不打算使用已创建的任何资源,请删除它们,以免继续产生费用。

  1. 删除 Azure Pipelines 更改:

    1. 登录到你的 Azure DevOps 组织 (https://dev.azure.com/<your-organization>),并选择你的项目。

      <your-organization> 文本占位符替换为项目标识符。

    2. 如果创建了新管道:

      1. 选择“管道”,然后选择你的管道。

      2. 选择省略号,然后选择“删除”。

        Screenshot that shows how to delete an Azure Pipelines definition.

      3. 输入管道名称,然后选择“删除”以删除管道。

    3. 如果修改了现有工作流定义,请撤消用于运行负载测试的修改,并保存工作流。

  2. 删除服务连接:

    1. 选择“项目设置”>“服务连接”,然后选择你的服务连接。
    2. 选择“编辑”>“删除”以删除该服务连接。

后续步骤

请转到下一篇文章,了解如何通过定义测试失败条件和比较测试运行来识别性能回归。