记录下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()
    }
}
相关推荐
广州灵眸科技有限公司5 小时前
瑞芯微(EASY EAI)RV1126B yolov11-track多目标跟踪部署教程
linux·开发语言·网络·人工智能·yolo·机器学习·目标跟踪
谷雨不太卷5 小时前
计算机网络:套接字
linux·服务器·计算机网络
YuanDaima20485 小时前
WSL2 与 Ubuntu 22.04 基础环境部署指南
linux·运维·服务器·人工智能·ubuntu·docker
万邦科技Lafite5 小时前
API接口一键获取商品评论,根据商品评论分析客户画像
linux·服务器·数据库·windows·microsoft·电商开放平台
极客先躯5 小时前
高级java每日一道面试题-2025年12月08日-实战篇[Docker]-如何为 Docker 配置代理?如何为容器配置代理?
java·docker·代理配置的双层架构·docker 守护进程配置代理·为容器配置代理·构建时环境变量·运行时注入环境变量
sulikey5 小时前
操作系统磁盘 I/O:为何选择“块“而非“扇区“?
linux·操作系统·io·磁盘·磁盘io
一个人旅程~5 小时前
如何永久关闭bitlocker并防止出现更新后被强制加密?
linux·windows·经验分享·电脑
源远流长jerry6 小时前
TCP 三次握手深度解析:从内核源码到生产实践
linux·运维·网络·网络协议·tcp/ip
黄筱筱筱筱筱筱筱6 小时前
RHCE---web服务器①
linux·运维·服务器
流浪0016 小时前
Linux基础篇(三)轻松拿捏入门级指令
linux·运维·服务器