簡體   English   中英

Gitlab-runner 語法錯誤

[英]Gitlab-runner with syntax error

我最近將docker鏡像gitlab/gitlab-runner:9.1.0與 gitlab 容器結合使用來獲得一些 CI。 出現錯誤,類似的支持請求建議使用不同的版本,所以我也嘗試了:latest和一些:1.11 不幸的是,它一直告訴我這個錯誤:

Running with gitlab-ci-multi-runner 1.11.4 (5e7ba4a)
  on foo (02cdacdc)
Using Docker executor with image pretzlaw/php:7.1-apache ...
Starting service mariadb:latest ...
Pulling docker image mariadb:latest ...
Waiting for services to be up and running...
Pulling docker image pretzlaw/php:7.1-apache ...
Running on runner-02cdacdc-project-7-concurrent-0 via 9d1d33dc9212...
Fetching changes...
HEAD is now at 7580815 QA: CI Lint
From http://idgaf.example.org/foo/bar
   7580815..affeede  develop    -> origin/develop
Checking out affeede as develop...
Skipping Git submodules setup
[: 1: [: Syntax error: end of file unexpected
[: 1: [: Syntax error: end of file unexpected
ERROR: Job failed: exit code 2

我也不知道如何調試它,也不知道我的容器或測試腳本中有任何問題。 這是.gitlab-ci.yml

before_script:
  - composer install

test_7_1:
  image: pretzlaw/php:7.1-apache
  script: ls

這可能是某處容器的問題,但我不明白。 手動執行此操作(使用最近失敗的 docker 容器)一切正常:

docker container exec 68c7b5448a56 ls
bin
builds
...

如何追溯問題? 這是什么一回事呢?

它適用於 GitLab 9.1.1-ce.0。

正如#1550所指出的,問題似乎來自在bash.go文件中第 16-31 行之間完成的外殼檢測,它在沒有換行的情況下注入,從而造成您自己遇到的語法錯誤。

由於您的Dockerfile有一個自定義入口點,並且您似乎沒有將引號傳遞給 exec here的參數,因此我認為這是失敗的,應該進行修改。

將其更改為

exec "${*}"

作為 Balthazar 提到的錯誤的解決方法,嘗試覆蓋.gitlab-ci.yml的入口點,如GitLab 文檔中所示:

對於 Docker 17.06 及更高版本:

image:
  name: super/sql:experimental
  entrypoint: [""]

對於 Docker 17.03 及更早版本:

image:
  name: super/sql:experimental
  entrypoint: ["/bin/sh", "-c"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM