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. C/C++的64为长整型数的表示

    在C/C++中,64为整型一直是一种没有确定规范的数据类型.现今主流的编译器中,对64为整型的支持也是标准不一,形态各异.一般来说,64位整型的定义方式有long long和__int64两种(VC还 ...

  2. JVM启动流程

    JVM启动流程 (1)在java中jvm是通过java或javaw命令启动的,后面跟加载的类名. (2)jvm在启动的时候先根据[当前路径和系统版本寻找jvm的配置文件jvm.cfg]装载配置. (3 ...

  3. Codeforces Round #396 (Div. 2) A. Mahmoud and Longest Uncommon Subsequence 水题

    A. Mahmoud and Longest Uncommon Subsequence 题目连接: http://codeforces.com/contest/766/problem/A Descri ...

  4. centos 7 安装 rvm 超时

    关于 rvm  建议没有变成基础的朋友不要选择这种方式安装   不然很有可能到 对ruby很感兴趣想学到放弃的 因为ruby实在是太麻烦 太麻烦  你会遇到各种各样的问题   我之前安装过一次rvm ...

  5. Android四种Activity的加载模式

    建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型 http://www.cnblogs.com/ghj1976/archive/2011/04 ...

  6. [原创]互联网公司App测试流程

    [原创]互联网公司App测试流程 一款App的发布上线,离不开充分的测试工作,App测试与pc软件测试二者大体流程相同,但也有所区别,其中由于App测试有其固有的特性,所以在测试时流程会有不同,具体我 ...

  7. IAR EWAR 内联汇编 Error[Og010], Error [Og005], Error [Og006]

    Error [Og005] + [Og006] when using inline assembler EW targets: 430, ARM, AVR EW component: C/C++ co ...

  8. ISO 7816-4: Annex A: Transportation of APDU messages by T=0

    http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_annex-a.aspx Annex A: Transportation ...

  9. securecrt中文乱码以及ubuntu设置locale

    参考文献 http://wiki.ubuntu.org.cn/%E4%BF%AE%E6%94%B9locale http://www.bootf.com/547.html 强烈建议 ubuntu下面不 ...

  10. Pylons安装苦逼之路

    本文介绍一下我在安装pylons的过程中出现的一些错误和解决办法,当然这些都是不完全版. 1.在Serve1(服务器Python版本2.4.3)上面装环境的时候总是出现with_statement有关 ...