基于jenkins结合git实现web程序的多服务器批量发布
为什么80%的码农都做不了架构师?>>>
由于前一段时间发布了几篇关于web程序基于jenkins部署发布的博文,由于是基于svn作为版本库讲解的。这段时间有一些朋友问我git作为版本库的与jenkins结合实现像选择svn tag指定程序版本的实现发布程序的解决方案。
有与时间原因,本篇不在过多赘述细节,读者可以动手揣摩!
直接先给大家看一下我目前正在使用的部署到生产环境下的jenkins截图!
下面给出配置截图:
经过测试git parameter plugin不能满足我们的需求,所以我们只能自己在jenkins中创建tag list。添加写一下如图步骤:
自己写一个可扩展下拉菜单,通过程序生成指定git版本下的程序的tags列表
下面是程序的源码管理,在git repositories url 中添加我们程序的git地址
下图两种方式都行:
注意我们这个时候选择的是master版本,意味着我的程序都是稳定版本(在开发过程中使用git-flow流程来控制版本开发流程)。
签出到指定的tag:这一步很重要:
到此我们已经实现了jenkins与git的集成结合!这也是前段时间发布的部署系列svn与git的不同之处!
至于部分没有变化!
jenkins下git的插件安装网上很多这里不再介绍!
需要注意一点可以根据自己的需求开发出git tag list的功能!
下面给出我按照自己的需求实现的一个:
先给出程序结构图:
git.php
<?php
$giturl=$_REQUEST["giturl"];
$arr=explode("/",$giturl);
$names=$arr[count($arr)-1];
$namearr=explode(".",$names);
$name=$namearr[0];
$rebuild=true;
$tagpath="/var/www/tags/list/$name";
if(file_exists($tagpath))
{$content = file_get_contents($tagpath);$tags=explode("\n",$content);//unlink($tagpath);unset($tags[count($tags)-1]);if(count($tags)>0){$tags=array_reverse($tags);echo "tags=".implode(",",$tags);}else{echo "tags= no tags";}$ctime=filectime($tagpath);$now=time();$ti=$now-$ctime;if($ti<60){$rebuild=false;}
}
else
{echo "tags= Is loading tags ; please try again later";
}
if($rebuild)
{$cmd="echo $name $giturl > /var/www/tags/info/$name";exec($cmd,$info,$rebt);
}
?>
inotify.sh
#!/bin/bash
#create by lhb
#date 2014-02-08
#monitor file change
workplace=/var/www/tags
src=$workplace/info/
lists=$workplace/list
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' -e close_write $src \| while read filedofn=`echo $file |awk '{print $3}'`arr=(`cat $fn |awk '{print $1,$2}'`)pro_name=${arr[0]}pro_url=${arr[1]}#echo $pro_name#echo $pro_url/bin/bash $workplace/get_tags.sh $pro_name $pro_url > $lists/$pro_namechown www-data:www-data $lists/$pro_nameecho $?done
get_tags.sh
#!/bin/bash
#create by lhb
#date 2014-02-08
#get git code tag list
codepath=/tmp/$1
[ -d "$codepath" ] || {cd /tmp//usr/bin/git clone $2 &> /dev/null
}
cd $codepath
/usr/bin/git pull &> /dev/null
/usr/bin/git tag
rm -rf $codepath
执行shell脚本:
如有不明白的地方,可以参考我的部署系列文章或线上交流!
本文出自 “宅鸟乐园” 博客,请务必保留此出处http://birdinroom.blog.51cto.com/7740375/1404930
转载于:https://my.oschina.net/boltwu/blog/407297
基于jenkins结合git实现web程序的多服务器批量发布相关推荐
- 基于Flask框架的Python web程序的开发实战 二 项目组织结构
看到第七章-大型程序的结构,备受打击,搞不清工厂函数.蓝本.单元测试,不理解这些对象/变量怎么传递的,感觉好乱,虽然按照源码都照抄了,还是不理解.... 缓缓先.... 本来网上的Flask的教程就比 ...
- Jenkins配置git通过http下载资源到节点服务器上
配置http下载出现,stderr: remote: HTTP Basic: Access denied 1.设置节点 [系统管理]-> [管理结点]-> [新建结点] 配置从节点Tool ...
- 基于Jenkins和k8s构建企业级DevOps容器云平台
1.1 什么是DevOps? DevOps中的Dev是Devlopment(开发),Ops是Operation(运维),用一句话来说 DevOps 就是打通开发运维的壁垒,实现开发运维一体化.DevO ...
- web程序在线更新实现
说说以前的一个web程序在线更新实现,给没有实现过的人们提供一点思路,这是我一个项目的实现,也许方式不是很好,但是它实现了基本的需求. 公司的开发了一个web产品,这个web产品部署 ...
- 基于.Net Core开发现代化Web应用程序系列课程和文章
这个系列课程是Anduin2017在B站上传的: 基于.Net Core开发现代化Web应用程序系列课程第1课之:课程简介 基于.Net Core开发现代化Web应用程序系列课程第2课之:.Net平台 ...
- spring基于注释的配置_基于注释的Spring MVC Web应用程序入门
spring基于注释的配置 这是使Maven启动Spring 3 MVC项目的最小方法. 首先创建spring-web-annotation/pom.xml文件,并包含Spring依赖项: <? ...
- 基于注释的Spring MVC Web应用程序入门
这是使Maven启动Spring 3 MVC项目的最小方法. 首先创建spring-web-annotation/pom.xml文件,并包含Spring依赖项: <?xml version=&q ...
- 基于目标追踪算法、web、gui开发的程序,可实时监控画面、检测目标、监听电脑配置
基于目标追踪算法.web.gui开发的程序,可实时监控画面.检测目标.监听电脑配置,此项目由软件+网页设计而成,请看项目展示.
- 基于Jenkins + Git的PHP项目编译脚本
本文针对的是了解或已经在使用Jenkins和Git的开发者或团队. 本团队使用了Jenkins作为持续集成平台,Git作为版本管理工具,而本人负责的项目是PHP项目,所谓发布项目就是复制文件. 通常有 ...
最新文章
- “数学不好,干啥都不行!”骨灰级程序员:其实你们都是瞎努力!
- 关于libStagefright系列漏洞分析
- 亿级流量压力来袭,你的网站会被击垮吗?(上篇)
- 谈谈“个人电子信息”的保护
- Eclipse IDE for Enterprise Java Developers和JDK8与apache-tomcat-8下载地址
- 当下python的主流版本是_Python 版本调查发现 3.x 增长 8.2%,2.7 依然是主流 (你在用哪版)...
- 一张图慢慢转换成下一张图_如何把一张照片变成炫酷的动图?
- 可重用性,可维护性,可读性,可测试性,可用性,健壮性
- WinSnap 截图工具绿色中文特别版
- 公司让微信加人有没有软件_没有人想要使用软件
- 使用计算机编辑文档的同时 还可播放mp3,win7系统电脑怎么使用Windows Movie Maker剪辑音频文件...
- 终于把Edison板子上线了
- 不得不珍藏的Chrome插件推荐
- 软件设计七大原则实战(二)-开闭原则
- Oracle EBS 名词解释
- 测试部门KPI考核指标(绩效考核)
- 视频采集工具 youtube-dl 接口介绍
- springmvc 接收前台传入的文件
- Ubuntu16.04搭建OpenGrok环境
- Python中的os.mkdir()函数