在 CI/CD GitLab 中测试不同的作曲家要求

时间:2021-02-16 03:45:10

标签: continuous-integration composer-php gitlab-ci

我正在尝试设置一个 CI 环境,在其中自动测试 TYPO3 和 PHP 的不同版本的依赖项。但是怎么做呢?它正在对 composer.json 中的 PHP 版本进行硬编码,但如何为其他版本执行此操作?

拥有多个 composer.json 文件不是解决方案。

构建看起来像这样:

Build application:
  stage: build
  image: composer:latest
  before_script:
    - apk add bash --no-cache
    - apk add git --update
  script:
    - composer install --no-progress --no-ansi --no-interaction
  artifacts:
    name: typo3
    paths:
      - ./vendor/
      - ./web/
      - ./composer.json
      - ./composer.lock

1 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,并查看了其他较大的软件包维护者是如何做到的:

在他们的包中,他们使用了广泛的版本约束(例如:stderr),这样他们的包可以根据定义安装在依赖包的不同版本中。

通过在 CI 管道中运行 vendor/package: ^1.0|^2.0 来测试他们自己的包实际上是兼容的,并且特定版本不会发生错误。我不太确定如何在 Gitlab CI 中处理这个问题(Travis 提供了一个矩阵方案),但是你可以有一个包含 composer require 的构建,然后运行测试。在第二个构建中,您在运行测试之前调用 composer require vendor/package:1.0.x