`

[转]基于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. 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

分享到:
评论

相关推荐

    springboot+sourceTree+gitlab+jenkins+ansible自动化部署详解

    通过编写Playbook文件定义任务执行步骤,Ansible可以轻松地实现多台服务器的批量管理和部署操作,极大地方便了运维人员的工作。 ### 关键知识点总结 1. **SpringBoot简化了Java应用开发**:SpringBoot通过约定优于...

    jenkins安装配置指导

    虽然Jenkins自身可以作为Web应用运行在任何支持Servlet容器的应用服务器上,但通常情况下并不需要单独安装Tomcat。如果确实需要安装Tomcat,可以参考[这篇博客](https://www.cnblogs.com/louby/p/10209092.html)。...

    基于ssh框架的教务管理系统

    系统的部署可能在Tomcat、Jetty等应用服务器上,通过Jenkins进行持续集成和自动化部署。 总的来说,这个基于SSH框架的教务管理系统展示了如何利用现代Java Web技术解决实际问题,其设计和实现对于学习和理解SSH框架...

    基于java web的员工在线考试系统

    10. **持续集成与部署**:利用Jenkins或GitLab CI/CD实现持续集成和部署,每次提交代码后自动编译、测试,确保代码质量,并快速部署到服务器。 总结来说,基于Java Web的员工在线考试系统是一个集成了前端展示、...

    基于微信小程序的学习资料销售平台.zip

    这是一个关于构建基于微信小程序的学习资料销售平台的项目,旨在利用微信小程序的广泛用户基础和便捷性,为用户提供一个购买和分享学习资源的在线市场。该项目结合了后端开发技术,如Java的SpringBoot和SSM(Spring...

    c#网上购书系统(源程序以及概要分析)

    1. 技术选型:系统基于.NET Framework或.NET Core进行开发,利用C#作为主要编程语言,结合ASP.NET MVC或ASP.NET Core MVC作为Web应用程序框架,提供RESTful API服务。 2. 数据库设计:通常采用SQL Server或MySQL...

    Python-一款通过Web的方式进行微信个人号社群营销管理系统

    【Python微信个人号社群营销管理系统】是利用Python技术构建的一款高效、便捷的Web应用程序,旨在帮助企业或个人更好地管理和运营微信个人号社群。该系统通过Web界面提供了一系列功能,包括但不限于消息自动化、用户...

    Jenkins+Ant+Tomcat持续集成自动化测试平台搭建

    - **发布与部署**:构建成功后,可以将应用部署到Tomcat服务器上,这通常通过Jenkins的发布插件实现,自动将war包复制到Tomcat的webapps目录下。 - **持续监控**:通过Jenkins的仪表板,可以查看构建历史、测试报告...

    基于Node.js的极简的学生管理系统

    2. **持续集成/持续部署(CI/CD)**:可以配置Git仓库与服务如Jenkins或Travis CI,实现代码提交自动构建和部署。 总结,这个基于Node.js的学生管理系统展示了如何结合现代Web技术构建一个简洁、实用的应用。通过...

    eclipse项目中同时开发j2ee模块和flex客户端模块

    一旦开发完成,J2EE模块将被部署到应用服务器上,而Flex SWF文件(客户端代码)通常会被放在Web服务器的某个目录下,以便浏览器访问。有时,Flex应用也会打包成独立的AIR应用,供用户在桌面环境下使用。 9. **协同...

    Atom-awesome-web-developer-list,一份精心策划的与网络开发相关的令人敬畏的事情列表。.zip

    随着Web技术的发展,现代Web开发者需要掌握更多技能,如响应式设计、Web组件、PWA(渐进式Web应用)、服务器渲染等。Atom作为一款灵活且可扩展的编辑器,能够帮助开发者适应这些变化,提高工作效率。 5. **Atom与...

    Gerrit 服务器搭建_Gerrit_

    Gerrit 是一个开源的代码审查和协作代码管理系统,它基于 Git 版本控制系统,用于帮助软件开发团队进行代码审查和项目管理。本教程将详细阐述如何搭建一个 Gerrit 服务器,以便您能够高效地利用这个强大的工具进行...

    beaker-jenkins-jobs:詹金斯(Jenkins)Job Builder定义与烧杯有关的詹金斯(Jenkins)工作

    1. **Jenkins**:Jenkins是一个广泛使用的持续集成服务器,支持各种插件,可以与其他工具(如Git、Maven、Docker等)集成,实现自动化构建、测试和部署流程。 2. **Jenkins Job Builder (JJB)**:JJB是Jenkins的一...

    springboot224基于springboot搭建的疫情管理系统.zip

    6. **通知与报警模块**:结合第三方服务,如Slack、钉钉等,实现实时疫情警报推送,及时响应疫情变化。 在实际开发过程中,我们需要遵循敏捷开发原则,采用持续集成和持续部署(CI/CD)策略,如使用Jenkins自动化...

    人事档案管理系统源程序

    4. **服务器端技术**:如Apache、Nginx等作为Web服务器,部署和运行应用程序。 5. **版本控制**:使用Git进行代码版本管理,协同开发更为便捷。 6. **自动化测试**:利用JUnit、Selenium等工具进行功能测试和性能...

    DevOps in Python.zip

    在Python的DevOps实践中,我们首先会接触到自动化工具,如配置管理工具Ansible,它使用YAML语法编写playbooks,实现服务器的批量配置和部署。Ansible的模块化设计使得扩展和维护变得简单,而其无代理的特性则降低了...

    计算机毕业设计-ASP.NET图书馆管理信息系统(源代码+LW+任务书).zip

    1. **ASP.NET框架**:ASP.NET是微软开发的一种用于构建Web应用程序的框架,它基于.NET Framework,支持多种编程语言,如C#、VB.NET等。在本系统中,开发者可能使用了ASP.NET MVC或Web Forms架构来构建界面和处理业务...

    Spring 4.x++企业应用开发实战

    15. **持续集成与部署**:书中可能还涉及如何将Spring应用与其他持续集成工具(如Jenkins、Git)结合,以及自动化部署策略。 以上知识点构成了Spring 4.x++企业应用开发的基础,读者可以通过学习理解这些概念,提升...

    SpringBoot542医疗服务系统.zip

    - 内嵌式Web服务器:Spring Boot支持内嵌Tomcat、Jetty或Undertow等Web服务器,无需额外部署。 - 命令行接口(CLI):用于快速开发和运行Spring应用。 - Actuator:提供健康检查、审计、环境信息等监控功能。 2....

    工作笔记.docx

    7. Jenkins部署Web项目到WebLogic:Jenkins是一种持续集成工具,通过提供的教程,可以学会如何配置Jenkins自动化部署Web应用到WebLogic服务器。 8. Maven跳过单元测试:在执行Maven的`clean install`时,可以使用`-...

Global site tag (gtag.js) - Google Analytics