由于前一段时间发布了几篇关于web程序基于jenkins部署发布的博文,由于是基于svn作为版本库讲解的。这段时间有一些朋友问我git作为版本库的与jenkins结合实现像选择svn tag指定程序版本的实现发布程序的解决方案。
有与时间原因,本篇不在过多赘述细节,读者可以动手揣摩!
直接先给大家看一下我目前正在使用的部署到生产环境下的jenkins截图!
下面给出配置截图:
经过测试git parameter plugin不能满足我们的需求,所以我们只能自己在jenkins中创建tag list。添加写一下如图步骤:
自己写一个可扩展下拉菜单,通过程序生成指定git版本下的程序的tags列表
下面是程序的源码管理,在git repositories url 中添加我们程序的git地址
下图两种方式都行:
注意我们这个时候选择的是master版本,意味着我的程序都是稳定版本(在开发过程中使用git-flow流程来控制版本开发流程)。
签出到指定的tag:这一步很重要:
到此我们已经实现了jenkins与git的集成结合!这也是前段时间发布的部署系列svn与git的不同之处!
jenkins下git的插件安装网上很多这里不再介绍!
需要注意一点可以根据自己的需求开发出git tag list的功能!
下面给出我按照自己的需求实现的一个:
先给出程序结构图:
git.php
- 2345678910111213141516171819202122232425262728293031323334353637383940 <?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
- #!/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
- #!/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脚本:
如有不明白的地方,可以参考我的部署系列文章或线上交流!
相关推荐
通过编写Playbook文件定义任务执行步骤,Ansible可以轻松地实现多台服务器的批量管理和部署操作,极大地方便了运维人员的工作。 ### 关键知识点总结 1. **SpringBoot简化了Java应用开发**:SpringBoot通过约定优于...
虽然Jenkins自身可以作为Web应用运行在任何支持Servlet容器的应用服务器上,但通常情况下并不需要单独安装Tomcat。如果确实需要安装Tomcat,可以参考[这篇博客](https://www.cnblogs.com/louby/p/10209092.html)。...
系统的部署可能在Tomcat、Jetty等应用服务器上,通过Jenkins进行持续集成和自动化部署。 总的来说,这个基于SSH框架的教务管理系统展示了如何利用现代Java Web技术解决实际问题,其设计和实现对于学习和理解SSH框架...
10. **持续集成与部署**:利用Jenkins或GitLab CI/CD实现持续集成和部署,每次提交代码后自动编译、测试,确保代码质量,并快速部署到服务器。 总结来说,基于Java Web的员工在线考试系统是一个集成了前端展示、...
这是一个关于构建基于微信小程序的学习资料销售平台的项目,旨在利用微信小程序的广泛用户基础和便捷性,为用户提供一个购买和分享学习资源的在线市场。该项目结合了后端开发技术,如Java的SpringBoot和SSM(Spring...
1. 技术选型:系统基于.NET Framework或.NET Core进行开发,利用C#作为主要编程语言,结合ASP.NET MVC或ASP.NET Core MVC作为Web应用程序框架,提供RESTful API服务。 2. 数据库设计:通常采用SQL Server或MySQL...
【Python微信个人号社群营销管理系统】是利用Python技术构建的一款高效、便捷的Web应用程序,旨在帮助企业或个人更好地管理和运营微信个人号社群。该系统通过Web界面提供了一系列功能,包括但不限于消息自动化、用户...
- **发布与部署**:构建成功后,可以将应用部署到Tomcat服务器上,这通常通过Jenkins的发布插件实现,自动将war包复制到Tomcat的webapps目录下。 - **持续监控**:通过Jenkins的仪表板,可以查看构建历史、测试报告...
2. **持续集成/持续部署(CI/CD)**:可以配置Git仓库与服务如Jenkins或Travis CI,实现代码提交自动构建和部署。 总结,这个基于Node.js的学生管理系统展示了如何结合现代Web技术构建一个简洁、实用的应用。通过...
一旦开发完成,J2EE模块将被部署到应用服务器上,而Flex SWF文件(客户端代码)通常会被放在Web服务器的某个目录下,以便浏览器访问。有时,Flex应用也会打包成独立的AIR应用,供用户在桌面环境下使用。 9. **协同...
随着Web技术的发展,现代Web开发者需要掌握更多技能,如响应式设计、Web组件、PWA(渐进式Web应用)、服务器渲染等。Atom作为一款灵活且可扩展的编辑器,能够帮助开发者适应这些变化,提高工作效率。 5. **Atom与...
Gerrit 是一个开源的代码审查和协作代码管理系统,它基于 Git 版本控制系统,用于帮助软件开发团队进行代码审查和项目管理。本教程将详细阐述如何搭建一个 Gerrit 服务器,以便您能够高效地利用这个强大的工具进行...
1. **Jenkins**:Jenkins是一个广泛使用的持续集成服务器,支持各种插件,可以与其他工具(如Git、Maven、Docker等)集成,实现自动化构建、测试和部署流程。 2. **Jenkins Job Builder (JJB)**:JJB是Jenkins的一...
6. **通知与报警模块**:结合第三方服务,如Slack、钉钉等,实现实时疫情警报推送,及时响应疫情变化。 在实际开发过程中,我们需要遵循敏捷开发原则,采用持续集成和持续部署(CI/CD)策略,如使用Jenkins自动化...
4. **服务器端技术**:如Apache、Nginx等作为Web服务器,部署和运行应用程序。 5. **版本控制**:使用Git进行代码版本管理,协同开发更为便捷。 6. **自动化测试**:利用JUnit、Selenium等工具进行功能测试和性能...
在Python的DevOps实践中,我们首先会接触到自动化工具,如配置管理工具Ansible,它使用YAML语法编写playbooks,实现服务器的批量配置和部署。Ansible的模块化设计使得扩展和维护变得简单,而其无代理的特性则降低了...
1. **ASP.NET框架**:ASP.NET是微软开发的一种用于构建Web应用程序的框架,它基于.NET Framework,支持多种编程语言,如C#、VB.NET等。在本系统中,开发者可能使用了ASP.NET MVC或Web Forms架构来构建界面和处理业务...
15. **持续集成与部署**:书中可能还涉及如何将Spring应用与其他持续集成工具(如Jenkins、Git)结合,以及自动化部署策略。 以上知识点构成了Spring 4.x++企业应用开发的基础,读者可以通过学习理解这些概念,提升...
- 内嵌式Web服务器:Spring Boot支持内嵌Tomcat、Jetty或Undertow等Web服务器,无需额外部署。 - 命令行接口(CLI):用于快速开发和运行Spring应用。 - Actuator:提供健康检查、审计、环境信息等监控功能。 2....
7. Jenkins部署Web项目到WebLogic:Jenkins是一种持续集成工具,通过提供的教程,可以学会如何配置Jenkins自动化部署Web应用到WebLogic服务器。 8. Maven跳过单元测试:在执行Maven的`clean install`时,可以使用`-...