幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

手把手教你用Jenkins自动部署SpringBoot

  1。什么是CICD1。1CI(ContinuousIntegration)1。2CD(ContinuousDeliveryContinuousDeployment)2。什么是Jenkins3。准备工作3。1整体规划3。2准备代码3。3准备服务器4。搭建Jenkins5。安装插件6。配置Jenkins6。1基本的环境配置6。2JDK6。3Maven6。4Git6。5远程的凭证配置7。开始一个项目的构建8。自动构建8。1修改Jenkins8。2配置Webhook9。小结1。什么是CICD
  CICD是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。
  CICD的核心概念可以总结为三点:持续集成持续交付持续部署
  CICD主要针对在集成新代码时所引发的问题(俗称集成地狱)。
  为什么会有集成地狱这个雅称呢?大家想想我们一个项目部署的过程,拉取代码构建测试打包部署,如果我们经常需要部署项目,特别是在微服务时代,服务特别多的情况下,不停的测试打包部署,那估计得有个人一整天专门做这事了,而这事又是繁琐的重复无意义的。
  具体而言,CICD可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署),这些关联的事务通常被统称为CICD管道,由开发和运维团队以敏捷方式协同支持。1。1CI(ContinuousIntegration)
  CICD中的CI始终指持续集成,它属于开发人员的自动化流程。成功的CI意味着应用代码的新更改会定期构建、测试并合并到代码仓库中,该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。1。2CD(ContinuousDeliveryContinuousDeployment)
  CICD中的CD指的是持续交付和或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。
  持续交付(ContinuousDelivery)通常是指开发人员对应用的更改会自动进行错误测试并上传到代码仓库(如GitHub、GitLab等),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。
  持续部署(ContinuousDeployment)指的是自动将开发人员的更改从代码仓库发布到生产环境,以供客户使用。通过一套全自动化的流程,来解决手动测试、编译、打包等操作。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。2。什么是Jenkins
  前面说的CICD算是一种思想,思想要落地,就需要对应的工具。
  Jenkins是一款开源的CICD软件,可以算是CICD软件领导者,它提供了超过1000个插件来支持构建、部署、自动化,基本上能够满足任何项目的需要。
  整体来说,Jenkins有如下六大特点:持续集成和持续交付
  作为一个可扩展的自动化服务器,Jenkins可以用作简单的CI服务器,或者变成任何项目的持续交付中心。简易安装
  Jenkins是一个基于Java的独立程序,可以立即运行,包含Windows、MacOSX和其他类Unix操作系统。配置简单
  Jenkins可以通过其网页界面轻松设置和配置,其中包括即时错误检查和内置帮助。插件
  通过更新中心中的1000多个插件,Jenkins集成了持续集成和持续交付工具链中几乎所有的工具。扩展
  Jenkins可以通过其插件架构进行扩展,从而为Jenkins可以做的事提供几乎无限的可能性。分布式
  Jenkins可以轻松地在多台机器上分配工作,帮助更快速地跨多个平台推动构建、测试和部署。
  其实Jenkins有很多好玩的用法,今天我还是想先通过一个简单的案例,先来和大家捋一捋如何使用Jenkins来实现一个SpringBoot项目的自动发布部署,这样大家对Jenkins现有一个直观的认知,各种其他使用细节松哥在以后的文章中再来和大家细聊。3。准备工作3。1整体规划
  我们先来通过如下一张图片来看下Jenkins在整个流程中扮演的角色:
  结合第一二小节的介绍,这张图应该很好理解。3。2准备代码
  提前准备好测试代码,并上传到代码仓库中。为了更加逼真一些,小伙伴们可以将这个代码仓库设置为私有的,这样将来可以检验Jenkins中的配置是否正确。
  考虑到GitHub网络有时候不稳定,我这里使用了Gitee,一个很简单的SpringBoot工程,里边有一个hello接口,仅此而已。
  我的代码仓库地址(私有仓库):https:gitee。comlenvejenkinsdemo。git3。3准备服务器
  理论上,我们需要一台服务器用来跑Jenkins,还需要一台服务器作为我的应用服务器,但是我手头没有多余的服务器,所以我就将Jenkins和我的SpringBoot项目部署到一台服务器上,在接下来的文章中我会和大家说明每个配置是针对Jenkins的还是针对SpringBoot的。
  另外,有的小伙伴可能是在虚拟机上做实验,因为将来我们的代码提交到Gitee之后,Gitee会通过一个POST请求将这个事件告知Jenkins,进而触发Jenkins的构建操作。所以这就要求Gitee能够访问到你的Jenkins服务器,所以如果你的Jenkins刚好搭建在服务器上,这事就很容易了,但如果是搭建在虚拟机里,就得通过花生壳之类的内网穿透工具来辅助你的工作了,比较麻烦,而且花生壳网速也慢。
  不过小伙伴们不必担心,如果你在虚拟上搭建的Jenkins,并且不愿意折腾花生壳,那么也可以通过手动构建定时构建的方式去完成项目构建的。4。搭建Jenkins
  为了省事,我决定用Docker搭建Jenkins,一行命令搞定。
  为了操作方便,我们将Jenkins的工作目录映射到我的宿主机中来,因此首先在宿主机中准备一个数据目录(不是必须):创建jenkins目录mkdirdatajenkinshome修改目录的所有者,以便于Jenkins容器能够操作该目录chownR1000:1000datajenkinshome
  接下来创建并启动Jenkins容器,同时挂载数据卷:dockerrundnamejenkinsp8088:8080p50000:50000vdatajenkinshome:varjenkinshomejenkinsjenkins
  由于Jenkins在运行的时候需要用到maven,所以有的人会选择将maven目录也作为挂载点,但是我觉得没有必要,特别是对于初学者而言,这块很容易出错,不如将maven将来直接拷贝到Jenkins容器中,这样反而省事一些。
  执行如上命令,安装成功之后,浏览器输入http:localhost:8088就可以访问了。
  然后稍等片刻,就可以访问Jenkins了:
  访问之前,首先需要解锁Jenkins,解锁密码位置网页上列出来了,但是由于我们创建容器的时候设置了数据卷,所以,现在直接去宿主机的datajenkinshomesecretsinitialAdminPassword位置查看初始化密码,如下:
  在网页中,输入密码然后继续。接下来会让我们选择需要的插件,第一次使用,安装推荐插件即可。
  如果因为网络原因安装失败,可以点击重试按钮进行重试。
  接下来创建一个新的用户,也可以不创建新的用户,直接使用admin即可:
  再设置Jenkins访问地址:
  这个页面有乱码,不过不影响,设置完成后,我们点击保存并完成按钮即可。接下来就可以进入到Jenkins中了。
  整个过程执行完毕后,建议执行如下命令重启一下Jenkins,因为有的插件需要重启之后才会生效。dockerrestartjenkins5。安装插件
  Jenkins启动成功之后,接下来我们安装三个必要的插件:MavenIntegration:Maven构建工具PublishOverSSH:整个工具,将来把Jenkins打包好的jar上传到应用服务器上。Gitee:协助使用Gitee仓库。
  安装步骤如下:
  点击左边的系统管理,然后点击右边的插件管理,进行配置。
  然后在可选插件中,搜索MavenIntegration和PublishOverSSH以及Gitee三个插件:
  搜索完成后,点击Installwithoutrestart。
  安装成功之后,重启Jenkins。
  建议执行dockerrestartjenkins去重启,点击网页上的重启,会卡很久,还是执行docker重启命令靠谱一些。6。配置Jenkins6。1基本的环境配置
  插件安装成功之后,接下来我们开启Jenkins的配置,在正式开始配置之前,先做一点准备工作。
  这个需要我们提前准备好Maven,由于Jenkins容器中已经包含一个JDK了,所以我们可以不用提前准备JDK,只需要提前准备Maven即可。为了避免权限问题,我们可以直接将Maven上传到jenkins容器中,然后去配置即可。
  如下将宿主机中的maven拷贝到Jenkins容器中:这个命令表示将宿主机中的maven目录拷贝到jenkins容器中的opt目录下dockercpmavenjenkins:opt
  接下来就可以开始配置了,配置的位置如下图:
  6。2JDK
  首先我们来配置JDK,Jenkins中默认安装了JDK,我们只需要将其配置配出出来即可:
  别名随意取,JAVAHOME则根据实际情况配置。6。3Maven
  Maven就是我们刚刚上传到docker中期中的Maven,配置一下位置即可,Jenkins将来会自动从Gitee上将代码拉下来,然后就利用你这里配置的Maven进行构建:
  名字随意取,MAVENHOME则是前面刚刚上传到容器中的MAVEN目录。6。4Git
  配置Git,由于Jenkins容器中已经存在git了,所以这里不需要额外安装git,默认即可。
  所有都配置完成,点击保存按钮。6。5远程的凭证配置
  接下来还需要我们配置两个远程登录凭证。6。5。1应用服务器信息
  应用服务器,就是将来Jenkins将代码构建成jar包后,要上传的服务器的信息(地址、用户名以及密码)。
  配置步骤如下,首先找到配置的位置:
  往下拉找到PublishOverSSH,然后点击新增,开始配置,Hostname位置填写你服务器的域名或者IP:
  配置成功后,点击测试连接进行测试,确保连接是成功的。
  有的小伙伴反馈这里用户名密码会导致jar包上传失败,要在应用服务器上生成ssh密钥对,然后将私钥配置给Jenkins(这块大家结合自己情况来看,如果后面jar上传失败,可以回来改一下这里)。6。5。2Gitee的信息
  接下来我们配置Gitee的信息。
  首先配置仓库的基本信息:
  接下来配置Gitee的凭证,要根据这些凭证,才能从Gitee上拉取代码下来,点击添加Jenkins,添加凭证:
  添加成功之后,就可以选择这个令牌了。
  最后点击测试连接,确保可以连上Gitee。
  所有配置工作都做完了,接下来我们就可以开始构建一个项目了。7。开始一个项目的构建
  首先我们新建一个任务
  接下来我们选择构建一个Maven项目
  点击确定之后,拉到源码管理位置,开始配置。
  首先选择Git,填入Gitee上的仓库地址,然后凭证就写Gitee的用户名密码。
  这里有一个需要注意的地方,就是默认的分支名称,GitHub上现在默认的主分支名称是main,Gitee似乎还是master,这个无所谓了,但是小伙伴们注意图片下面的分支,按你实际的情况填写。
  这里也要添加凭证信息:
  这里也要注意下,有小伙伴反馈Gitee上的用户名和用户空间不是一回事(如果用的GitHub就不存在这个问题),我这里用户名位置实际填入用户空间名(如果你也不知道什么是用户空间,那么恭喜你,直接写用户名就行了)。
  加上时间,我们看下打印的过程:
  接下来输入项目构建命令,将来Jenkins从Gitee上拉取代码下来之后,就执行该命令对项目进行打包:
  最后,配置上传构建好的文件,并执行启动命令,如下:
  配置的详细信息:
  根据上图的配置,我们使用root用户登录,root登录成功之后,默认进入到root目录下,接下来会自动进入到data目录,然后我们的jar包就上传到这个位置上。
  然后我们在应用服务器上也提前准备好一个shell脚本叫做deploy。sh,位于rootdata目录下,这个脚本内容如下:exportJAVAHOMEoptjavaexportPATHJAVAHOMEbin:PATHJARPATHrootdataJARFILEjenkinsdemo0。0。1SNAPSHOT。jarpsefgrepJARFILEgrepvgrepawk{print2}xargskill9javajarJARPATHJARFILEout。logif〔?0〕;thensleep30tailn50out。logfi
  这个脚本其实很好理解,前面先配置一下环境变量,注意这个是应用服务器的环境变量,不是Jenkins的。
  然后先检查一下,如果应用程序已经在运行了,就先将之停止掉。然后运行我们最新的jar即可。
  另外,可以开启SSH操作日志,开启日志之后,就可以看到Jenkins中操作应用服务器其的过程了,特别是大家第一次配置的时候,容易出错,配置了日志,将来出错就知道什么原因导致的错误了。
  配置方式如下图:
  至此,这个项目就配置完成了。
  保存之后,点击立即构建按钮,就可以开始构建了:
  开始构建之后,可以点击构建按钮,查看构建过程:
  点击控制台输出,可以查看整个构建过程:
  构建完成后,来到应用服务器,执行jps命令查看运行的Java进程,就可以看到我们的应用程序已经跑起来了。8。自动构建
  好了,现在我们的项目还不是自动构建,也就是当我们向Gitee上的代码仓库提交代码之后,并不会触发Jenkins的自动构建,得我们手动点击构建按钮,接下来我们再来继续配置,实现自动触发构建。
  为了实现自动触发构建,我们需要修改两个地方。8。1修改Jenkins
  首先在Jenkins的当前项目中,配置一下触发构建的规则:
  大家注意,在网页上Jenkins已经给出了将来要配置的Webhook的地址了,大家直接拷贝该地址即可。8。2配置Webhook
  接下来在Gitee的项目中,配置WebHook,在当前项目中,选择管理选项卡,左边菜单点击WebHooks,然后点击添加WebHook。
  由于Jenkins是要登录之后才可以操作的,处于公网的Jenkins我们也不能降至设置为匿名访问,所以这里我们将Jenkins的用户名密码放在请求地址中,最终地址类似这样:http:username:password11。11。11。11:8088xxxx。
  好啦,这就行了,配置完成后,接下来我们向Gitee代码仓库提交代码,提交成功之后,我们去查看是否会触发Jenkins自动构建功能。9。小结
  好啦,关于Jenkins还有很多好玩的用法,今天的文章限于篇幅我就先通过一个简单的案例来和大家分享一下Jenkins的基本用法,以便于小伙伴们对Jenkins建立一个直观的印象,更多的玩法,松哥将在后续的文章中和大家继续介绍,小伙伴们也可以留言说说你想看Jenkins怎么玩。
  参考资料:https:www。redhat。comzhtopicsdevopswhatiscicd

