基于jenkins结合git实现web程序的多服务器批量发布

开发 前端
由于前一段时间发布了几篇关于web程序基于jenkins部署发布的博文,由于是基于svn作为版本库讲解的。这段时间有一些朋友问我git作为版本库的与jenkins结合实现像选择svn tag指定程序版本的实现发布程序的解决方案。

由于前一段时间发布了几篇关于web程序基于jenkins部署发布的博文,由于是基于svn作为版本库讲解的。这段时间有一些朋友问我git作为版本库的与jenkins结合实现像选择svn tag指定程序版本的实现发布程序的解决方案。

有与时间原因,本篇不在过多赘述细节,读者可以动手揣摩!

直接先给大家看一下我目前正在使用的部署到生产环境下的jenkins截图!

wKioL1NgVASBtIdkAAGYeWCLSdQ843.jpg

下面给出配置截图:

经过测试git parameter plugin不能满足我们的需求,所以我们只能自己在jenkins中创建tag list。添加写一下如图步骤:

wKioL1NgVyrhZCikAACHdmdSqhM983.jpg

自己写一个可扩展下拉菜单,通过程序生成指定git版本下的程序的tags列表

wKioL1NgVKOxc20VAAJHXAdAIHw875.jpg

下面是程序的源码管理,在git repositories url 中添加我们程序的git地址

下图两种方式都行:

wKiom1NgWU7T8SCVAABE4RpLbjc762.jpg

注意我们这个时候选择的是master版本,意味着我的程序都是稳定版本(在开发过程中使用git-flow流程来控制版本开发流程)。

wKiom1NgWFGyZoTzAAEIcXxWVVo509.jpg

签出到指定的tag:这一步很重要:

wKioL1NgVq7RkA9RAAGCguY-hds446.jpg

到此我们已经实现了jenkins与git的集成结合!这也是前段时间发布的部署系列svn与git的不同之处!

至于wKioL1NgW4WRCgumAAAf4_gp53c882.jpg部分没有变化!

jenkins下git的插件安装网上很多这里不再介绍!

需要注意一点可以根据自己的需求开发出git tag list的功能!

下面给出我按照自己的需求实现的一个:

先给出程序结构图:

wKiom1NgXwvhDQwAAACeRcFYRqU135.jpg

git.php

  1. 2345678910111213141516171819202122232425262728293031323334353637383940 <?php   
  2. $giturl=$_REQUEST["giturl"];   
  3. $arr=explode("/",$giturl);   
  4. $names=$arr[count($arr)-1];   
  5. $namearr=explode(".",$names);   
  6. $name=$namearr[0];   
  7. $rebuild=true;   
  8. $tagpath="/var/www/tags/list/$name";   
  9. if(file_exists($tagpath))   
  10. {   
  11.     $content = file_get_contents($tagpath);   
  12.     $tags=explode("\n",$content);   
  13.     //unlink($tagpath);   
  14.     unset($tags[count($tags)-1]);   
  15.     if(count($tags)>0)   
  16.     {   
  17.         $tags=array_reverse($tags);   
  18.         echo "tags=".implode(",",$tags);   
  19.     }   
  20.     else{   
  21.         echo "tagsno tags";   
  22.     }   
  23.     $ctime=filectime($tagpath);   
  24.     $now=time();   
  25.     $ti=$now-$ctime;   
  26.     if($ti<60)   
  27.     {   
  28.         $rebuild=false;   
  29.     }   
  30. }   
  31. else  
  32. {   
  33.     echo "tagsIs loading tags ; please try again later";   
  34. }   
  35. if($rebuild)   
  36. {   
  37.     $cmd="echo $name $giturl > /var/www/tags/info/$name";   
  38.     exec($cmd,$info,$rebt);   
  39. }   
  40. ?>  

inotify.sh

  1. #!/bin/bash   
  2. #create by lhb   
  3. #date 2014-02-08   
  4. #monitor file change   
  5. workplace=/var/www/tags  
  6. src=$workplace/info/  
  7. lists=$workplace/list  
  8. /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' -e close_write $src \   
  9.    | while read file  
  10.     do  
  11.    fn=`echo $file |awk '{print $3}'`   
  12.    arr=(`cat $fn |awk '{print $1,$2}'`)   
  13.    pro_name=${arr[0]}   
  14.    pro_url=${arr[1]}   
  15.    #echo $pro_name   
  16.    #echo $pro_url   
  17.    /bin/bash $workplace/get_tags.sh $pro_name $pro_url > $lists/$pro_name   
  18.    chown www-data:www-data $lists/$pro_name   
  19.    echo $?   
  20.  done 

get_tags.sh

  1. #!/bin/bash   
  2. #create by lhb   
  3. #date 2014-02-08   
  4. #get git code tag list   
  5. codepath=/tmp/$1   
  6. [ -d "$codepath" ] || {   
  7.   cd /tmp/  
  8.   /usr/bin/git clone $2 &> /dev/null  
  9. }   
  10. cd $codepath   
  11. /usr/bin/git pull &> /dev/null  
  12. /usr/bin/git tag   
  13. rm -rf $codepath 

执行shell脚本:

wKiom1NgZKOBqGe8AAEKX3lor7k347.jpg

如有不明白的地方,可以参考我的部署系列文章或线上交流!

博客地址:http://birdinroom.blog.51cto.com/7740375/1404930

责任编辑:林师授 来源: 51cto博客
相关推荐

2021-08-05 17:40:05

XpanesLinux服务器

2017-11-10 08:58:49

Web服务器应用程序

2019-07-21 19:40:25

服务器开发 架构

2009-06-11 09:20:15

GlassFish是什OSGi

2019-05-14 09:39:07

Web服务器Web容器应用程序服务器

2011-11-04 16:50:33

UbuntuARM服务器

2011-09-08 10:42:38

Web服务器Nginx

2012-07-24 09:32:04

2011-02-23 15:06:00

WebCherokee

2009-03-24 09:44:59

2020-01-18 18:41:13

GitGit服务器开源

2012-02-24 09:22:30

Web服务器Apache 2.4

2010-11-19 12:53:53

梭子鱼负载均衡

2011-11-22 21:26:59

pfSense配置Web服务器负载均衡

2011-08-31 16:37:51

Nginx

2009-07-09 10:25:05

Servlet的Web

2017-12-29 09:47:11

Web服务器万维网

2011-07-07 15:43:51

服务器安装

2010-02-23 16:08:15

2010-07-02 10:14:36

点赞
收藏

51CTO技术栈公众号