全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Jenkins持续集成详细教程

发布时间:2022-06-02 18:46:00
发布人:qyf

  一:什么是Jeckins?

  Jenkins是一个可扩展的持续集成引擎。

  持续集成,就是通常所说的CI(Continues Integration),可以说是现代软件技术开发的基础。

  持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也意味着每天可能会发生多次集成。

  每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

  Jenkins作用:

  1、持续、自动地构建、测试软件项目。

  2、监控一些定时执行的任务。

  Jenkins的目的:

  Jenkins 主要是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。

  CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题

  二:Jenkins架构

图片72


  在上面这个分布式的构建环境中,Jenkins master主要负责如下:

  接收构建触发(比如,一个提交到GitHub后)

  发送通知(比如,在构建失败后,发送email或者HipChat消息)

  处理HTTP请求(和客户端进行交互)

  管理构建环境(在slave编排工作执行)

  由于master和slave负责不相同的,所以他们请求不同的环境。

  Master: 往往是专用的主机,项目从小到大需要内存200 MB--- 70 GB.

  Slave: 没有特别的要求,它应该能够执行单一的构建。比如:这个项目比较大的话,请求100GB的内存,那么该slave主机应该满足项目的要求。

  三:Jenkins的安装和部署

  jenkins官网下载地址:https://jenkins.io/download/ 目前版本:2.277.4

  jenkins项目有两条发布线,分别是LTS长期支持版(或稳定版)和每周更新版(最新版)。建议选择LTS长期支持版,下载通用java项目war包。

  下载jdk1.8以上版本并安装,安装后配置jdk的环境变量。

  在dos命令行运行命令解压war包:java -jar jenkins.war (默认情况下端口是8080.如果要使用其他端口启动,可以通过命令行”java –jar Jenkins.war --httpPort=80”的方式修改)

  运行命令后jenkins.war会自动在C盘目录下生成一个jenkins的文件夹。C盘下的这个文件夹可独立运行。

  在浏览器中访问jenkins项目:http://localhost:8080/jenkins 出现解锁 Jenkins界面,说明jenkins项目搭建完成,这里需要输入管理员密码。

  管理员密码在:C:\jenkins\secrets\initialAdminPassword 打开此文件获得密码并输入密码,点击”继续”

  点击:【选择插件来安装】按钮,出现如下默认插件安装界面。

  这个页面会默认选中安装一些插件,直接点击”安装”按钮,安装所有推荐的插件。

  等待所有插件安装完成(耐心等待1-2个小时)。安装插件的时候,会有一些插件安装失败(如上图的X),这些插件的安装是有前置条件的,等安装结束后,按右下角“重试”,继续安装,之前失败的插件就都能安装了。安装完成后,点击“继续”按钮,

  输入用户名:admin,密码:123456.确认密码:123456.全名:admin,电子邮件地址后点“保存并完成”按钮

  点击“保存并完成”出现下图表示jenkins已经配置完成。点击[开始使用jenkins]登录。

  四:jenkins持续集成

  1:全局配置

  成功初始化后接下来需要做一些相应的全局的工具配置,点击首页左边菜单的Manage Jenkins,然后再点击Global Tool Configuration选项。

图片73

  在以下的页面中设置好Maven、JDK、Git的相关配置信息。需要注意的是,在JDK配置中取消勾选Install automatically,也就是不自动下载jdk,而是手动指定JAVA_HOME的路径。

图片74

  在下面Maven安装的选项中指定Maven的安装路径

图片75

  2. 创建任务

  点击首页的新建Item或者创建一个新任务。

图片88

  在跳转的页面中输入任务名称(这里创建一个helloworld任务用于演示)。然后选择自由风格的的任务,最后点解确定按钮。

图片76

  3. 配置任务

  在创建好任务之后,会来到任务的配置页面,下面将演示如何对任务进行一些常规的配置。

  General配置

图片77

  描述:填写构建的描述信息。

  Discard old builds:勾选,表示丢弃就的构建,并填写丢弃策略的保持构建天数和保持构建的最大个数。

  GitHub项目:勾选,填写github的项目地址。

  源码管理

图片78

  源码管理可选择git或svn。由于案例是托管在github上,因此这里选择Git,需要注意的是,如果使用ssh加密通信,需要在本地使用ssh-keygen生成秘钥对,然后将私钥配置到jenkins,把公钥配置到github上。

  点击添加按钮

