Php 拉威尔黄昏-罐头盒';它不能在GitLab CI上运行
有人让Laravel Dash参与GitLab CI的工作吗 我使用的是docker image,这很神奇,但我根本无法执行Php 拉威尔黄昏-罐头盒';它不能在GitLab CI上运行,php,laravel,docker,gitlab-ci,laravel-dusk,Php,Laravel,Docker,Gitlab Ci,Laravel Dusk,有人让Laravel Dash参与GitLab CI的工作吗 我使用的是docker image,这很神奇,但我根本无法执行/vendor/laravel/dusk/bin/chromedriver linux,它说: /bin/bash:line 102:/vendor/laravel/dusk/bin/chromedriver linux:没有这样的文件或目录 当我进入/vendor/laravel/dash/bin时,我可以看到chromedriver linux在那里,它是可执行的,但无
/vendor/laravel/dusk/bin/chromedriver linux
,它说:
/bin/bash:line 102:/vendor/laravel/dusk/bin/chromedriver linux:没有这样的文件或目录
当我进入/vendor/laravel/dash/bin
时,我可以看到chromedriver linux
在那里,它是可执行的,但无法运行
到目前为止,组成此阶段的脚本行包括:
- mv .env.testing .env
- php artisan key:generate
- ./vendor/bin/phpunit --colors=never
- php artisan dusk:install
- chmod -R 0755 vendor/laravel/dusk/bin
- ./vendor/laravel/dusk/bin/chromedriver-linux
- php artisan dusk
我也尝试过,尽管它们不适用于GitLab CI,但都不起作用
更新:
运行ls-l./vendor/laravel/dash/bin
返回:
total 33560
-rwxr-xr-x 1 root root 10885776 Jun 26 13:10 chromedriver-linux
-rwxr-xr-x 1 root root 14994520 Jun 26 13:10 chromedriver-mac
-rwxr-xr-x 1 root root 8393728 Jun 26 13:10 chromedriver-win.exe
-rwxr-xr-x 1 root root 69309 Jun 25 22:59 jquery.js
我已尝试将文件复制到计算机的当前路径
,但也没有成功:
测试$PATH变量
$echo$PATH
./vendor/bin:/composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/bin:/sbin:/bin
将二进制文件复制到/usr/local/bin
$CHROME\u DRIVER\u PATH\u BIN=。/vendor/laravel/dash/BIN/chromedriver-linux
$cp$CHROME\u驱动程序\u路径\u BIN/usr/local/BIN
测试文件是否确实存在
$ls-lha/usr/local/bin
总数56564
drwxr-xr-x 1根根根4.0K六月26日17:33。
drwxr-xr-x 1根根根4.0K二月21日23:08。。
-rwxr-xr-x 1根目录10.4M Jun 26 17:33 chromedriver linux
-rwxr-xr-x 1根根1.8M二月22日06:40作曲家
-RWXR-x 1根根目录118 Feb 21 23:02 docker php入口点
-rwxrwxr-x 1根根目录1.4K二月21日23:02 docker php外部配置
-rwxr-x 1根根目录2.4K二月21日23:02 docker php扩展启用
-rwxrwxr-x 1根目录2.3K二月21日23:02 docker php外部安装
-rwxr-x 1根根目录587 Feb 9 01:57 docker php源代码
lrwxrwx 1根根目录32 Jun 26 17:33 heroku->/usr/local/lib/heroku/bin/heroku
-rwxr-xr-x 1根根817二月21日23:08梨
-rwxr-xr-x 1根根目录838 Feb 21 23:08 peardev
-rwxr-xr-x 1根根部751二月21日23:08 pecl
lrwxrwxrwx 1根根2月21日23:08 phar->phar.phar
-rwxr-xr-x 1根根14.5K二月21日23:08 phar.phar
-rwxr-xr-x 1根根14.3M二月21日23:08 php
-rwxr-xr-x 1根根14.2M二月21日23:08 php cgi
-rwxr-xr-x 1根根目录2.6K二月21日23:08 php配置
-rwxr-xr-x 1根根14.4M二月21日23:08 phpdbg
-rwxr-xr-x 1根根根4.5K二月21日23:08 phpize
不管怎样,运行chromedriver linux
都不起作用,我得到了错误
nohup:无法执行“chromedriver linux”:没有这样的文件或目录
我在macOS上测试了相同的概念:创建了一个可执行文件,使用符号链接将其放入我的路径变量上的文件夹中,它可以完美地工作。
因此,当脚本执行时,“/vendor
”中的“
”可能不会引用您期望的当前工作目录
由于设置了PATH
,因此最好将chromedriver linux
放在/vendor/bin
中。
这样,您的脚本只需调用chromedriver linux
(无引导路径)我就可以解决安装Chrome
和chromedriver
软件包的问题,因为它们在Alpine linux上可用
以下是我的.gitlab ci.yml
文件的相关部分:
image: lorisleiva/laravel-docker
before_script:
- apk add chromium-chromedriver -y
- apk add chromium -y
phptest:
stage: test
script:
- mv .env.testing .env
- php artisan key:generate
- ./vendor/bin/phpunit --colors=never
- chromedriver 2>&1 &
- sleep 5
- nohup php artisan serve &
- php artisan dusk
另外,真正重要的一部分是在创建RemoteWebDriver
时添加--无沙盒
参数。这可以通过更改tests/DuskTestCase.php
文件上的函数driver
来完成:
image: lorisleiva/laravel-docker
before_script:
- apk add chromium-chromedriver -y
- apk add chromium -y
phptest:
stage: test
script:
- mv .env.testing .env
- php artisan key:generate
- ./vendor/bin/phpunit --colors=never
- chromedriver 2>&1 &
- sleep 5
- nohup php artisan serve &
- php artisan dusk
ls-l./vendor/laravel/dash/bin的结果是什么?它是64位系统吗?我已经用这些信息更新了这个问题。是的,它是一个64位系统。我曾尝试将文件直接复制到/usr/local/bin,但这也没有解决问题。我用一些可能有用的东西更新了问题的内容。@juniorgarcia我不建议复制二进制文件,只建议使用其完整路径。@juniorgarcia只要您使用“/
”,您就假设您在某个地方。不要假设。我知道这一点,但是如果我以/
开头的路径运行test-f
和test-x
之类的测试来证明文件存在并且是可执行的,它不应该工作吗?@juniorgarcia是的,它应该工作。我只是建议出于测试目的这样做,以排除任何路径问题。太好了!向上投票apk AddChromeDriver
似乎使该可执行文件可供执行。是否有任何方法可以缓存chromedriver安装,使其不会在每次测试运行时安装?