Gitlab-runner语法错误

时间:2017-04-30 21:57:36

标签: docker gitlab gitlab-ci gitlab-ci-runner

我最近使用docker image 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。

2 个答案:

答案 0 :(得分:2)

正如#1550所指出的那样,问题似乎来自bash.go文件中Dockerfile文件中的shell检测,它是在没有换行符的情况下注入的,因此会产生语法错误你是你自己经历的。

由于您的exec "${*}" 中有自定义入口点,并且看起来您没有将引号传递给exec lines 16-31的参数,我认为这是失败的,应该进行修改。

将其更改为

pom.xml

答案 1 :(得分:0)

作为 Balthazar 提到的错误的解决方法,尝试覆盖 .gitlab-ci.yml 中的入口点,如 GitLab docs:

对于 Docker 17.06 及更高版本:

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

对于 Docker 17.03 及更早版本:

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