尝试在 Jenkins 管道中构建 docker 容器时在构建时出现 "can't stat" 错误,但为什么呢?

Getting a "can't stat" error on build when trying to build a docker container within a Jenkins pipeline, but why?

我正在尝试通过使用 Docker 文件作为 Jenkins 2.0 管道和插件 Docker 管道插件中的一个步骤来构建一个 Docker 容器。

我创建了一个 Docker 文件,如下所示:

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) 我看到这个的所有者文件夹是根目录。

我试过 chown -R jenkins.jenkins folder 但在下一个 运行 root 之后又回到了文件夹的所有者(与路径中的 "generated" 文件夹名称相符)。

有机会怎么解决吗?

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