通过sudo+脚本解决jenkins构建任务的文件、目录权限问题
通常情况下,由于jenkins和http服务分别以各自的用户运行,造成构建任务中部署代码的时候遭遇棘手的权限问题。比如说,如果我们使用nginx来提供http服务,nginx的运行用户(组)为nginx:nginx,那么在jenkins删除网站旧代码的时候是没有权限的——尤其是遇到那些由网站程序运行时生成的临时文件时。
对于这种情况,我们可以采用如下步骤解决:
一、新建一个网站发布脚本,这个脚本的目的就是把构建好的代码替换到网站目录,然后恢复新代码的权限;
二、在sudoer文件中为jenkins用户授予运行该脚本的权限。
经过上面两步之后,我们只需要在jenkins构建脚本中使用如sudo /path/to/deployscript
的命令就可以了。
以下为发布脚本的示例,这个示例脚本支持三个参数:--source /path/to/src中/path/to/src应指向构建好的代码;--site site.com应指向服务器web目录中站点名称,--clear表明先清空网站目录。这里假设所有网站都放置于/data/www目录,并统一以域名(xxx.xxx.com)的格式来命名站点根目录。
#! /bin/bashdeclare WEB_ROOT=/data/wwwif [[ $1 == "--source" ]] && [[ $3 == "--site" ]] && [[ $4 =~ [[:alpha:]]+ ]]; then declare SITE_ROOT=$WEB_ROOT/$4 declare SOURCE_CODE=$2 if [[ $# == 5 ]] && [[ $5 == "--clear" ]]; then rm -rf $SITE_ROOT/* fi cp -R $SOURCE_CODE/* $SITE_ROOT/ chown -R nginx:nginx $SITE_ROOTelse echo -e "Wrong Arguments.e.g.--source /path/to/src --site site.com [--clear]";fi
以下为sudoer文件中为jenkins用户授权的记录。请使用sudo visudo
来编辑sudoer文件。这里假设发布脚本位于/opt/webmaster/sitedeploy.sh。
jenkins ALL=NOPASSWD: /opt/webmaster/sitedeploy.sh
最后,jenkins构建project配置中的脚本示例:
declare WEB_ENV=proddeclare BUILD_DIR=/tmp/jenkins_building/$JOB_NAMEdeclare ENV_CONFIG_FILE=$BUILD_DIR/protected/Config/env.cfgrm -rf $BUILD_DIRmkdir -p $BUILD_DIRsvn export --force $WORKSPACE $BUILD_DIRecho -e "[globals]sysConfig[env]=$WEB_ENV" > $ENV_CONFIG_FILEsudo /opt/webmaster/sitedeploy.sh --source $BUILD_DIR --site xxx.com --clear
这里对xxx.com
的代码进行了全量更新,并且在构建时生成了网站的运行环境配置文件。需要注意的事,这个示例中的构建服务和目标网站位于同一台主机上,这是一种不合理的架构,具有较大的安全隐患。
相关内容
-
你支持800万用户Firefox吗如何能在火狐浏览器上
你支持800万用户Firefox吗如何能在火狐浏览器上中国的道路,,2...
-
如何设置用户权限|如何设置用户权限密码
如何设置用户权限|如何设置用户权限密码,,如何设置用户权限密...
-
IE脚本错误如何做Web脚本错误解决技巧
IE脚本错误如何做Web脚本错误解决技巧,,这个问题是由于这样的...
-
win7怎么看电脑运行时间|win7怎么看软件运行时
win7怎么看电脑运行时间|win7怎么看软件运行时间,,1. win7怎么...
-
linux – 如何为Debian中的所有用户设置PATH?
linux – 如何为Debian中的所有用户设置PATH?,适用于,用户,我有...
-
最新版Win7系统运行速度非常缓慢怎么解决
最新版Win7系统运行速度非常缓慢怎么解决,最新版,运行速度, ...
-
金蝶系统管理员删除|金蝶用户管理员删了怎么办
金蝶系统管理员删除|金蝶用户管理员删了怎么办,,1.金蝶用户管...
-
斑马打印机官方网站|斑马标签打印机官网
斑马打印机官方网站|斑马标签打印机官网,,斑马标签打印机官网...
-
计算机正常运行中死机故障的解决
计算机正常运行中死机故障的解决,,通常有三个问题,如黑屏、花屏...
-
如何删除电脑上的用户|如何删除电脑上的用户名
如何删除电脑上的用户|如何删除电脑上的用户名和密码,,如何删...
-
网站版权设置|网站版权格式
网站版权设置|网站版权格式,,1. 网站版权格式下面介绍一些不错...
-
台式机还是笔记本夏天给电脑用户买什么
台式机还是笔记本夏天给电脑用户买什么,,随着暑假的到来,许多同...
-
Win10系统无法运行红色警戒游戏怎么办?
Win10系统无法运行红色警戒游戏怎么办?,红色警戒,系统, 红色...
-
怎么解决Win10显示器输入不支持导致系统无法运
怎么解决Win10显示器输入不支持导致系统无法运行,不支持,显示...
-
添加网络打印机|添加网络打印机要输入用户名密
添加网络打印机|添加网络打印机要输入用户名密码,,添加网络打...