Gitlab的运行与语法错误

我最近使用docker image gitlab / gitlab-runner:9.1.0与gitlab容器一起使用了一些CI。 发生错误,并build议使用不同版本的类似支持请求,所以我尝试了: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 

我也不知道如何debugging,也没有看到我的容器或testing脚本中的任何问题。 这是.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行之间进行的shell检测,它在没有换行的情况下被注入,从而产生你自己正在经历的语法错误。

既然你在Dockerfile有一个自定义的入口Dockerfile ,看起来你没有在exec这个参数里面引用引号,这就是我认为失败的原因,应该修改。

将其更改为

 exec "${*}"