2016-09-20 64 views
0

我试图通过使用Dockerfile作为Jenkins 2.0管道和插件Docker管道插件中的一个步骤来构建Docker容器。尝试在Jenkins管道中构建Docker容器时,在构建时获得“can not stat”错误,但为什么?

我创建了一个Dockerfile它看起来像这样:

FROM openjdk:8-jdk 

ENV DEBIAN_FRONTEND noninteractive 

RUN set -x \ 
    && apt-get update \ 
    && apt-get install -y \ 
     file \ 
     aapt \ 
     lib32z1 \ 
     make \ 
     gcc-4.9-base \ 
     libgcc1 \ 
    && rm -rf /var/lib/apt/lists/* 

“的OpenJDK:8 JDK” 是从码头工人HUB有效openjdk8图像。

这里的管道脚本的相关部分(已经被编辑过的故障排除事项):

stage ('Compilation within Docker') { 
     java = docker.build 'openjdk8:android' 
     java.inside("-e GRADLE_USER_HOME=${GRADLE_USER_HOME} -e ANDROID_HOME=${GRADLE_USER_HOME}/android-sdk-linux") { 
      withCredentials([ // Use Jenkins credentials ID of artifactory 
       [$class: 'UsernamePasswordMultiBinding', credentialsId: artifactory_creds, usernameVariable: 'A_USER', passwordVariable: 'A_PASS'], 
      ]){ 
       sh """ 
       echo "OK!" 
       exit 0 
       """ 

“openjdk8:机器人”是我选择的图像,而不是正式的以任何方式名称。

出于某种原因,当我运行它失败,出现以下错误编译:

[workspace] Running shell script 
+ docker build -t openjdk8:android . 
Error checking context: 'can't stat '/mnt/storage/jenkins/jobs/product_android_build/workspace/company/build/generated/source/r/production/release/com''. 
[Pipeline] } 
[Pipeline] // stage 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 
ERROR: script returned exit code 1 
Finished: FAILURE 

的建立显然正在运行的詹金斯用户,但是当我登录到詹金斯服务器和浏览路径提到在错误(/mnt/storage/jenkins/jobs/product_android_build/workspace/company/build/generated/source/r/production/release/com)我看到该文件夹​​的所有者是根。

我试过了chown -R jenkins.jenkins folder,但是在下一次运行之后,根回到了文件夹的所有者(与路径中的“生成的”文件夹名称相符)。

任何机会如何解决它?

回答

0

如果有人感兴趣...从Jenkins服务器的作业目录中删除工作区目录解决了问题。

相关问题