无法运行简单的 jenkins docker node build(当前不支持 /home 之外的主目录)
Posted
技术标签:
【中文标题】无法运行简单的 jenkins docker node build(当前不支持 /home 之外的主目录)【英文标题】:unable to run simple jenkins docker node build (home directories outside of /home are not currently supported) 【发布时间】:2021-07-22 02:55:24 【问题描述】:根据官方文档 (https://www.jenkins.io/doc/book/pipeline/docker/),我正在使用下面提到的一个非常简单的脚本:
pipeline
agent
docker image 'node:14-alpine'
stages
stage('Test')
steps
sh 'node --version'
虽然很简单,但输出如下:
22:58:45 [Pipeline]
22:58:45 [Pipeline] // stage
22:58:45 [Pipeline] withEnv
22:58:45 [Pipeline]
22:58:45 [Pipeline] isUnix
22:58:45 [Pipeline] sh
22:58:45 + docker inspect -f . node:14-alpine
22:58:46 Sorry, home directories outside of /home are not currently supported.
22:58:46 See https://forum.snapcraft.io/t/11209 for details.
22:58:46 [Pipeline] isUnix
22:58:46 [Pipeline] sh
22:58:46 + docker pull node:14-alpine
22:58:46 Sorry, home directories outside of /home are not currently supported.
22:58:46 See https://forum.snapcraft.io/t/11209 for details.
22:58:46 [Pipeline]
22:58:46 [Pipeline] // withEnv
22:58:46 [Pipeline]
22:58:46 [Pipeline] // node
22:58:46 [Pipeline] End of Pipeline
22:58:46 ERROR: script returned exit code 1
22:58:46 Finished: FAILURE
不知道我做错了什么。
【问题讨论】:
【参考方案1】:消息中的超链接指向一个页面,该页面显示:
如果用户的主目录在 /home 之外,Snapd 目前不支持运行快照。
docker
命令是这样说的。我怀疑您正在尝试以jenkins
用户身份运行docker
命令。 jenkins
用户的默认主目录是 /var/lib/jenkins
。 jenkins
用户的默认主目录在 /home
之外。
如果是这种情况,有几种选择:
在该计算机上创建一个用户,其主目录位于/home
,并以该用户身份运行 Jenkins 代理
使用 apt
而不是 snapd
在该计算机上安装 docker(遵循 Docker 指导而不是 Ubuntu 指导)
在另一台计算机上创建一个用户,其主目录位于 /home
,并使用 snapd
在那里安装 docker,然后配置代理以使用该计算机
【讨论】:
【参考方案2】:您可能以某种方式从 Jenkins 继承了 HOME 环境变量。您可以使用 env config 来覆盖它。如果您希望从执行 docker build 的工作节点获得 HOME,您可以将 env.HOME 挂载到 /home/jenkins(或类似的东西)到容器中。
类似:
pipeline
agent
docker
image 'node:14-alpine'
args '-v $HOME:/home/jenkins'
...
【讨论】:
一个有用的事情是在舞台上打印环境。切换它,以便 docker 代理仅在“测试”步骤中使用。然后在此之前添加一个使用非 docker 代理的步骤并添加如下内容: sh 'env' 这将打印环境,您可以看到 HOME 设置为什么以上是关于无法运行简单的 jenkins docker node build(当前不支持 /home 之外的主目录)的主要内容,如果未能解决你的问题,请参考以下文章
jenkins初始化提示“No such plugin: cloudbees-folder”
Jenkins 在 Windows 上使用 Docker - 无法运行程序“nohup”
Jenkins Docker持续集成实战3:Docker的六项优势,让你无法拒绝