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权限有关。
你在这里遇到的问题是我猜的执行权限,很可能我不确定但我有一个类似的问题并通过 运行 上面提到的命令解决了这个问题。
我正在使用 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
我查看了多个其他问题 (
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权限有关。 你在这里遇到的问题是我猜的执行权限,很可能我不确定但我有一个类似的问题并通过 运行 上面提到的命令解决了这个问题。