如何确保GitHub Actions与Docker容器内的Composer等工具版本一致?
本地Docker容器内执行构建与测试步骤
1. 执行Composer构建/更新
先确保Devilbox容器处于运行状态,可直接在主机执行命令调用容器内的Composer:
# 替换devilbox_php_x.x为你的容器名(如devilbox_php8.2),/path/to/laravel为项目在容器内的路径 docker exec -it devilbox_php_x.x composer install -d /path/to/laravel # 更新依赖 docker exec -it devilbox_php_x.x composer update -d /path/to/laravel
如果需要进入容器操作:
docker exec -it devilbox_php_x.x bash # 切换到项目目录后执行 cd /path/to/laravel composer install
2. 运行单元/集成测试
直接在主机调用容器内的Artisan:
docker exec -it devilbox_php_x.x php /path/to/laravel/artisan test
或进入容器后执行:
cd /path/to/laravel php artisan test
3. 运行Laravel Dusk浏览器测试
Dusk需要GUI环境,在容器内配置并执行:
# 进入容器 docker exec -it devilbox_php_x.x bash # 安装Xvfb虚拟显示服务 apt update && apt install -y xvfb # 后台启动Xvfb Xvfb :99 -screen 0 1920x1080x24 & # 设置显示端口环境变量 export DISPLAY=:99 # 切换到项目目录运行Dusk cd /path/to/laravel php artisan dusk
也可以整合成单条主机命令:
docker exec -it devilbox_php_x.x bash -c "apt update && apt install -y xvfb && Xvfb :99 -screen 0 1920x1080x24 & export DISPLAY=:99 && cd /path/to/laravel && php artisan dusk"
GitHub Actions同步工具版本配置
1. 锁定本地工具版本
- 在项目根目录创建
.php-version文件,写入容器内的PHP版本(如8.2) - 在容器内执行
composer self-update x.x.x固定Composer版本,composer.lock会自动记录该版本
2. 编写GitHub Actions工作流
在项目.github/workflows目录下创建tests.yml,严格匹配本地Docker内的PHP和Composer版本:
name: Laravel Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 配置PHP环境 uses: shivammathur/setup-php@v2 with: php-version: '8.2' # 与Devilbox内PHP版本一致 tools: composer:v2.6 # 与容器内Composer版本一致 extensions: mbstring, dom, curl, sqlite3 # 按需添加项目依赖扩展 - name: 安装依赖 run: composer install --no-interaction --prefer-dist - name: 初始化Laravel环境 run: | cp .env.example .env php artisan key:generate - name: 运行单元/集成测试 run: php artisan test - name: 运行Dusk测试 run: | sudo apt-get install -y xvfb chromium-browser Xvfb :99 -screen 0 1920x1080x24 & export DISPLAY=:99 php artisan dusk
3. 维护版本一致性
每次本地Docker容器内更新PHP或Composer版本后,同步更新.php-version文件和GitHub Actions工作流中的对应版本值。
内容的提问来源于stack exchange,提问作者Azvya Erstevan
相关产品推荐
相关产品推荐

