jenkins实现持续集成、持续部署

简介: 想要利用jenkins实现持续集成、持续部署,首先我们先思考需要jenkins帮我们做些什么事情才能达到这个目的。首先开发人员提交了代码jenkins应该知道这个变动;其次jenkins知道代码变更后,想要拉取代码,此时要求jenkins服务器上也要有代码拉取的终端,比如git、gitee等;再其次拉取完代码后jenkins就需要打包这些代码成为jar包或者war包,这就需要maven、gradle等打包工具;再然后jenkins需要将这些jar包部署到目标服务器,那就需要相应的插件和脚本来部署这些jar或者war包。

前言:

安装jenkins的教程:docker搭建jenkins


一、分析我们需要做什么才能实现持续集成、部署



1、分析jenkins需要帮我们做哪些内容


想要利用jenkins实现持续集成、持续部署,首先我们先思考需要jenkins帮我们做些什么事情才能达到这个目的。首先开发人员提交了代码jenkins应该知道这个变动;其次jenkins知道代码变更后,想要拉取代码,此时要求jenkins服务器上也要有代码拉取的终端,比如git、gitee等;再其次拉取完代码后jenkins就需要打包这些代码成为jar包或者war包,这就需要maven、gradle等打包工具;再然后jenkins需要将这些jar包部署到目标服务器,那就需要相应的插件和脚本来部署这些jar或者war包。这样分析下来jenkins如何实现持续集成和部署就很明了了,如下图所示就是jenkins实现持续集成和部署的逻辑图。可以看到我们分析的步骤jenkins都是帮我们做完了的(下图从左往右看)。


abb84a1eac13417cb201cf74c1a70b44.png


2、拆分需要实现的步骤


根据上面的图,笔者将这幅图拆成了四步如下图所示。

第一步:配置钩子通知jenkins代码变更。

第二步:jenkins收到变更后git拉取远端变更的代码。

第三步:配置maven打包拉取到的变更代码。

第四步:配置构建工具和shell实现部署。

这样整个流程就很清晰了,我们按照这个来去配置jenkins的持续集成和部署吧。


image.png


二、配置持续集成和部署



这部分介绍具体如何实现持续集成和部署的,这里分的四步是对整个过程的拆解。


0、前置条件


这里简单列下做成这个小案例前置条件。对于当前案例来说是必须的。对于内网的代码和内网的jenkins服务器来说则不是非必须。


1)写了一个demo的小项目,已经放在了git或者gitee上面。

2)若是代码在外网,则需要一台公网ip的服务器(不配置钩子不需要公网ip),若是代码在内网比如自己公司的gitlab,则也不需要公网ip


1、实现第一步:配置钩子


什么是钩子?
这里就是个新名词,他的作用就是当git上的代码发生异动时,可以立刻通知到jenkins,这就是钩子干的事。这里就从开始来介绍这个钩子的配置吧。


1)创建一个“自由风格的软件项目”

804a9afb73e34df1ae9bdb26314f38d9.png


进去后发现最上方有6个小栏需要我们配置,不要进来进被这6个小栏吓到了感觉需要配置很多东西似的,其实需要配置的很少,笔者这里已经将每个小栏需要干得事情列出来了,其中有两个栏没列,是因为这俩栏可以不用配置,并不影响使用。有兴趣的话可以看下这两个,他们都可以看成是扩展的内容,不影响主体。


2e5c6077de824f3c9793dfca1645504d.png


2)点到“构建触发器”一栏,开始配置钩子

这里有很多选择,我们选择的是使用功能钩子来触发,钩子触发默认就是在git中收到了push就会触发钩子通知jenkins。只需要勾选下方标红的区域即可。可以看到标红位置后面又一端url:


http://123.57.188.184:8080/gitee-project/firstJob,这就是需要配置到git中钩子通知的地址。


cd60dc892eda405584b473bd55cb39c5.png


