【发布时间】:2021-01-05 22:28:03
【问题描述】:
我正在尝试通过 GitHub Actions 在 pull_request 上运行我的单元测试。
当我更新我的 PR 时,我可以看到正在运行的操作,但 PHP 版本在尝试 Composer 安装我的项目时没有更新。
Command: composer install --no-interaction --no-suggest --no-progress
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- This package requires php ~7.3.0 but your PHP version (7.4.10) does not satisfy that requirement.
我尝试了多个不同的工作流文件,这是给我最大控制权的一个,但它似乎仍在 php 7.4 上运行。
name: Run Tests
on:
pull_request:
branches:
- master
jobs:
build:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-latest]
php-versions: ['7.3']
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
- uses: php-actions/composer@v2
- uses: php-actions/phpunit@v8
最后,这是我的作曲家 json 中的 sn-p,它显示了约束:
"require": {
"php": "~7.3.0",
"guzzlehttp/guzzle": "^7.0"
},
"require-dev": {
"phpunit/phpunit": "^8"
}
【问题讨论】:
-
也可以确认 shivammathur/setup-php@v2 步骤先运行,并回复:
PHP Switched to PHP 7.3.22 -
是什么让您认为完全不同的操作(如
php-actions/composer@v2)知道要使用哪个PHP 版本?据我所知,它使用不同的容器 -
有吗?我对 github 操作有点陌生。我认为构建设置了容器,并且所有步骤都在构建上运行。为什么作曲家需要启动一个新容器?如果 checkout 是检查你的 repo 的东西,并且你想在你的容器上进行 composer install ,那将如何工作。如果 composer@v2 操作启动一个新容器并执行......它到底有什么意义?
-
如果您将其写为答案,我会将其标记为完成。感谢您的建议,我能够直接运行作曲家,而不是通过一个动作。当作曲家有能力修复版本时,似乎对包所有者强制使用 PHP 版本有点限制!我没有意识到每一步都是它自己的容器!
标签: php github composer-php phpunit github-actions