【问题标题】:Jenkins pipeline doesn't build docker scriptJenkins 管道不构建 docker 脚本
【发布时间】:2020-09-18 21:54:11
【问题描述】:

我正在使用 Jenkinsfile 和 Docker 构建管道。构建阶段构建一个运行一个构建 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 

我查看了多个其他问题 (1,2,3),其中已经解决了类似的权限问题。 我尝试过的解决方案: 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=$1
VCS_URL=`cat Dockerfile | grep "ARG VCS_URL" | sed $SEDFLAG 's/[^0-9.]//g'`
VERSION=`awk '/version =/{print $3;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 "============================================================================================"

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

【问题讨论】:

    标签: docker-compose dockerfile jenkins-pipeline gradle-kotlin-dsl


    【解决方案1】:

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

    sh 'chmod +x docker_build.sh'

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-15
      • 2020-07-19
      • 1970-01-01
      • 2019-11-15
      • 2021-10-05
      • 2017-07-16
      • 2019-08-24
      • 2018-03-27
      相关资源
      最近更新 更多