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 ...
随机推荐
- C/C++的64为长整型数的表示
在C/C++中,64为整型一直是一种没有确定规范的数据类型.现今主流的编译器中,对64为整型的支持也是标准不一,形态各异.一般来说,64位整型的定义方式有long long和__int64两种(VC还 ...
- JVM启动流程
JVM启动流程 (1)在java中jvm是通过java或javaw命令启动的,后面跟加载的类名. (2)jvm在启动的时候先根据[当前路径和系统版本寻找jvm的配置文件jvm.cfg]装载配置. (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 ...
- centos 7 安装 rvm 超时
关于 rvm 建议没有变成基础的朋友不要选择这种方式安装 不然很有可能到 对ruby很感兴趣想学到放弃的 因为ruby实在是太麻烦 太麻烦 你会遇到各种各样的问题 我之前安装过一次rvm ...
- Android四种Activity的加载模式
建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型 http://www.cnblogs.com/ghj1976/archive/2011/04 ...
- [原创]互联网公司App测试流程
[原创]互联网公司App测试流程 一款App的发布上线,离不开充分的测试工作,App测试与pc软件测试二者大体流程相同,但也有所区别,其中由于App测试有其固有的特性,所以在测试时流程会有不同,具体我 ...
- 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 ...
- 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 ...
- securecrt中文乱码以及ubuntu设置locale
参考文献 http://wiki.ubuntu.org.cn/%E4%BF%AE%E6%94%B9locale http://www.bootf.com/547.html 强烈建议 ubuntu下面不 ...
- Pylons安装苦逼之路
本文介绍一下我在安装pylons的过程中出现的一些错误和解决办法,当然这些都是不完全版. 1.在Serve1(服务器Python版本2.4.3)上面装环境的时候总是出现with_statement有关 ...