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


相关文章
|
2天前
|
Java 应用服务中间件 Apache
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
17 7
|
3天前
|
中间件 Java 生物认证
Web应用&源码泄漏&开源闭源&指纹识别&GIT&SVN&DS&备份
Web应用&源码泄漏&开源闭源&指纹识别&GIT&SVN&DS&备份
|
4天前
|
XML 开发框架 .NET
【已解决】请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记
【已解决】请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记
7 1
|
5天前
|
安全 编译器 PHP
PHP 8 的新特性与优化——构建更高效的Web应用程序
PHP 8 是最新的PHP版本,它引入了一系列令人激动的新特性和优化,为开发者提供了更多的工具和功能来构建高效的Web应用程序。本文将介绍PHP 8的一些重要特性,包括 JIT 编译器、新的数据结构、类型系统改进以及错误处理的增强。我们还将探讨如何利用这些新特性和优化,提升Web应用程序的性能和可维护性。
16 0
|
17天前
|
安全 jenkins Java
Java一分钟之-Jenkins持续集成服务器
【6月更文挑战第5天】Jenkins是Java开发中的关键工具,用于自动化构建、测试和部署,确保CI/CD。本文概述了Jenkins常见问题及解决方案:安装时注意依赖和网络;谨慎选择并更新插件;正确配置SCM触发器;使用Declarative Pipeline定义清晰的Jenkinsfile;集成JaCoCo和SonarQube确保质量;采用蓝绿部署等策略避免直接在生产环境部署未经验证的代码。理解并解决这些问题能提升Jenkins的效率和可靠性。
32 3
|
18天前
|
XML JSON API
RESTful API关键部分组成和构建web应用程序步骤
RESTful API关键部分组成和构建web应用程序步骤
14 0
|
23天前
|
JavaScript 前端开发
基于 Node.js 环境,使用内置 http 模块,创建 Web 服务程序
基于 Node.js 环境,使用内置 http 模块,创建 Web 服务程序
|
23天前
|
存储 人工智能 应用服务中间件
Web应用是一种通过互联网浏览器和网络技术在互联网上执行任务的计算机程序
【5月更文挑战第30天】Web应用是一种通过互联网浏览器和网络技术在互联网上执行任务的计算机程序
30 2
|
1月前
|
JavaScript 持续交付 Go
如何实现Git Push之后自动部署到服务器?
如何实现Git Push之后自动部署到服务器?
40 0
|
1月前
|
存储 安全 数据安全/隐私保护
Web应用程序的会话管理是一种跟踪和识别特定用户与Web服务器之间交互的技术
【5月更文挑战第12天】Python Web开发中,会话管理用于跟踪用户与服务器交互,如Flask框架提供的内置功能。以下是一个简单示例:安装Flask后,设置应用密钥,通过session读写用户状态。例如,创建一个显示和设置用户名称的Web应用,用户提交的名字将保存在会话中。在生产环境中,应安全存储密钥,如使用环境变量。扩展会话管理可借助第三方库实现更多功能,但可能需更多配置。
228 2