Jenkins 管道不构建 docker 脚本

Jenkins pipeline doesn't build docker script

我正在使用 Jenkinsfile 和 Docker 构建管道。 Build Stage 构建了一个 运行s 脚本,该脚本构建了一个 docker 文件。

    stage('Build') {
      steps {
        echo 'Building Image...'
        sh '''COMMIT="$(git log --format="%H" -n 1)"
TAG=${COMMIT:0:7}
./docker_build.sh $TAG
'''
      }
    }

当我在 Jenkins 上 运行 时,我得到这个错误

+ COMMIT=b64ccfbe0d..............
+ ./docker_build.sh 123asdc
/root/.jenkins/workspace/nameofproj/durable-c87f882c/script.sh: line 3: ./docker_build.sh: Permission denied
script returned exit code 1 

我查看了多个其他问题 (,2,),其中解决了类似的权限问题。 我尝试过的解决方案: Jenkinsfile 中的 git update-index --chmod=+x 似乎确实有点通过了权限,但随后无法识别标签并留下错误,例如

error: 0852ac1: does not exist and --remove not passed
fatal: Unable to process path 

build_docker.sh 看起来像:

#!/usr/bin/env bash
TAG=
VCS_URL=`cat Dockerfile | grep "ARG VCS_URL" | sed $SEDFLAG 's/[^0-9.]//g'`
VERSION=`awk '/version =/{print ;exit;}' "build.gradle.kts"`
IMAGE_VERSION=`sed -e 's/^"//' -e 's/"$//' <<<"${VERSION}"`

echo "============================================================================================"
echo "  Building docker { NAME:"${NAME}", IMAGE_VERSION:"${IMAGE_VERSION}", TAG:"${TAG}" "
echo "============================================================================================"

我不确定下一步该做什么,因为文件似乎还没有被读取。请指教

在执行您的 shell 脚本之前尝试 运行:

sh 'chmod +x docker_build.sh'

前两个相关回答与您遇到的问题无关,与dockerdaemon socket权限有关。 你在这里遇到的问题是我猜的执行权限,很可能我不确定但我有一个类似的问题并通过 运行 上面提到的命令解决了这个问题。