勾选上方标红的位置后,会弹出一大片东西,其实初次使用jenkins弹出内容这里面的我们都可以不用动,等使用熟练了再来研究哪些是需要自己进一步扩展的,初次使用我们就使用默认的即可。其次找到刚刚弹出内容的最下方位置,点击“生成”按钮,生成一个密码,这个密码是git与jenkins交互的凭证,密码这里就不展示了。到这里jenkins端我们就配置完成了。


c8ad332916b740ee9a83f92afabe163e.png


3)在gitee上配置钩子

jenkins端已经配置完毕,下面来配置下gitee/git上的钩子吧,在下图所示位置,添加刚刚取的的url:http://123.57.188.184:8080/gitee-project/firstJob,和刚刚钩子的密码。


8b6878b3d5c5420bb0f10d8d51d4f42e.pngeaca71c7443844cf9db7c8e1b04349e2.png


到这里钩子就配置完成了,主要是两步,在jenkins中选择钩子触发,然后获取触发地址和密码,配置在git上就可以了。其实很简单,只是介绍的比较细致就看起来比较长。


2、实现第二步:配置git/gitee/svn


这一步就比较简单了配置下我们代码的git地址和git的登录用户即可。

  • 点击“源码管理”一栏,配置git地址和账号即可(默认是master分支)。

4fa493a1fc6c42a8a137c2e3daaecd17.png


3、实现第三步:配置maven


这一步也很简单,点击“构建环境”一栏后,只需要选择下安装好的maven,配置下打包语句即可:clean install。如下图所示:


92bc140a326b467093d8ce25cd48421a.png4216784bd00c46da9560d8c6b0f30360.png


4、实现第四步:配置部署脚本


这一步也是以实现功能为主,不会做过多扩展。点击“构建后操作”一栏,选择Post built task(该插件需要手动安装,开篇的jenkins安装中有),然后填入shell语句即可。笔者这里只是在容器内进行启动的java应用,不建议和我一样做,我这是偷懒了(容器内启动会涉及端口映射的问题)。跨服务器的赋值就是scp其实也不难,都是一样的原理。下面是笔者构建部署服务的shell语句。

cp  /root/.m2/repository/com/cheng/jenkins_boot/0.0.1-SNAPSHOT/jenkins_boot-0.0.1-SNAPSHOT.jar /opt/service/
cd /opt/service/
java -jar jenkins_boot-0.0.1-SNAPSHOT.jar 


图片展示如下:

167f8e629f4a41b9bf51694bf226bee1.png


这样就完成了所有的配置了,来测试下吧。手动提交代码后,自动触发了jenkins的拉取代码、打包、部署等操作,我们只需要直接访问服务地址即可。这样也就成功了。


ca8197b7d5a24ca7b05299eb1ee05d18.gif

b75c27da8afa4420845881c4ec912049.png



三、总结



这篇文章只是作为jenkins搭建CI、CD的入门文章,还有很多我们可以深入去研究的内容,总结这篇文章内容其实也就是搭建jenkins的四步:①配置钩子,②配置git,③配置maven,④配置构建部署shell。做好这四步其实就ok了。


