一:什么是Jeckins?
Jenkins是一个可扩展的持续集成引擎。
持续集成,就是通常所说的CI(Continues Integration),可以说是现代软件技术开发的基础。
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也意味着每天可能会发生多次集成。
每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
Jenkins作用:
1、持续、自动地构建、测试软件项目。
2、监控一些定时执行的任务。
Jenkins的目的:
Jenkins 主要是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。
CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题
二:Jenkins架构
在上面这个分布式的构建环境中,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选项。
在以下的页面中设置好Maven、JDK、Git的相关配置信息。需要注意的是,在JDK配置中取消勾选Install automatically,也就是不自动下载jdk,而是手动指定JAVA_HOME的路径。
在下面Maven安装的选项中指定Maven的安装路径
2. 创建任务
点击首页的新建Item或者创建一个新任务。
在跳转的页面中输入任务名称(这里创建一个helloworld任务用于演示)。然后选择自由风格的的任务,最后点解确定按钮。
3. 配置任务
在创建好任务之后,会来到任务的配置页面,下面将演示如何对任务进行一些常规的配置。
General配置
描述:填写构建的描述信息。
Discard old builds:勾选,表示丢弃就的构建,并填写丢弃策略的保持构建天数和保持构建的最大个数。
GitHub项目:勾选,填写github的项目地址。
源码管理
源码管理可选择git或svn。由于案例是托管在github上,因此这里选择Git,需要注意的是,如果使用ssh加密通信,需要在本地使用ssh-keygen生成秘钥对,然后将私钥配置到jenkins,把公钥配置到github上。
点击添加按钮
在弹出的子窗口中,类型选择SSH Username with private key,然后填写Username(随意),勾选Enter directly,在Key的文本域中加入私有key的秘钥串,然后点击最下面的添加。
构建环境
构建环境中勾选Delete workspace before build starts(开始构建之前删除工作空间)
构建
在构建这一项中选择构建步骤,由于案例是一个Maven项目,因此这里选择使用Maven来进行构建。点击添加构建步骤,在下拉菜单中选择Invoke top-level Maven targets。
然后选择maven版本,目标出填写Maven声明周期命令,这里设置为执行清理后进行打包,并忽略单元测试。
自动部署
前面的配置已经基本完成了项目的自动构建,通常在构建完之后需要将项目进行部署,那么同样可以让Jenkins来完成项目的自动部署。在自动部署的时候,应先停止原有的应用进程然后重新启动,这些操作可以使用shell脚本来完成。
在构建的选项中再次点击增加构建步骤,选择Execute shell
在命令中添加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开始执行任务。
此时在左下角的构建执行状态中会有一个helloworld任务执行的进度条。
旁边的#1表示第几次构建,如果执行完后再次点击Build Now,那么又会产生一条新的构建记录为#2.可以点击#1进去查控制台输出任务执行日志。
最后,当任务正确执行完后,我们就可以正常访问项目。以后每当我们有新的版本提交到github,那么只需要在任务列表中点击Build Now来执行构建任务。那么jenkins会自动从github上拉取最新的版本,接着使用Maven将项目进行编译打包等操作,然后通过shell脚本自动部署项目。
更多关于软件测试培训的问题,欢迎咨询千锋教育在线强师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖强师,让你轻松从入门到精通。
相关文章
关注千锋学习站小程序
随时随地免费学习课程
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