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打包脚本

  1. cd /root/.jenkins/workspace
  2. #find need update file
  3. find  project_name    -mmin -1 | grep -v ".svn"  > svn.log #jenkins构建后查找1分钟内有修改的文件
  4. #clear history
  5. rm -rf pakage/*
  6. #cope auto file
  7. /usr/local/php/bin/php makeAutoPk.php #将有修改文件打包,打包脚本下面有参考
  8. #zip auto file to target path
  9. cd pakage/<span style="font-family: Arial, Helvetica, sans-serif;">project_name</span><span style="font-family: Arial, Helvetica, sans-serif;">/</span>
  10. datestr=$(date +%Y%m%d%H%M)
  11. targetpath="/home/hn/update_code/"#更新放置的目录
  12. mkdir ${targetpath}${datestr}
  13. filename="/auto.zip"
  14. zip -r ${targetpath}${datestr}${filename} .
  15. #cp all file
  16. cd ..
  17. cp -a ../shop_test all
  18. #delete nouse file
  19. find all -name .svn|xargs rm -rf#删除svn更新文件
  20. cd all
  21. #删除不需要打包的文件
  22. rm -rf temp
  23. rm -rf images
  24. #zip all file to target path
  25. zip -r ${targetpath}${datestr}/all.zip .
  26. #update解压增量包覆盖
  27. unzip -o ${targetpath}${datestr}/auto.zip -d  test_path#test_path为测试环境代码目录
  1. </pre>makeAutoPk,php脚本<p></p><p></p><pre name="code" class="php"><?php
  2. /**
  3. * 制作增量包
  4. */
  5. $fileClass = new FileStatic();
  6. $fileClass->makePackege();
  7. class FileStatic
  8. {
  9. public $targetPath;//目标路径
  10. public $fileArr;//需要打包文件日志
  11. public $deleteFile;//删除的文件
  12. public $projectName;//项目名称
  13. public $sourcePath;//代码源
  14. public function __construct($projectName = 'shop'){
  15. $this->projectName = $projectName;
  16. $log = file_get_contents('svn.log');
  17. $this->fileArr = explode("\n", trim($log));
  18. $this->deleteFile = array();
  19. $this->targetPath = __DIR__.'/pakage/'.date('Ymdhms',time());
  20. $this->sourcePath = __DIR__;
  21. if( !is_dir ($this->targetPath)) $this->mkdirs($this->targetPath,0775);
  22. }
  23. //打包
  24. public function makePackege(){
  25. if(empty($this->fileArr)){
  26. echo "no file to make";
  27. exit;
  28. }
  29. foreach($this->fileArr as $file){
  30. $targetFile = $this->targetPath.'/'.$file;
  31. if(is_dir($file)){//文件夹
  32. if( !is_dir ($targetFile)) $this->mkdirs($targetFile,0775);
  33. }elseif(is_file($file)){//文件
  34. $folderName = dirname($targetFile);
  35. if( !is_dir ($folderName)) $this->mkdirs($folderName,0775);
  36. copy($this->sourcePath.'/'.$file,$targetFile);
  37. }elseif(!file_exists($file)){//不存在的文件夹
  38. $this->deleteFile[] = $file;
  39. }
  40. }
  41. }
  42. /**
  43. * 创建目录
  44. */
  45. private function mkdirs($dir, $mode = 0775){
  46. if (is_dir($dir) || @mkdir($dir, $mode)){
  47. return true;
  48. }
  49. if (!$this->mkdirs(dirname($dir), $mode)){
  50. return false;
  51. }
  52. return @mkdir($dir, $mode);
  53. }
  54. }

