Php 拉威尔黄昏-罐头盒';它不能在GitLab CI上运行

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在那里,它是可执行的,但无

有人让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
在那里,它是可执行的,但无法运行

到目前为止,组成此阶段的脚本行包括:

- 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安装,使其不会在每次测试运行时安装?