如何在 GitLab CI/CD 中使用 Bencher


根据您的使用情况,您可以为以下项目在 GitLab CI/CD 中设置持续性能基准测试

🐰 在继续之前,请确保您已创建了 API 令牌 并将其设置为名为 BENCHER_API_TOKEN 的掩码变量! 导航至 您的仓库 -> 设置 -> CI/CD -> 变量 -> 展开 -> 添加变量。 变量键应为 BENCHER_API_TOKEN,变量值应为您的 API 令牌。 勾选 保护变量掩码变量 复选框。

目标分支

Statistical Continuous Benchmarking 的基石是为您的目标分支拥有一个历史基线。 然后,可以使用此历史基线来检测合并请求中的性能退化。

benchmark_target_branch:
rules:
- if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
when: always
image: debian:bullseye
before_script:
- curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh
script:
- |
bencher run \
--project save-walter-white-1234abcd \
--token "$BENCHER_API_TOKEN" \
--branch main \
--testbed debian:bullseye \
--adapter json \
--err \
bencher mock
  1. 创建一个GitLab CI/CD文件。 (例:.gitlab-ci.yml
  2. 创建一个GitLab CI/CD作业。 (例:benchmark_target_branch
  3. 运行if管道是由pushmain分支触发的。 参见 GitLab CI/CD rules 文档GitLab CI/CD预定义变量文档 以获取完整概述。 (例:rules: - if: ...
  4. 设置作业将在其中运行的image。 参见 GitLab CI/CD image 文档 以获取完整概述。 (例:image: debian:bullseye
  5. 使用便捷脚本安装Bencher CLI。 (例:before_script: ...
  6. 使用 bencher run CLI子命令 运行您的main分支基准测试。 参见 the bencher run CLI子命令 以获取完整概述。 (例:bencher run
  7. --project选项设置为项目slug。 参见 the --project 文档 了解更多详情。 (例:--project save-walter-white-1234abcd
  8. --token选项设置为屏蔽的BENCHER_API_TOKEN环境变量。 参见 the --token 文档 了解更多详情。 (例:--token "$BENCHER_API_TOKEN"
  9. --branch选项设置为分支名称。 参见 分支选择 以获取完整概述。 (例:--branch main
  10. --testbed选项设置为测试床名称。 这应该与在image中选择的机器匹配。 参见 the --testbed 文档 了解更多详情。 (例:--testbed debian:bullseye
  11. --adapter选项设置为所需的基准测试适配器。 参见 基准测试适配器 以获取完整概述。 (例:--adapter json
  12. 设置--err标志以在生成警报时使命令失败。 参见 阈值和警报 以获取完整概述。 (例:--err
  13. 指定基准测试命令参数。 参见 基准测试命令 以获取完整概述。 (例:bencher mock

合并请求

为了在合并请求中捕捉性能回归,你需要在MRs上运行基准测试。 以下示例仅适用于相同存储库中的分支。

benchmark_mr_branch:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
image: debian:bullseye
before_script:
- curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh
script:
- |
bencher run \
--project save-walter-white-1234abcd \
--token "$BENCHER_API_TOKEN" \
--branch "$CI_COMMIT_REF_NAME" \
--branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" \
--branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA" \
--testbed debian:bullseye \
--adapter json \
--err \
bencher mock
  1. 创建或更新一个GitLab CI/CD文件。 (例如:.gitlab-ci.yml)
  2. 创建一个GitLab CI/CD任务。 (例如:benchmark_mr_branch)
  3. 如果管道由merge_request_event触发,则运行if。 查看GitLab CI/CD rules 文档GitLab CI/CD 预定义变量文档以获得完整概述。 (例如:rules: - if: ...)
  4. 设置任务将在其中运行的image。 查看GitLab CI/CD image 文档 以获取完整概述。 (例如:image: debian:bullseye)
  5. 使用便捷脚本安装Bencher CLI。 (例如:before_script: ...)
  6. 使用bencher runCLI子命令 运行你的合并请求分支的基准测试。 查看bencher run CLI子命令以获得完整概述。 (例如:bencher run)
  7. --project选项设置为项目slug。 查看--project 文档了解更多详情。 (例如:--project save-walter-white-1234abcd)
  8. --token选项设置为掩码的BENCHER_API_TOKEN环境变量。 查看--token 文档了解更多详情。 (例如:--token "$BENCHER_API_TOKEN")
  9. 使用GitLab CI/CD 预定义变量--branch选项设置为MR分支名称。 查看分支选择以获取完整概述。 (例如:--branch "$CI_COMMIT_REF_NAME")
  10. 使用GitLab CI/CD 预定义变量--branch-start-point选项设置为MR目标分支起点。 查看分支选择以获取完整概述。 (例如:--branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME")
  11. 使用GitLab CI/CD 预定义变量--branch-start-point-hash选项设置为MR目标分支起点哈希。 查看分支选择以获得完整概述。 (例如:--branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA")
  12. --testbed选项设置为Testbed名称。 这应该与在image中选择的机器匹配。 查看--tested 文档了解更多详情。 (例如:--testbed debian:bullseye)
  13. --adapter选项设置为所需的基准测试适配器。 查看基准测试适配器以获得完整概述。 (例如:--adapter json)
  14. 如果生成报警,则设置--err标志以使命令失败。 查看阈值与报警以获得完整概述。 (例如:--err)
  15. 指定基准测试命令参数。 查看基准测试命令以获得完整概述。 (例如:bencher mock)


🐰 恭喜!您已学会如何在 GitLab CI/CD 中使用 Bencher!🎉


继续前进:基准测试概览 ➡

🤖 该文档由 OpenAI GPT-4 自动生成。 它可能不准确并且可能包含错误。 如果您发现任何错误,请在 GitHub 上提出问题.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Mon, April 1, 2024 at 7:00:00 AM UTC