jenkins+php+svn快速部署测试环境开发环境快速部署
jenkins 虽然作为java常用的打包部署工具,不过也可以使用在phpweb项目部署管理,前段时间帮公司部署了开发环境与测试环境,简单分享一下。
1、内网web环境搭建lnmp,centos下编译安装或者yum安装 google有很多资料,这里就不赘述了
2、nginx配置dev域名指向开发环境代码目录,svn设定钩子开发人员有更新后自动svn up更新开发环境代码
可参考http://www.360doc.com/content/14/0903/23/13647213_406884443.shtml
3、nginx配置test域名指向测试环境代码目录
4、服务器配置java环境后,下载jenkins,http://pkg.jenkins-ci.org/redhat-stable/ war包
直接java -jar jenkins.war启动jenkins,不需要安装啥tomcat(可将此命令加入开机自动启动配置)
5、建立jenkins任务,添加打包脚本,每次构建生成增量更新包与全量更新包,如下:
一、新建一个自由风格项目
二、配置svn
三、定时构建
这个定时是每天12点01分跟18点05分构建一下
四、设置shell打包脚本
- cd /root/.jenkins/workspace
- #find need update file
- find project_name -mmin -1 | grep -v ".svn" > svn.log #jenkins构建后查找1分钟内有修改的文件
- #clear history
- rm -rf pakage/*
- #cope auto file
- /usr/local/php/bin/php makeAutoPk.php #将有修改文件打包,打包脚本下面有参考
- #zip auto file to target path
- cd pakage/<span style="font-family: Arial, Helvetica, sans-serif;">project_name</span><span style="font-family: Arial, Helvetica, sans-serif;">/</span>
- datestr=$(date +%Y%m%d%H%M)
- targetpath="/home/hn/update_code/"#更新放置的目录
- mkdir ${targetpath}${datestr}
- filename="/auto.zip"
- zip -r ${targetpath}${datestr}${filename} .
- #cp all file
- cd ..
- cp -a ../shop_test all
- #delete nouse file
- find all -name .svn|xargs rm -rf#删除svn更新文件
- cd all
- #删除不需要打包的文件
- rm -rf temp
- rm -rf images
- #zip all file to target path
- zip -r ${targetpath}${datestr}/all.zip .
- #update解压增量包覆盖
- unzip -o ${targetpath}${datestr}/auto.zip -d test_path#test_path为测试环境代码目录
- </pre>makeAutoPk,php脚本<p></p><p></p><pre name="code" class="php"><?php
- /**
- * 制作增量包
- */
- $fileClass = new FileStatic();
- $fileClass->makePackege();
- class FileStatic
- {
- public $targetPath;//目标路径
- public $fileArr;//需要打包文件日志
- public $deleteFile;//删除的文件
- public $projectName;//项目名称
- public $sourcePath;//代码源
- public function __construct($projectName = 'shop'){
- $this->projectName = $projectName;
- $log = file_get_contents('svn.log');
- $this->fileArr = explode("\n", trim($log));
- $this->deleteFile = array();
- $this->targetPath = __DIR__.'/pakage/'.date('Ymdhms',time());
- $this->sourcePath = __DIR__;
- if( !is_dir ($this->targetPath)) $this->mkdirs($this->targetPath,0775);
- }
- //打包
- public function makePackege(){
- if(empty($this->fileArr)){
- echo "no file to make";
- exit;
- }
- foreach($this->fileArr as $file){
- $targetFile = $this->targetPath.'/'.$file;
- if(is_dir($file)){//文件夹
- if( !is_dir ($targetFile)) $this->mkdirs($targetFile,0775);
- }elseif(is_file($file)){//文件
- $folderName = dirname($targetFile);
- if( !is_dir ($folderName)) $this->mkdirs($folderName,0775);
- copy($this->sourcePath.'/'.$file,$targetFile);
- }elseif(!file_exists($file)){//不存在的文件夹
- $this->deleteFile[] = $file;
- }
- }
- }
- /**
- * 创建目录
- */
- private function mkdirs($dir, $mode = 0775){
- if (is_dir($dir) || @mkdir($dir, $mode)){
- return true;
- }
- if (!$this->mkdirs(dirname($dir), $mode)){
- return false;
- }
- return @mkdir($dir, $mode);
- }
- }
jenkins+php+svn快速部署测试环境开发环境快速部署的更多相关文章
- 【Yeoman】热部署web前端开发环境
本文来自 “简时空”:<[Yeoman]热部署web前端开发环境>(自动同步导入到博客园) 1.序言 记得去年的暑假看RequireJS的时候,曾少不更事般地惊为前端利器,写了<Sp ...
- APP手工测试01-app专项测试要点-测试、开发环境-敏捷开发
APP专项测试要点 兼容性测试 安装,卸载,升级 交叉事件 PUSH消息推送测试 性能测试 其他类型 兼容性测试 手机型号 系统版本 安卓 (版本4.4开始兼容) IOS(版本9.x开始兼容) 屏幕尺 ...
- 快速搭建 Node.js 开发环境以及加速 npm
如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...
- 【转】使用nvm快速搭建 Node.js 开发环境
原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...
- 使用 docker 部署常用的开发环境
使用 docker 部署常用的开发环境 Intro 使用 docker,很多环境可以借助 docker 去部署,没必要所有的环境都在本地安装,十分方便. 前段时间电脑之前返厂修了,回来之后所有的软件都 ...
- 使用vagrant一键部署本地php开发环境(二)制作自己的vagrant box
在上篇的基础上 ,我们已经安装好了virtualbox和vagrant,没有安装的话,参照上篇 使用vagrant一键部署本地php开发环境(一) 1.从网易镜像或阿里等等镜像下载Centos7 ht ...
- 腾讯云快速完成python3.6开发环境搭建与django应用部署
[本文出自天外归云的博客园] 部署python3.6.5 腾讯云服务器安装python3竟然要3个多小时!而且一度速度为0…… 于是网查据说是腾讯云服务器连python官网缓慢导致的,所以想找个国内的 ...
- 使用 Laragon 在 Windows 中快速搭建 Laravel 本地开发环境 (转)
laravel学院 简介 对于那些使用 Windows 操作系统的同学来说,Homestead 和 LaraDock 虽说支持 Windows 系统,但是对初学者来说,安装配置起来还是有一定复杂度的, ...
- 在Windows 10上部署Apache PredictionIO开发环境
Windows在初研究人员的探索下,研究出了一套更为精简的环境配置,极大的缩短了开发时间与效率,在此总结以供后来者参阅. 1.部署环境的配置 Windows10 64 home IntelliJ ID ...
随机推荐
- phpexcel一个bug
大家好! 我想我发现了这个bug. 如果我从文件中图像删除,它加载正常. 如果有图像时候,何时$ objPHPExcel = PHPExcel_IOFactory :: load($ file);我得 ...
- JDK 动态代理的简单理解
动态代理 代理模式是 Java 中的常用设计模式,代理类通过调用被代理类的相关方法,提供预处理.过滤.事后处理等服务,动态代理及通过反射机制动态实现代理机制.JDK 中的 java.lang.refl ...
- j.u.c系列(02)---线程池ThreadPoolExecutor---tomcat实现策略
写在前面 本文是以同tomcat 7.0.57. jdk版本1.7.0_80为例. 线程池在tomcat中的创建实现为: public abstract class AbstractEndpoint& ...
- setInterval 和 setTimeout
setInterval 和 settimeout的区别 setinterval 1.会造成某些间隔会被跳过2.多个定时器之间的执行代码事假间隔比预期的小 而且 当定时器代码添加到任务队列里面没有被执行 ...
- 微信小程序如何玩转分销
截止目前,微信月活跃用户已经高达8.89亿,微信这个庞大的互联网巨头下一个目标是什么? 打造属于自己的“AppStore”.小程序正是完成这个微信生态体系的一块完美拼板, 张小龙预言:未来2年内,小程 ...
- ASP.NET 2.0
http://www.cnblogs.com/linezero/p/nightlynetcore2.html
- 如何用visio(word)绘制图片表格
1.用visio是插入excel表格,但是不能差如公示了,修改的话也是进入了excel修改. 2.在word里修改即可,word表格可以插入公式,然后阿银玉兰或者转给pdf截图就好
- “CMD /C”的特殊应用
命令行下似乎有数不尽的秘密,稍微挖掘一下就会有意外惊喜.今天跟各位朋友分享一下“CMD /C”的特殊应用,希望能对大家有所帮助.在cmd的帮助文件里,它是这样介绍/c参数的: “CMD [/C str ...
- [Winform]Cefsharp重写alert与confirm弹窗
摘要 在使用winform内嵌cefsharp浏览本地页面的时候,如果出现alert弹窗,会在标题栏显示页面所在目录.所以想起来重写alert的样式,通过winform的MessageBox进行提示. ...
- AutoMapper在MVC中的运用04-string映射各种类型、一个属性映射多个属性等
本篇AutoMapper使用场景: ※ 类型转换,源string类型分别转换成int, DateTime,Type ※ 源和目标都包含复杂类型属性 ※ 把源中的一个属性映射到目标中的多个属性 类型转换 ...