网站数据库 mysql,如何构建wordpress,pc网站做移动适配,网站首页界面设计背景#xff1a;最近经理要求前端新项目在Jenkins使用docker镜像来临时编译打包#xff0c;本来是没有问题的#xff1b;但Jenkins是在Ubuntu系统上二进制包安装的#xff0c;使用的普通用户devops部署的#xff0c;docker镜像内部是用的root用户#xff0c;这就导致打包… 背景最近经理要求前端新项目在Jenkins使用docker镜像来临时编译打包本来是没有问题的但Jenkins是在Ubuntu系统上二进制包安装的使用的普通用户devops部署的docker镜像内部是用的root用户这就导致打包之后在.jenkins/workspace中产生的dist及node_modoules权限变成了root权限在jenkins执最后一步清理工作空间时会提示 Operation not permitted即无权限清理。 先看jenkinsfile
node {......stage(部署) {if (env.target prod) {sh rsync -zcav -e ssh dist/* test:/data/www/web/distsh sudo chown -R devops:devops pwd}}stage(清理){deleteDir()}
}一开始的想法修改workspace产生的目录权限但由于jenkins所在服务器使用的用户devops设置了密码单独使用sudo命令会提示sudo: no tty present and no askpass program specified。 解决办法
方法1.将devops用户在sudo组中设置为免密码
sudo vim /etc/sudoersdevops ALL(ALL:ALL) NOPASSWD:ALL方法2. 在使用sudo命令的时候将密码传入过去
echo PASSWROD | sudo -S chown -R devops:devops pwd改后jenkinsfile如下
node {......stage(部署) {if (env.target prod) {sh rsync -zcav -e ssh dist/* test:/data/www/web/distsh echo PASSWROD | sudo -S chown -R devops:devops pwd}}stage(清理){deleteDir()}
}