图片79

  在弹出的子窗口中,类型选择SSH Username with private key,然后填写Username(随意),勾选Enter directly,在Key的文本域中加入私有key的秘钥串,然后点击最下面的添加。

图片80

  构建环境

  构建环境中勾选Delete workspace before build starts(开始构建之前删除工作空间)

图片81

  构建

  在构建这一项中选择构建步骤,由于案例是一个Maven项目,因此这里选择使用Maven来进行构建。点击添加构建步骤,在下拉菜单中选择Invoke top-level Maven targets。

图片82

  然后选择maven版本,目标出填写Maven声明周期命令,这里设置为执行清理后进行打包,并忽略单元测试。

图片83

  自动部署

  前面的配置已经基本完成了项目的自动构建,通常在构建完之后需要将项目进行部署,那么同样可以让Jenkins来完成项目的自动部署。在自动部署的时候,应先停止原有的应用进程然后重新启动,这些操作可以使用shell脚本来完成。

  在构建的选项中再次点击增加构建步骤,选择Execute shell

图片84

  在命令中添加sheel脚本

  # #!/bin/bash表示使用系统的bash

  #!/bin/bash

  echo"Restart SpringBootApplication..."

  # 获取demo.jar的后台进程id,并赋值给变量pid

  # ps用于显示进程信息的命令,-ef参数表示显示所有进程和全部格式

  # “|”是一个管道符号,表示ps和grep命令同时执行

  # grep是linux的一个文本搜索工具

  # grep demo.jar表示查找内容包含demo.jar的进程信息

  # grep -v grep表示反向查找,查找不包含grep的内容的进程信息(也就是进行一次过滤)

  # awk是一个强大的文本分析工具,分析并生成报告。'{print $2}'表示打印出第二个字段

  pid=`ps -ef | grep demo.jar | grep -v grep | awk '{print $2}'`

  # 如果pid不为“”,则kill掉该进程

  if[-n"$pid"]

  then

  kill-9$pid

  fi

  # Jenkins默认会在Build结束后Kill掉所有的衍生进程,

  # BUILD_ID=DONTKILLME就是防止jenkins杀掉衍生的子进程

  BUILD_ID=DONTKILLME

  # 后台启动demo.jar,2>&1表示将标准出错也输出到springboot.log文件中,最后一个&表示该命令在后台执行

  nohup java-jar/root/.jenkins/workspace/helloworld/target/demo.jar > /root/springboot.log2>&1 &

  最后点击应用并保存,此时任务的配置就基本完成。

  4. 执行任务

  回到首页,在任务列表中可以看到刚配置好的任务,点击任务名称旁边的下拉箭头,选择Build Now开始执行任务。

图片85

  此时在左下角的构建执行状态中会有一个helloworld任务执行的进度条。

图片86

  旁边的#1表示第几次构建,如果执行完后再次点击Build Now,那么又会产生一条新的构建记录为#2.可以点击#1进去查控制台输出任务执行日志。

图片87

  最后,当任务正确执行完后,我们就可以正常访问项目。以后每当我们有新的版本提交到github,那么只需要在任务列表中点击Build Now来执行构建任务。那么jenkins会自动从github上拉取最新的版本,接着使用Maven将项目进行编译打包等操作,然后通过shell脚本自动部署项目。

  更多关于软件测试培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。

相关文章

企业抖音小店保证金是多少

企业抖音小店保证金是多少

2023-10-08
抖音怎么弄抖音小店店铺

抖音怎么弄抖音小店店铺

2023-10-08
抖音小店怎么设置新人券领不到

抖音小店怎么设置新人券领不到

2023-10-08
开通抖音小店的保证金在哪里退

开通抖音小店的保证金在哪里退

2023-10-08

最新文章

上海物联网培训一般费用多少

上海物联网培训一般费用多少

2023-09-12
北京物联网培训费用大概多少

北京物联网培训费用大概多少

2023-09-12
北京物联网培训需要费用高不高

北京物联网培训需要费用高不高

2023-09-12
上海效果好的物联网培训费用高吗

上海效果好的物联网培训费用高吗

2023-09-12
在线咨询 免费试学 教程领取