2017-08-09 77 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

看看我的答案是否有助於解決問題? –