我正在尝试使用Dockerfile作为Jenkins 2.0管道和插件Docker Pipeline插件中的一步来构建Docker容器。
我创建了一个看起来像这样的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”是来自Docker 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:android”是我为图片选择的名称,并且不是官方的。
出于某种原因,当我运行构建时,它失败并出现以下错误:
[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
构建显然是作为jenkins用户运行的,但是当我登录Jenkins服务器并浏览错误中提到的路径(/mnt/storage/jenkins/jobs/product_android_build/workspace/company/build/generated/source/r/production/release/com
)时,我看到该文件夹的所有者是root。
我已经尝试了chown -R jenkins.jenkins folder
,但是在下一次运行之后,root回来了该文件夹的所有者(与路径中的“生成”文件夹名称一致)。
有机会如何解决它?
答案 0 :(得分:0)
如果有人感兴趣...从Jenkins服务器上的作业目录中删除工作区目录可以解决问题。