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 ...
随机推荐
- 笔记本光驱位置装SSD固态硬盘(亲自试验)
我的笔记本买的早了,2010年的联想Z460,速度有点慢,本来想换台电脑,想想还是算了,没有太大必要.固态硬盘便宜了,于是在原来的光驱位置装了一个256G的SSD固态硬盘,现在的性能能达到刚买来时的1 ...
- BZOJ2217 : [Poi2011]Lollipop
若能得到一个和为t的区间,那么至少去掉两端点中任意一个后必定能得到和为t-2的区间. 所以只需要分别找到和最大的和为奇数和偶数的区间,然后$O(n)$完成构造即可. #include<cstdi ...
- 【转载】CMenu自绘---钩子---去除边框
使用默认的CMenu菜单类或者继承CMenu实现的菜单扩展类,在显示的时候最外层都会有边框出现,或者说是具有3D外观(菜单阴影不算),当改变菜单背景色或者需要加个边框线时就会看上去很不美观.看过很多菜 ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem D. Distance 迪杰斯特拉
Problem D. Distance 题目连接: http://codeforces.com/gym/100714 Description In a large city a cellular ne ...
- Ulipad安装、配置使用教程(附Ulipad下载)
一.安装Ulipad 因为ulipad编辑器使用的是wxpython编写的gui,所以我们需要第三方库wxpython的支持,这里我们先讲一下Ulipad在Windows系统环境下的安装: 1. 确实 ...
- UNICODE 区域对照表
0000-007F Basic Latin 基本拉丁字母 0080-00FF Latin-1 Supplement 拉丁字母補充-1 0100-017F Latin Extended-A 拉丁字母擴充 ...
- [Go] 子类 调用 父类 的 属性、方法
package main import ( "fmt" ) type A struct { Text string Name string } func (a *A) Say() ...
- linux 内核crash 命令
https://www.dedoimedo.com/computers/crash-book.html#download
- .NET轻量级ORM组件Dapper葵花宝典
一.摘要 为什么取名叫<葵花宝典>? 从行走江湖的世界角度来讲您可以理解为一本"武功秘籍",站在我们IT编程的世界角度应该叫"开发宝典". 如果您在 ...
- iOS 内存斗争小史之 NavigationController
1.怎样写一个不泄漏的NavigationController页面跳转程序? 非arc模式下,假设有A.B两个viewController,从A推到B,怎样写内存才能不泄漏? A.m -(IBActi ...