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. nodejs备忘总结(一) -- node和express安装与配置,新建简单项目(附安装配置过程中遇到问题的解决方法)

    安装node 本文以安装node_v8.9.0为例(win10环境),下载node-v8.9.0-x64.msi插件 下载后,安装,安装目录默认为C:\Program Files\nodejs 配置环 ...

  2. UVALive 6913 I Want That Cake 博弈dp

    I Want That Cake 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemi ...

  3. 使用POI操作PPT文档(插入文本、图片)转

    1)如果是创建新的PPT文档,直接使用SlideShow和Slide类就可以,其中SlideShow表示PPT文档,Slide表示某一张幻灯片如下代码创建空的PPT文档: SlideShow ppt ...

  4. haskell学习资料

    Haskell基础语法 Real World Haskell 中文版 Haskell趣学指南

  5. KVM磁盘镜像qcow2、raw、vmdk等格式区别(转)

    raw(default) the raw format is a plain binary image of the disc image, and is very portable. On file ...

  6. HDU 4816 Bathysphere (2013长春现场赛D题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4816 2013长春区域赛的D题. 很简单的几何题,就是给了一条折线. 然后一个矩形窗去截取一部分,求最 ...

  7. CF330 C. Purification 认真想后就成水题了

    C. Purification time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  8. TCP选项之SO_RCVBUF和SO_SNDBUF

    每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态.接收缓冲区把数据缓存入内 ...

  9. Entity framework 增加默认执行时间

    public partial class ProductionSupportEntities : DbContext { public ProductionSupportEntities() : ba ...

  10. IOS-plist文件DES加密

    转载请说明出处:http://www.cnblogs.com/gexun/p/3705207.html,谢谢. 这些天一直在做一个知识问答的项目,因为初赛的项目题目比较少,所以题目就写在本地的plis ...