私は最近自分のホストGitLab CEインスタンスにGitLab-CIを設定しました。特定のプロジェクトとランナーを1人ランナーを作成しました。エラーコード255を返すGitlab-CI PHP実行ファイル
マイ/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(ビルド:7.0 in .gitlab-ci.yml)で同じエラーが発生しました。デバッグの理由から、エラーを表示するためにphp -d
を追加しましたが、何も表示されていません。
正確に同じ.gitlab-ci.yml
ファイルを持つ小さなプロジェクトでは、他の(プライベート)パイプラインが期待通りに機能します。私はまた1つのランナーから別のランナーに切り替えることを試みたが、それはどちらでも動作しない。
私はドッカーとCIの初心者ですから、この状況を適切にデバッグする方法はほとんど分かっていません。おそらくphp memory_limit を増やしたり、エラーをstderrに出力したりします。
アイデア?
パラレルリントのソースからヒントを得ることはできますか?:https://github.com/JakubOnderka/PHP-Parallel-Lint/blob/master/parallel-lint.php –
また、あなたのコンテナphp.iniにはdisplay_errorsなどがありますか?たぶんエラーが表示されない理由は? –
私はデフォルトのgitlab-ci php 7コンテナを使用しています。正直なところ、display_errorsが有効になっているかどうかわかりません。しかし、すべてのエラーを表示するディレクティブを追加する 'php -d'を追加しました。 – falnyr