2017-08-09 76 views
0

我有一个gitlab亚军相关图片如下:如何从ci-pipeline执行位于跑步者的脚本?

Dockerfile

FROM alpine:3.6 

RUN apk add --no-cache curl bash 

COPY trigger-jenkins /usr/local/bin/trigger-jenkins 

ENTRYPOINT ["/bin/bash"] 

其目的是触发詹金斯工作。运行此:

docker run -ti jenkins-runner:latest trigger-jenkins jon_name 

工作得很好。但是,当我试图做同样的:

.gitlab-ci.yml

Jenkins Trigger: 
    script: 
    - trigger-jenkins job_name 
    tags: 
    - Jenkins 

管道失败是这样的:

Running with gitlab-ci-multi-runner 9.3.0 (3df822b) 
    on Jenkins Trigger (12475d61) 
Using Docker executor with image jenkins-runner:latest ... 
Using docker image sha256:44dedf0b3485e0e57107e2745739e1a252fb64c4161465e1b5ccc1119a1183bf for predefined container... 
Using docker image jenkins-runner:latest ID=sha256:4760a8ef9139ee9c9a56c686de780fc49e176fe4294e1f0db4f431e117b6811c for build container... 
Running on runner-12475d61-project-6-concurrent-0 via cc960a3794a0... 
Cloning repository... 
Cloning into '/builds/dev/Project'... 
Checking out 874b2eac as test/jenkins... 
Skipping Git submodules setup 
/bin/sh: /bin/sh: cannot execute binary file 
/bin/sh: /bin/sh: cannot execute binary file 
ERROR: Job failed: exit code 126 

我搜索了错误代码,但无法找到解释。

我错过了什么?

+0

您还没有在yaml中指定图片? –

+0

我已经注册了标签为'Jenkins'的跑步者。正如您在日志中看到的那样,加载了正确的图像。 –

+0

该文件是可执行文件或shell脚本? –

回答

1

问题不在于exec。问题可能是这样的,你的入口点是\bin\bash,而Gitlab CI试图执行/bin/sh这是一个可执行文件。导致类似下面的东西

/bin/bash /bin/sh command args 

这是我们看到的投诉。不能执行二进制文件。你的entrypoint应该已经低于

ENTRYPOINT ["/bin/bash", "-c"] 

将做一定的命令获得通过的bash执行,是否是另一个shell或bash它会工作。无需修改并创建entrypoint.sh

0

我继续我的研究,并找到官方maven docker图像的存储库。

他们通过创建mvn-entrypoint.sh解决了类似的问题。所以,我想是一样的:

entrypoint.sh

#!/bin/sh 

export PATH=$PATH:/usr/local/bin/ 

exec "[email protected]" 

这并获得成功。

+0

看看我的答案是否有助于解决问题? –