如何使用 GitLab CI 设置最小单元测试覆盖率?

2023-11-30

我有一个托管在 GitLab 上的项目,该项目已经具有有效的 CI 配置。我想添加“最小代码覆盖率”的概念。

我想要的是强制一个正增量(合并请求的代码覆盖率必须大于目标分支的代码覆盖率,除非它已经是 100%)。

我会接受“最低覆盖率 80%”之类的规则,但我确信我可以做得更好。

除了关键字之外,我在文档中找不到任何内容coverage抓取覆盖范围以显示在主页上。

我想要这样的东西.gitlab-ci.yml:

check_coverage:
  stage: test
  rules:
    - if: '$CI_OPEN_MERGE_REQUESTS && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
  script:
    - compare-coverage.sh $CI_CURRENT_COVERAGE $CI_TARGET_COVERAGE # something that fails if delta < 0

我怎样才能做到这一点?


我是这样做的:

# .gitlab-ci.yml
image: python:3.9

stages:
  - tests
  - min-coverage

variables:
  MIN_COVERAGE: 80  # set the threshold at 80%

unit-test:
  stage: tests
  before_script:
    - pip install pytest pytest-cov
  script:
    - coverage run -m pytest
    - coverage json
    - coverage report -m
  artifacts:
    paths:
      - coverage.json
  coverage: '/TOTAL.+ ([0-9]{1,3}%)/'

min-coverage-test:
  stage: min-coverage
  before_script:
    - apt-get update && apt-get install jq -y
  script:
    - jsonStr="$(cat $CI_PROJECT_DIR/coverage.json)"
    - coverage="$(echo $jsonStr | jq .totals.percent_covered)"
    - if (( $(echo "$coverage < $MIN_COVERAGE" |bc -l) )) ; then echo "$coverage% of code coverage below threshold of $MIN_COVERAGE%" && exit 1 ; else exit 0 ; fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 GitLab CI 设置最小单元测试覆盖率? 的相关文章

  • 在 .gitlab-ci.yml 上找不到curl命令

    我有一个 gitlab ci yml 文件 它创建一些 docker 镜像并将其推送到 AWS ECR 当我运行curl命令将一些工件推送到远程存储库时 它显示curl 未找到 我已经在使用 openjdk 映像进行 gradlew 构建
  • GITLAB SSL证书问题:无法获取本地颁发者证书

    我正在尝试在 gitLab 中推送我的第一个项目 但出现此错误 致命 无法访问 https git SSL证书问题 无法获取本地颁发者证书 最后我在这里找到了解决方案https newbedev com invalid ssl certif
  • 为不同分支部署GitLab页面

    我正在使用 GitLab Pages 部署我的 React 应用程序 并且运行良好 这是我的gitlab ci yml Using the node alpine image to build the React app image nod
  • .NET 中用于个人项目的免费代码覆盖率工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个免费的 NET 代码覆盖率工具用于个人项目 Ncover 对于个人使用来说有点贵 NCove
  • Mac上使用docker安装gitlab的权限问题

    我正在尝试让 Gitlab 在本地运行 但遇到了权限问题 cp cannot create regular file etc gitlab gitlab rb Permission denied 我正在运行的命令是 sudo docker
  • 在 GitLab CI 中使用合并请求作业中的工件

    在我的项目中 我使用合并请求来测试构建 并在提交合并到主版本后进行部署 目前我的 gitlab ci yml好像 build stage build script yarn build artifacts paths public depl
  • 从 gitlab docker runner 启动声纳扫描仪

    我有一个 CI 工作流程 集成了 linting 作业和代码质量作业 我的 Linting 工作是一个 docker runner 从应用程序代码启动我的 eslint 脚本 然后我的代码质量工作应该启动声纳扫描仪泊坞窗实例 检查我的代码并
  • gitlab runner ssh私钥644文件权限错误

    运行 gitlab ci cd 管道时 ssh 给出 0644 badpermission 错误 变量作为文件类型存储在 gitlab 的 settings gt variable 部分中 gitlab ci yml 文件如下所示 stag
  • Gitlab CI - 如何启动 Shared Runner

    我是 Gitlab CI 的新手 我已经配置了 gitlab ci yml 文件 并使用 CI Lint 它已经通过了验证过程 基于此文档 https gitlab com help ci quick start README 我可以看到应
  • Windows 上本机 C++ 应用程序中的自动死代码检测?

    背景 我有一个用原生 C 编写的应用程序 花了几年的时间 大约有 60 KLOC 有很多函数和类已经死了 可能有 10 15 就像下面提出的类似的基于 Unix 的问题 我们最近开始对所有新代码进行单元测试 并尽可能将其应用于修改后的代码
  • Scala 的代码覆盖率工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 Gitlab CI 阶段配置为不并行运行

    我有一个具有多个阶段的 Gitlab CI 管道 默认情况下 两个作业之间的同一阶段将并行运行 我所经历的阶段之一是集成测试阶段 该阶段一次只能有一个正在运行的实例 因为它依赖于正在设置和拆除的特定资源 有没有一种简单的方法来指定某个阶段应
  • 被拒绝:将映像推送到 gitlab 注册表时,请求的资源访问被拒绝

    我正在尝试将图像推送到 gitlab 注册表 我已经做过很多次了 所以我想知道为什么会出现这个错误 我使用最新标签构建图像 Successfully tagged registry gitlab com mycompany rgpd api
  • vscode通过SSH连接gitlab的问题

    我在尝试通过 SSH 连接到 GitLab 远程存储库时遇到问题 这里是迄今为止完成的步骤 成功生成 SSH 密钥 管理人员将密钥添加到存储库中 因此当我访问 GitLab 网站时 我可以提交和发布分支 我无法从 VSCODE 发布分支并收
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • Emma 不生成coverage.ec

    我设置了艾玛 它曾经对我有用 然后我们更改了源代码 现在它没有生成coverage ec根本不 它确实生成coverage em 测试临近结束时 出现错误消息 exec INSTRUMENTATION CODE 0 echo Downloa
  • gitlab:带有大型存储库的 git clone https 失败

    当尝试通过 https 克隆大型存储库 700MB 时 git 失败并显示 c git projects gt git clone https git mycompany de fs git Cloning into fs Username
  • JS 代码覆盖率

    我是测试场景的新手 我有一个问题想请你帮忙 例如 如果我有一个从 HTML JS 和 CSS 实现并调用其他 API 的 Web 应用程序 在测试此 Web 应用程序时 在进行功能测试时如何在浏览器中测量 HTML JS CSS 浏览器应用
  • 指纹已经被gitlab采集了

    我格式化了我的 Windows 7 笔记本电脑 并尝试让 git 设置再次工作 我安装了 git 和源代码树应用程序 我从 gitlab 删除了 SSH 密钥并使用重新生成了密钥ssh keygen 但是当我尝试在 gitlab 添加 SS
  • docker中的GitLab CI docker无法创建卷

    我在 docker 中使用 docker 来托管我的容器 因为它们通过管道工作 我根据代码创建的容器设置为具有一个卷 用于将 gcloud 密钥传递到容器 这在我的本地计算机上完美运行 但在 gitlab runner 上它无法正确链接 从

随机推荐