基于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,如需转载请自行联系原作者


相关文章
|
7天前
|
弹性计算 数据库 数据安全/隐私保护
阿里云服务器真香宝典之Calibre-Web个人图书馆云端部署
在阿里云ECS(2核2G,SSD40G,3M带宽)上,安装Ubuntu 22.04,然后配置Docker和FTP。创建 `/config` 和 `/books` 目录,设置权限,开放端口,拉取 `johngong/calibre-web` Docker镜像,以`calibre-web`命名容器,映射端口,配置环境变量,挂载卷,确保重启策略。本地安装Calibre客户端,上传metadata.db到服务器。在Calibre-web服务端配置数据库,启用上传权限,修改管理员账户信息。完成配置后,开始上传电子书并进行阅读。
83 2
阿里云服务器真香宝典之Calibre-Web个人图书馆云端部署
|
2天前
|
监控 安全 应用服务中间件
如何搭建高效的Web服务器:技术指南与实践
【7月更文挑战第24天】搭建一个高效的Web服务器需要综合考虑多个方面,包括选择合适的操作系统、安装合适的Web服务器软件、进行配置优化、加强安全防护以及实施性能监控。通过不断地优化和调整,可以确保Web服务器在高负载下仍能保持稳定和高效的运行,为用户提供优质的访问体验。
|
7天前
|
Java Linux 应用服务中间件
Windows和Linux的最佳Web服务器
【7月更文挑战第20天】Windows和Linux的最佳Web服务器
19 3
|
8天前
|
存储 开发框架 安全
如何选择合适的Web服务器?
【7月更文挑战第19天】如何选择合适的Web服务器?
20 2
|
8天前
|
JavaScript Java 应用服务中间件
Web服务器的发展历程?
【7月更文挑战第19天】Web服务器的发展历程?
17 2
|
8天前
|
存储 缓存 监控
Web服务器
【7月更文挑战第19天】Web服务器
15 2
|
18天前
|
缓存 弹性计算 数据库
阿里云2核4G服务器支持多少人在线?程序效率、并发数、内存CPU性能、公网带宽多因素
2核4G云服务器支持的在线人数取决于多种因素:应用效率、并发数、内存、CPU、带宽、数据库性能、缓存策略、CDN和OSS使用,以及用户行为和系统优化。阿里云的ECS u1实例2核4G配置,适合轻量级应用,实际并发量需结合具体业务测试。
6 0
阿里云2核4G服务器支持多少人在线?程序效率、并发数、内存CPU性能、公网带宽多因素
|
1月前
|
Shell 网络安全 开发工具
git实现服务器自动push拉取代码--webhooks
git实现服务器自动push拉取代码--webhooks
65 1
|
13天前
|
网络协议 安全 Python
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
|
21天前
|
前端开发 Java 应用服务中间件
C/S和B/S架构以及Web服务器
C/S和B/S架构以及Web服务器
22 0

热门文章

最新文章