相关文章
|
2月前
|
数据管理 测试技术 持续交付
深入理解软件测试中的持续集成与持续部署
在现代软件开发实践中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)是提升开发效率、保障产品质量的关键环节。本文将深入探讨CI/CD的概念、实施策略及其在软件测试中的作用,旨在为读者揭示如何通过有效的自动化流程来优化测试活动,减少人为错误,并实现快速反馈和迭代。文章还将讨论面临的挑战和可能的解决方案,以期帮助团队构建更加健壮的开发和测试环境。
|
21天前
|
测试技术 持续交付 开发工具
《Git 简易速速上手小册》第6章:Git 在持续集成/持续部署(CI/CD)中的应用(2024 最新版)
《Git 简易速速上手小册》第6章:Git 在持续集成/持续部署(CI/CD)中的应用(2024 最新版)
38 2
|
2天前
|
运维 测试技术 持续交付
持续集成与持续部署(CI/CD):提高软件开发效率的关键实践
【5月更文挑战第8天】CI/CD是提升软件开发效率的关键实践,包括持续集成和持续部署。CI通过频繁集成代码并自动化构建、测试,早发现错误;CD则自动将通过测试的App部署到生产环境,缩短交付周期。自动化流程能降低人为错误,保障软件质量,减少运维成本。Jenkins、Travis CI、GitLab CI/CD和Docker是常见的CI/CD工具。通过这些工具和实践,可优化开发流程,推动项目成功。
|
5天前
|
缓存 测试技术 持续交付
Golang深入浅出之-Go语言中的持续集成与持续部署(CI/CD)
【5月更文挑战第5天】本文介绍了Go语言项目中的CI/CD实践,包括持续集成与持续部署的基础知识,常见问题及解决策略。测试覆盖不足、版本不一致和构建时间过长是主要问题,可通过全面测试、统一依赖管理和利用缓存优化。文中还提供了使用GitHub Actions进行自动化测试和部署的示例,强调了持续优化CI/CD流程以适应项目需求的重要性。
44 1
|
10天前
|
敏捷开发 运维 测试技术
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】在数字化转型的浪潮中,企业对软件交付速度和质量的要求日益提高。自动化运维作为提升效率、确保稳定性的关键手段,其重要性不言而喻。本文将探讨如何利用容器技术构建一个高效的自动化运维体系,实现从代码提交到产品上线的持续集成(CI)与持续部署(CD)。通过分析现代容器技术与传统虚拟化的差异,阐述容器化带来的轻量化、快速部署及易于管理的优势,并结合实例讲解如何在实际环境中搭建起一套完善的CI/CD流程。
|
10天前
|
运维 Kubernetes 持续交付
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】 在快速发展的云计算时代,传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文将介绍如何利用容器技术搭建一套高效自动化运维系统,实现软件的持续集成(CI)与持续部署(CD)。文章首先探讨了现代运维面临的挑战,接着详细阐述了容器技术的核心组件和工作原理,最后通过实际案例展示了如何整合这些组件来构建一个可靠、可扩展的自动化运维平台。
|
11天前
|
监控 Java 测试技术
持续集成与持续部署:原理、实践与代码示例
持续集成与持续部署:原理、实践与代码示例
26 3
|
11天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于容器技术的持续集成与持续部署(CI/CD)实践
【4月更文挑战第29天】 随着云计算和微服务架构的兴起,自动化运维已成为提升企业IT效率、确保系统稳定性的关键因素。本文旨在探讨如何利用容器技术构建一套高效的自动化运维体系,实现软件开发过程中的持续集成(CI)与持续部署(CD)。文章首先分析了传统运维模式面临的挑战,然后详细介绍了基于Docker和Kubernetes等容器技术的CI/CD流程设计与实施策略,并通过一个实际案例来展示该方案在提高部署频率、降低人力成本及提升系统可靠性方面的显著优势。
|
13天前
|
敏捷开发 Kubernetes 测试技术
深入理解软件测试中的持续集成与持续部署
【4月更文挑战第27天】 随着敏捷开发实践的普及,持续集成(CI)和持续部署(CD)成为软件开发周期中不可或缺的组成部分。本文旨在探讨CI/CD在软件测试中的应用及其对提高产品质量和加快上市速度的影响。通过对自动化测试、环境管理、版本控制等方面的分析,我们揭示了实施CI/CD的最佳实践,并讨论了如何克服常见挑战。文章的目的是为测试人员提供一个清晰的指南,帮助他们理解和实现一个高效的CI/CD流程。
|
23天前
|
jenkins Java 持续交付
实战指南:运用Jenkins实现Java项目的持续集成与自动化部署
【4月更文挑战第17天】Jenkins是一款强大的开源CI/CD工具,广泛用于Java项目的自动化构建、测试和部署。通过配置Jenkins环境、创建Job、设定构建触发器和步骤,实现持续集成和部署。集成Maven、Git等工具,确保代码质量并加速上线。持续部署阶段,Jenkins可将工件发布至远程服务器或云环境,实现高效、稳定的自动化流程。实践过程中,关注工作流优化、配置备份和服务器状态监控,以提升整体开发效率和软件质量。

热门文章

最新文章