jenkins+php+svn快速部署测试环境开发环境快速部署的更多相关文章

  1. 【Yeoman】热部署web前端开发环境

    本文来自 “简时空”:<[Yeoman]热部署web前端开发环境>(自动同步导入到博客园) 1.序言 记得去年的暑假看RequireJS的时候,曾少不更事般地惊为前端利器,写了<Sp ...

  2. APP手工测试01-app专项测试要点-测试、开发环境-敏捷开发

    APP专项测试要点 兼容性测试 安装,卸载,升级 交叉事件 PUSH消息推送测试 性能测试 其他类型 兼容性测试 手机型号 系统版本 安卓 (版本4.4开始兼容) IOS(版本9.x开始兼容) 屏幕尺 ...

  3. 快速搭建 Node.js 开发环境以及加速 npm

    如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...

  4. 【转】使用nvm快速搭建 Node.js 开发环境

    原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...

  5. 使用 docker 部署常用的开发环境

    使用 docker 部署常用的开发环境 Intro 使用 docker,很多环境可以借助 docker 去部署,没必要所有的环境都在本地安装,十分方便. 前段时间电脑之前返厂修了,回来之后所有的软件都 ...

  6. 使用vagrant一键部署本地php开发环境(二)制作自己的vagrant box

    在上篇的基础上 ,我们已经安装好了virtualbox和vagrant,没有安装的话,参照上篇 使用vagrant一键部署本地php开发环境(一) 1.从网易镜像或阿里等等镜像下载Centos7 ht ...

  7. 腾讯云快速完成python3.6开发环境搭建与django应用部署

    [本文出自天外归云的博客园] 部署python3.6.5 腾讯云服务器安装python3竟然要3个多小时!而且一度速度为0…… 于是网查据说是腾讯云服务器连python官网缓慢导致的,所以想找个国内的 ...

  8. 使用 Laragon 在 Windows 中快速搭建 Laravel 本地开发环境 (转)

    laravel学院 简介 对于那些使用 Windows 操作系统的同学来说,Homestead 和 LaraDock 虽说支持 Windows 系统,但是对初学者来说,安装配置起来还是有一定复杂度的, ...

  9. 在Windows 10上部署Apache PredictionIO开发环境

    Windows在初研究人员的探索下,研究出了一套更为精简的环境配置,极大的缩短了开发时间与效率,在此总结以供后来者参阅. 1.部署环境的配置 Windows10 64 home IntelliJ ID ...

随机推荐

  1. 数据库事务的属性-ACID和隔离级别

    1.数据库事务的属性-ACID(四个英文单词的首写字母): 1)原子性(Atomicity) 所谓原子性就是将一组操作作为一个操作单元,是原子操作,即要么全部执行,要么全部不执行. 2)一致性(Con ...

  2. 群晖NAS简介(转)

    Synology 群晖科技(Synology )创立于 2000 年,自始便专注于打造高效能.可靠.功能丰富且绿色环保的 NAS 服务器,是全球少数几家以单纯的提供网络存储解决方案获得世界认同的华人企 ...

  3. An Isolated DAC Using PWM Output

    An Isolated DAC Using PWM Output Arduino‘s (ATmega328P) PWM outputs via analogWrite can be convenien ...

  4. JTAG Simplified

    JTAG Simplified So the other day, I explored the JTAG bus interface which is frequently found in CPL ...

  5. MySQL客户端输出窗口显示中文乱码问题解决办法

    最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示:

  6. 在ASP.NET Web API中使用OData的Action和Function

    本篇体验OData的Action和Function功能.上下文信息参考"ASP.NET Web API基于OData的增删改查,以及处理实体间关系".在本文之前,我存在的疑惑包括: ...

  7. 咏南Mormot中间件接口

    咏南Mormot中间件接口 只使用了MORMOT的HTTPS.SYS作为通讯,数据引擎使用FIREDAC,数据序列/还原是自行封装. 客户端支持FDMemeTable和ClientDataSet数据集 ...

  8. C#编程(六十八)----------LINQ小结

    LINQ小结 一.LINQ是什么 LINQ也就是Language Interrated Query的缩写,怎么一个缩写法我也不明白,即语言集成查询,是微软在.NET3.5中提出的一项新技术,LINQ主 ...

  9. POJ1580 水题,积累!

    [题意简述]:题意非常easy.就是将这两个字符串比較,移动着比較.求出最多的同样的元素个数.然后用题目中所给的公式,写出结果. [分析]:本题要注意的就是for循环的形式.注意积累就可以. 详见代码 ...

  10. 探讨一下Java单例设计模式

    所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在.就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等. 1. ...