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. 【μ'sic forever♪♪♪】μ's Final Love Live周年纪念

    一.正文 “切なくて时をまきもどしてみるかい?No no no……いまが最高!” 转眼就是一周年了,其实fl后入坑的我在这里怀念显得有些无病呻吟.但我也有想说的话,说给重要的人听. “ほのかな予感から ...

  2. CentOS 7下使用chkconfig添加的服务无法使用/etc/profile里面的环境变量

    经过分析/etc/profile为入口的,基本是登录后执行的变量,而使用chkconfig添加的服务多变以守护经常运行,没有登录. CentOS 7下使用chkconfig添加的服务无法使用/etc/ ...

  3. GitLab目录迁移方法

    在生产环境上迁移GitLab的目录需要注意一下几点: 1.目录的权限必须为755或者775 2.目录的用户和用户组必须为git:git 3.如果在深一级的目录下,那么git用户必须添加到上一级目录的账 ...

  4. Oracle数据库日期范围查询的两种实现方式

    参考文档:http://database.51cto.com/art/201108/288058.htm Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通 ...

  5. LINUX 内核学习博客

    http://www.cnblogs.com/yjf512/category/385367.html

  6. Android 应用开发特色

    Android 系统到底提供了哪些东西,供我们可以开发出优秀的应用程序.1. 四大组件Android 系统四大组件分别是活动(Activity).服务(Service).广播接收器(Broadcast ...

  7. IOS 内存斗争小史之 对象、指针、内存的基本理解

    1.指针和对象,都是内存块.一个大,一个小.一个在栈中,一个在堆中. 2.iOS中,我们可以生命一个指针,也可以通过alloc获取一块内存. 3.我们可以直接消灭掉一个指针,将其置为nil.但是我们没 ...

  8. 某个 页面覆盖了 UITabBar 的tabItem的解决办法

    将这个页面的背景色设置为无色: [self.view setBackgroundColor:[UIColor clearColor]]; 或者 self.view.frame = CGRectMake ...

  9. ASP.NET MVC:some benefits of asp.net mvc

    Full control over HTML Full control over URLs Better separation of concerns Extensibility Testabilit ...

  10. EntityFramework:状态变化与方法的关系(朋友的学习笔记)

    一.约定OnModelCreating 有一些限制需要注意,例如: 1.表名不支持使用标签进行标注 2.最小长度在 OnModelCreating 中不支持 3.正则表达式在 OnModelCreat ...