从 Gitlab CI 测试矩阵中排除一种组合

问题描述 投票:0回答:1

我维护一个访问数据库的 PHP 库。 我使用 Gitlab CI 设置了自动化单元测试,他们使用测试矩阵来测试数据库引擎和 PHP 版本的各种组合。 我的

.gitlab-ci
配置文件目前看起来有点像这个:

test-php:
  stage: test
  parallel:
    matrix:
      - PHPVERSION: ["7.3", "7.4", "8.0", "8.2", "8.3"]
        DBSERVICE: ["mysyql:8.0", "mysql:8.4", "mariadb:latest"]
  image: php:$PHPVERSION
  services: 
    - $DBSERVICE
  before_script:
    - ./tests/setup/mysql.sh
  script:
    - ./tests/run.sh

我想排除一种测试组合 - 特别是 PHP 7.3 与 MySQL 8.4 的测试,因为本机密码身份验证存在问题。 (我知道这些问题可以解决,但由于各种原因,我目前不想在这个测试套件中这样做:我只想排除那个测试。)

我知道我可以通过在

$PHPVERSION
脚本(或等效地在配置文件中)测试
$DBSERVICE
run.sh
来完成此操作,但这仍然会导致安装容器,这可能需要几分钟的时间。 由于与启动和配置 Docker 容器的成本相比,测试速度很快,因此我根本不想为排除的组合启动容器。

gitlab-ci
1个回答
0
投票

一个解决方案可以使用多个条目,如下所示:

test-php:
  stage: test
  parallel:
    matrix:
      - DBSERVICE: "mysql:8.4"
        PHPVERSION: ["7.4", "8.0", "8.2", "8.3"]
      - DBSERVICE: ["mysyql:8.0", "mariadb:latest"]
        PHPVERSION: ["7.3", "7.4", "8.0", "8.2", "8.3"]
  image: php:$PHPVERSION
  services: 
    - $DBSERVICE
  before_script:
    - ./tests/setup/mysql.sh
  script:
    - ./tests/run.sh

通过这种方式,您可以选择与特定版本的数据库一起运行的 php 版本。在parallel:matrix示例部分中做了类似的事情。

© www.soinside.com 2019 - 2024. All rights reserved.