戴维斯3810詹姆斯25分湖人复仇轻取公牛!NBA常规赛3月30日继续进行,最终,湖人以121110战胜公牛。凭借本场胜利,湖人以38胜38负升至西部第八。首节开始,湖人上来全队皆有得分轰出2710的开局!武切维奇……近期表现出色的姚迪为什么经常被黑被喷昨天又看到好几条黑姚迪,喷姚迪的帖子。实在是让人想不明白,姚迪在意大利联赛过半的时候,中途加入意大利女排联赛排名第二的斯坎迪奇,很快的融入球队,先是在欧联杯首发,在与队友……英超富勒姆VS切尔西,西超杯贝蒂斯VS巴萨英超:富勒姆VS切尔西赛事解析:富勒姆本赛季重回英超联赛后竞技状态一路走高,18轮联赛过后排名积分榜第7位,其中进攻端打进30粒进球,破门能力除了阿森纳和曼城不比其他豪门……噶腰子让王牌怎么打成烂牌,泰国旅游还能吸引国人吗泰国凭着景色优美,价格便宜吸引不少国人去旅游。疫情刚放开时候,,在多个国家依旧歧视排挤强硬制定疫情政策对中国时候,泰国先开国门欢迎中国游客。但是没过多久,负面消息一直传来……广州需更多企业作为中介把大学创新能力发挥出来马向明作为参与过广州许多重要规划项目编制和咨询的技术专家,广东省城乡规划设计研究院总工程师马向明非常熟悉广州发展的现状,也一直都在关注和思考广州未来城市的发展战略。……大学生三天两夜600元穷游武汉,千名网友加微信求功略最近,20岁的小文(化名)在个人社交账号上发布一篇大二学生穷游武汉三天两夜全包600的推文火了,点赞量超4。5万,留言超过4200条。3月23日晚,当小文打开社交账号发现,后台……随笔1、老人健康标准,吃得饭,走得路。2、老年父母,过山夕阳,守望地平线之上。3、妻室儿女,终身斯守,千般珍惜。4、当今社会,不尽人意,守着底线,少管闲事。……跨境人运营和选品工具推荐在之前的文章中,我为大家推荐了几款个人认为比较好用的亚马逊选品工具,今天,小编就再为大家推荐几款运营必备的工具(不限亚马逊)。Keepa这也是一款比较知名亚马逊的工……科普人工智能的发展历程科技之巅人工智能(ArtificialIntelligence,简称AI)的发展可以追溯到上世纪50年代。当时,科学家们开始尝试模拟人类思维和行为,并使用机器来执行某些任……即将恢复699元,魅族20系列手机36个月质保服务包上线IT之家2月28日消息,作为如今最受关注的智能手机之一,魅族20系列发布时间逐渐临近。目前,魅族商城已上线魅族20系列36个月质保服务包。从魅族商城页面来看,魅族20系列……热线回音丨泰安居民的养老保险可以补档吗?省里早已明确记者梁莹莹城乡居民养老保险事关百姓的民生福祉。泰安居民的养老保险可以补档吗?该如何操作?有市民针对养老保险补档问题进行了咨询。该市民介绍,他的母亲今年55岁,自20……乒超大结局!孙颖莎樊振东MVP,王曼昱陈幸同卫冕,马龙成功夺乒超大结局!孙颖莎樊振东MVP,王曼昱陈幸同卫冕,马龙成功夺冠。2022年乒超联赛已经落下帷幕了,女团王曼昱和陈幸同领衔山东鲁能以32险胜深圳大学,成功卫冕,孙颖莎则是当选女团……
走长征路骑行穿越茫茫水草地《沈涛走中国》摄影选集红军长征线路篇(7)过草地红军过草地十分悲壮,茫茫沼泽、雨雪相交,饥寒难耐,当年是生命禁区、死亡陷阱。交通发达的今天,作者沿红军走过的若……妙创案例丨乘坐时光火车,像小暴龙巴迪一样探索世界虽然孩子们不能像巴迪一样,乘坐恐龙火车穿梭于恐龙时代去冒险,但是他们可以在恐龙火车幻化的时光火车乐园里,去探索这个世界的奇妙与神秘,去寻找游戏与运动的乐趣!妙创时光火车乐……从签约到动工仅用4个月,塘厦这两个重大项目摘牌动工12月7日,东莞市2022年第四季度重大项目观摩活动暨动工仪式在塘厦镇举行。其中,塘厦镇临深新一代电子信息产业基地新引进并顺利完成摘牌的理士新能源、坚朗智能家居安防两个项目动工……保姆级黑群晖安装教程,绿色环保,让闲置的电脑变身NASHi,大家好,相信大多数人都有存储文件需求,不管是电影或者相片资料,各种各样的网盘相信你也用过不少吧,但是网盘的资料终究不是掌握在自己手中,只要你把资料上传到网络上,那么资源所……千万别花钱,陪李一男做造车梦出品虎嗅汽车组作者张博文2015年6月,李一男所创办的牛电科技发布了旗下首款产品小牛智能电动踏板车N1,售价区间3999元4999元,比当时市面上常规的电单车贵出一……官翻机再上架,华为5G麒麟9000鸿蒙,mate40p,王者12月1日,据相关爆料,华为商城重新上架了华为Mate40Pro5G版,该机为华为官方翻新产品,新机将在12月2日20:00开售,有8GB128G与8GB256GB版本可选,售……老祖宗的十句经典语录分享和自我理解一:慈不掌兵,义不掌财孙子曾言:厚而不能使,爱而不能令,乱而不能治,譬若骄子,不可用也。你让一个弱懦的人去带兵打仗,那么就是将熊熊一窝。很多人的失败都是因为在……推动量子技术发展的大师方程式通用测量和反馈设置的图示,由开放量子系统和具有有限带宽的探测器组成。探测器连续测量可观察的任意系统。测量强度决定了测量回作用。使用测量结果D应用连续反馈来控制系统的Liouvi……李春江了却心愿!儿子李京龙2年前未婚生娃,如今终于抱得美人归近日有媒体关注到了一桩喜事,李春江儿子的教练李京龙终于结婚了。在CBA这个大联盟里,李春江教练的地位不可撼动,他在执教广东宏远12年的时间里,帮助广东队拿下了7个总冠军的荣誉,……小米日子过得不好,但我还有救小米的三季报里,依然没有太多好消息。最核心的指标,营收和净利润在连续三个季度的下滑之后,净利润已经跌成负数三季度净亏损14。7亿元。以小米的出货量简单计算,大约每卖一部手……加强模拟的更大价值给真实机器人一双灵巧的手人类的手是数百万年进化过程中最了不起的成果之一。我们能够拿起各种物体并将它们作为工具使用,这是我们与其他动物的最大区别之一,这也使我们能够改变周围的世界。要想让机器人在人……三大顶级游资豪买5。41个亿,平安银行的春天要来了?记者龙力编辑11月29日,银行股大爆,板块整体涨幅高达3。5,平安银行(000001。SZ)在一众银行股中脱颖而出,收盘大涨9。99,全天成交60。26亿元。……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网