Gitlab-CI PHP 可执行文件返回错误代码255

Gitlab-CI PHP executable returning error code 255

我最近在我的自托管 GitLab CE 实例中设置了 GitLab-CI。我为特定项目创建了一个 运行ner 并共享了一个 运行ner.

我的 /etc/gitlab-runner/config.toml 如下:

concurrent = 1
check_interval = 0

[[runners]]
  name = "project runner"
  url = "https://gitlab.domain.com/ci"
  token = "SECRET"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "geertw/docker-php-ci:7.0-no-xdebug"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

[[runners]]
  name = "shared runner"
  url = "https://gitlab.domain.com"
  token = "SECRET"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "geertw/docker-php-ci:7.0-no-xdebug"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

然后我将自定义脚本添加到我的 composer.json 文件中:

...

"scripts": {
    "build": [
        "@composer install --no-progress --no-interaction --no-suggest",
        "@lint"
    ],
    "lint": "php -d display_errors -d display_startup_errors ./vendor/bin/parallel-lint --exclude vendor ."
}

脚本是我的 .gitlab-ci.yml 文件的一部分:

before_script:
  - php -v

services:
  - mysql:latest

variables:
  MYSQL_DATABASE: "database"
  MYSQL_ROOT_PASSWORD: "password"

build:7.0:
  image: geertw/docker-php-ci:7.0
  script:
    - composer build
    - php vendor/bin/phpunit --coverage-text --colors=never

build:7.1:
  image: geertw/docker-php-ci:7.1-no-xdebug
  script:
    - composer build

cache:
  paths:
    - vendor/

当我在 GitLab 中执行管道时,我收到一个错误:

> php -d display_errors -d display_startup_errors ./vendor/bin/parallel-lint --exclude vendor .
Script php -d display_errors -d display_startup_errors ./vendor/bin/parallel-lint --exclude vendor . handling the lint event returned with error code 255
ERROR: Job failed: exit code 1

现在当我在本地 运行 composer lint 时,它按预期工作。我也尝试将其注释掉,但我收到了与 PHPUnit 相同的错误(build:7.0 in .gitlab-ci.yml)。出于调试原因,我添加了 php -d 来显示错误,但没有显示任何内容。

对于具有完全相同 .gitlab-ci.yml 文件的较小项目,另一个(私有)管道按预期工作。我也尝试从一个 运行ner 切换到另一个,但它在任何一个上都不起作用。

由于我是docker和CI的新手,一般来说,我对如何正确调试这种情况知之甚少,也许增加php memory_limit 以某种方式或将错误输出到 stderr。

有什么想法吗?

原来有一个自动加载器使用@call 执行ext-mysqli 函数。该应用程序一团糟。