记录下Jenkins调用docker打包前端项目后无法清理工作工具的问题

背景:最近经理要求前端新项目在Jenkins使用docker镜像来临时编译打包,本来是没有问题的;但Jenkins是在Ubuntu系统上二进制包安装的,使用的普通用户devops部署的,docker镜像内部是用的root用户,这就导致打包之后在.jenkins/workspace中产生的dist及node_modoules权限变成了root权限,在jenkins执最后一步清理工作空间时会提示 Operation not permitted,即无权限清理。

  • 先看jenkinsfile
Jenkinfile 复制代码
node {
   ......
    stage('部署') {
        if (env.target == 'prod') {
            sh "rsync -zcav -e ssh dist/* test:/data/www/web/dist"
            sh "sudo  chown -R devops:devops `pwd`"
        }
    }
    stage('清理'){
        deleteDir()
    }
}

一开始的想法修改workspace产生的目录权限,但由于jenkins所在服务器使用的用户devops设置了密码,单独使用sudo命令会提示sudo: no tty present and no askpass program specified

解决办法

  • 方法1.将devops用户在sudo组中设置为免密码
shell 复制代码
sudo vim /etc/sudoers

devops  ALL=(ALL:ALL) NOPASSWD:ALL
  • 方法2. 在使用sudo命令的时候将密码传入过去
shell 复制代码
echo PASSWROD | sudo -S chown -R devops:devops `pwd`

改后jenkinsfile如下

Jenkinfile 复制代码
node {
   ......
    stage('部署') {
        if (env.target == 'prod') {
            sh "rsync -zcav -e ssh dist/* test:/data/www/web/dist"
            sh "echo PASSWROD | sudo -S chown -R devops:devops `pwd`"
        }
    }
    stage('清理'){
        deleteDir()
    }
}
相关推荐
Johny_Zhao17 小时前
centos7安装部署openclaw
linux·人工智能·信息安全·云计算·yum源·系统运维·openclaw
haibindev17 小时前
在 Windows+WSL2 上部署 OpenClaw AI员工的实践与踩坑
linux·wsl2·openclaw
用户13573999256601 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h1 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔1 天前
通过 Docker 创建开发环境
docker·开发环境
冬奇Lab2 天前
一天一个开源项目(第41篇):Workout.cool - 现代化开源健身教练平台,训练计划与进度追踪
docker·开源·资讯
天朝八阿哥2 天前
使用Docker+vscode搭建离线的go开发调试环境
后端·docker·visual studio code
0xDevNull2 天前
Linux切换JDK版本详细教程
linux
进击的丸子2 天前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端