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

简介:

   由于前一段时间发布了几篇关于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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/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  file
     do
    fn=` 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_name
    chown  www-data:www-data $lists/$pro_name
    echo  $?
  done

get_tags.sh


1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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脚本:

wKiom1NgZKOBqGe8AAEKX3lor7k347.jpg

本文转自birdinroom 51CTO博客,原文链接:http://blog.51cto.com/birdinroom/1404930,如需转载请自行联系原作者


相关文章
|
1月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
27 0
|
2月前
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
|
2月前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
51 3
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
164 0
|
2月前
|
jenkins 应用服务中间件 持续交付
Git + Jenkins 自动化 NGINX 发布简易实现
Git + Jenkins 自动化 NGINX 发布简易实现
|
1月前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
50 0
|
1天前
|
jenkins 持续交付 开发工具
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)(下)
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)
|
1月前
|
jenkins Java 持续交付
Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)
Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)
44 0
|
1月前
|
Windows
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
57 2
|
1月前
|
机器学习/深度学习 Python
Python基础:构建一个简单的Web服务器
Python基础:构建一个简单的Web服务器
57 1