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 ...
随机推荐
- 一次MySQL异常排查:Query execution was interrupted
异常日志: 查询被中断了,先是在Google上查,又是再百度上查,基本上都是说程序超时设置setQueryTimeout的问题,就是说查询时间超过了设置的最大查询时间,导致查询被中断.我也没办法断定是 ...
- IntraWeb XIV 类型速查表
tkClass ================== IWUserSessionBase.TIWUserSessionBase < TDataModule < TComponent < ...
- CentOS下GPT分区(转)
GPT格式的分区理论上是支持18EB,而MBR只支持2TB,以后大硬盘GPT是趋势.fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区就必须使用parted,parted向后兼容MBR. ...
- .NET开源了,Visual Studio开始支持 Android 和 iOS 编程并自带Android模拟器
北京时间今天凌晨的大会上,多少程序员的假想成为现实..NET 开源,集成 Clang 和 LLVM 并且自带 Android 模拟器,这意味着 Visual Studio 这个当下最好没有之一的 ID ...
- MCU PWM DAC OP Voltage Output
- LPC-Link-II Rev C JTAG
- Programming 2D Games 读书笔记(第三章)
示例一:DirectX Window Graphics类用于初始化Direct 3D 主流程: 仅需要粗体部分 try{ // Create Graphics object graphics = ...
- Snmp学习总结系列——开篇
进入公司以来,一直参与到公司的产品研发工作当中去,在产品研发中有一个监控远程服务器CPU使用率,内存使用情况,硬盘的需求,技术总监提出了使用Snmp协议作为远程监控的技术解决方案,头一次听说Snmp这 ...
- AngularJS中Directive间交互实现合成
假设需要烹饪一道菜肴,有3种原料,可以同时使用所有的3种原料,可以使用其中2种,也可以使用其中1种. 如果以Directive的写法,大致是:<bread material1 material2 ...
- maven报错
今天执行mvn test的时候提示: 错误:读取 /home/subaochen/.m2/repository/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.ja ...