Jenkins管道脚本退出状态-1为docker maven图像

时间:2016-09-16 08:46:42

标签: maven docker jenkins jenkins-pipeline

我尝试在docker容器中构建我的项目,图像如下所示:

FROM maven:3.3.9-jdk-8
WORKDIR mvnBuildDir
ENTRYPOINT ["mvn"]

如果我像下面那样运行我的容器,一切正常。

docker run -v /home/user/Worspace/myMavenProject:/mvnBuildDir myMaven3 clean package

但是如果我在我的 Jenkinsfile 中尝试这个,我得到一个错误,它什么也没告诉我。 Jenkinsfile:

//...
def maven = docker.image("myMaven3");
maven.inside("-v ${workdir}:/mvnBuildDir"){
    stage "build and test"
    sh "mvn clean install"
}
//..

错误:

[Pipeline] {
[Pipeline] stage (build and test)
Entering stage build and test
Proceeding
[Pipeline] sh
[master] Running shell script
+ mvn clean install -s mvnSettings.xml
[Pipeline] }
$ docker stop 1fc920c00b46a1038b0f39e2adc6e67f702d48ccf10d3e0bb3514d1cee3a795b
$ docker rm -f 1fc920c00b46a1038b0f39e2adc6e67f702d48ccf10d3e0bb3514d1cee3a795b
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // withDockerRegistry
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code -1
Finished: FAILURE

有没有人知道这里的问题是什么,或者有没有其他解决方案如何在docker容器中构建我的项目? 我的整个工作区都映射到容器内部,所以问题不在于我认为找不到pom或其他东西。如果我跑'mvn --version'我得到了正确的输出。 谢谢到目前为止。

1 个答案:

答案 0 :(得分:-1)

使用docker图像时,我遇到命令已结束但Docker仍在运行的行为,因此我没有输出。

你可以尝试通过shell调用docker。

sh 'docker pull myMaven3'

sh 'docker run --rm -v ${workdir}:/mvnBuildDir myMaven3 clean install'