如何从ci-pipeline执行位于跑步者的脚本?

我有一个gitlab运行图像如下:

Dockerfile

FROM alpine:3.6 RUN apk add --no-cache curl bash COPY trigger-jenkins /usr/local/bin/trigger-jenkins ENTRYPOINT ["/bin/bash"] 

它的目的是触发jenkins的工作。 运行这个:

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

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

.gitlab-ci.yml

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

pipe道失败像这样:

 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 

我search了错误代码,但无法find解释。

我错过了什么?

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

 /bin/bash /bin/sh command args 

这就是我们所看到的抱怨。 不能执行二进制文件。 下面是你的entrypoint

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

这将确保一个命令得到由bash执行,无论是另一个shell或bash它将工作。 无需修改和创buildentrypoint.sh

我继续我的研究,并find官方的maven docker镜像的存储库。

他们通过创build一个mvn-entrypoint.sh解决了类似的问题。 所以我也尝试过

entrypoint.sh

 #!/bin/sh export PATH=$PATH:/usr/local/bin/ exec "$@" 

这个伎俩。