为什么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程序的多服务器批量发布相关推荐

  1. 基于Flask框架的Python web程序的开发实战 二 项目组织结构

    看到第七章-大型程序的结构,备受打击,搞不清工厂函数.蓝本.单元测试,不理解这些对象/变量怎么传递的,感觉好乱,虽然按照源码都照抄了,还是不理解.... 缓缓先.... 本来网上的Flask的教程就比 ...

  2. Jenkins配置git通过http下载资源到节点服务器上

    配置http下载出现,stderr: remote: HTTP Basic: Access denied 1.设置节点 [系统管理]-> [管理结点]-> [新建结点] 配置从节点Tool ...

  3. 基于Jenkins和k8s构建企业级DevOps容器云平台

    1.1 什么是DevOps? DevOps中的Dev是Devlopment(开发),Ops是Operation(运维),用一句话来说 DevOps 就是打通开发运维的壁垒,实现开发运维一体化.DevO ...

  4. web程序在线更新实现

    说说以前的一个web程序在线更新实现,给没有实现过的人们提供一点思路,这是我一个项目的实现,也许方式不是很好,但是它实现了基本的需求.          公司的开发了一个web产品,这个web产品部署 ...

  5. 基于.Net Core开发现代化Web应用程序系列课程和文章

    这个系列课程是Anduin2017在B站上传的: 基于.Net Core开发现代化Web应用程序系列课程第1课之:课程简介 基于.Net Core开发现代化Web应用程序系列课程第2课之:.Net平台 ...

  6. spring基于注释的配置_基于注释的Spring MVC Web应用程序入门

    spring基于注释的配置 这是使Maven启动Spring 3 MVC项目的最小方法. 首先创建spring-web-annotation/pom.xml文件,并包含Spring依赖项: <? ...

  7. 基于注释的Spring MVC Web应用程序入门

    这是使Maven启动Spring 3 MVC项目的最小方法. 首先创建spring-web-annotation/pom.xml文件,并包含Spring依赖项: <?xml version=&q ...

  8. 基于目标追踪算法、web、gui开发的程序,可实时监控画面、检测目标、监听电脑配置

    基于目标追踪算法.web.gui开发的程序,可实时监控画面.检测目标.监听电脑配置,此项目由软件+网页设计而成,请看项目展示.

  9. 基于Jenkins + Git的PHP项目编译脚本

    本文针对的是了解或已经在使用Jenkins和Git的开发者或团队. 本团队使用了Jenkins作为持续集成平台,Git作为版本管理工具,而本人负责的项目是PHP项目,所谓发布项目就是复制文件. 通常有 ...

最新文章

  1. “数学不好,干啥都不行!”骨灰级程序员:其实你们都是瞎努力!
  2. 关于libStagefright系列漏洞分析
  3. 亿级流量压力来袭,你的网站会被击垮吗?(上篇)
  4. 谈谈“个人电子信息”的保护
  5. Eclipse IDE for Enterprise Java Developers和JDK8与apache-tomcat-8下载地址
  6. 当下python的主流版本是_Python 版本调查发现 3.x 增长 8.2%,2.7 依然是主流 (你在用哪版)...
  7. 一张图慢慢转换成下一张图_如何把一张照片变成炫酷的动图?
  8. 可重用性,可维护性,可读性,可测试性,可用性,健壮性
  9. WinSnap 截图工具绿色中文特别版
  10. 公司让微信加人有没有软件_没有人想要使用软件
  11. 使用计算机编辑文档的同时 还可播放mp3,win7系统电脑怎么使用Windows Movie Maker剪辑音频文件...
  12. 终于把Edison板子上线了
  13. 不得不珍藏的Chrome插件推荐
  14. 软件设计七大原则实战(二)-开闭原则
  15. Oracle EBS 名词解释
  16. 测试部门KPI考核指标(绩效考核)
  17. 视频采集工具 youtube-dl 接口介绍
  18. springmvc 接收前台传入的文件
  19. Ubuntu16.04搭建OpenGrok环境
  20. Python中的os.mkdir()函数

热门文章

  1. 用IComparable和IComparableT接口实现两个类对象的比较大小.
  2. Java继承的概念与实现
  3. 实现多种方式对MYSQL进行备份
  4. 【NOIP2016】组合数问题
  5. 日本光伏相关企业倒闭数量上升 帝国征信调查
  6. 重走丝绸之路:海尔如何探索全球生活智慧?
  7. XML PUBLISHER的一些技巧
  8. Swift 5 发布,ABI 终于稳定了
  9. 微信小程序惩治“老赖” 河北高院“老赖地图”上线
  10. centos 安装 rabbitMq