我正在尝试设置一个 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
答案 0 :(得分:2)
我遇到了类似的问题,并查看了其他较大的软件包维护者是如何做到的:
在他们的包中,他们使用了广泛的版本约束(例如:stderr
),这样他们的包可以根据定义安装在依赖包的不同版本中。
通过在 CI 管道中运行 vendor/package: ^1.0|^2.0
来测试他们自己的包实际上是兼容的,并且特定版本不会发生错误。我不太确定如何在 Gitlab CI 中处理这个问题(Travis 提供了一个矩阵方案),但是你可以有一个包含 composer require
的构建,然后运行测试。在第二个构建中,您在运行测试之前调用 composer require vendor/package:1.0.x