什么是Jenkins?Jenkins有什么用?
按照我个人的理解,Jenkins就是一个很简单实现自动化工具,按照了Jenkins你就可以拥有一个类似小爱同学一样的管家,你可以通过你的手机步骤一个任务给你的小爱同学,例如打开王者荣耀,然后等个五分钟再给他关了。那小爱同学在这里起到的作用就是打开王者荣耀,关闭王者荣耀,这里的前提是你的手机本来就有王者荣耀。所以类比成Jenkins你在你的电脑部署了Jenkins不代表你这个Jenkins就可以执行你git仓库里的代码,能不能执行还得看你部署Jenkins的这台电脑有没有这个环境去运行代码的,所以不要理解错了Jenkins只是一个自动化执行的管家。
你为什么要用Jenkins?
这里先说一下我的项目背景,我写了一个pytest的框架,然后呢?运行这些测试用例呢,都是在本地运行的,例如像下面这样,我要执行这个测试用例那我就点击这个文件运行一下,然后查看测试结果,那么有一天呢,我想实现当我提交到git上去的时候,有个东西可以检测到我提交代码了,你知道的提交代码了,或者是我更改了测试用例,那么我都要运行一下测试用例,那每次都要这样是很不方便的,而且还得拿着电脑去运行。那么有没有一种情况可以解决这个事情呢?有的Jenkins就可以做到。
Jenkins是怎么做到自动化运行的效果的呢?
这里讲一下我用Jenkins坐了什么?我利用Jenkins创建了一个自动化任务,这个任务首先会从我填写好的git地址去拉取git代码,然后再运行我指定的文件,再用allure生成测试报告,那我们创建了这个Jenkins自动化任务,那肯定要有触发条件,Jenkins可以触发的条件有很多后面可以去了解一下,我这里用的触发条件是轮询。啥意思呢?就是隔一段时间就会去检测一下我git仓库有没有更新,例如我设置两分钟,两分钟过后查询一遍,更新了好那我就执行运行这个指定的文件,没更新也不触发运行。
实际操作
前期准备:
Java jdk17
Jenkins.war
git(本地,打开cmd输入git有一大串出来)
git(Jenkins上的git插件)
allure 2.13.2(旧版)(本地,打开cmd输入allure有一大串出来)
allure.hpi 2.13.2(Jenkins的安装的插件)
初次启动Jenkins:
这里我是把Jenkins的war包放在这里:
下面这个命令呢?就是进入到Jenkins所在的目录;
cd D:\Jenkins
下面这个命令,就是用Java启动Jenkins,初次运行这个命令的时候Jenkins启动的时候会给你一串像乱码一样的很显眼的一串字母,这个就是初次登录的密码了,用户名就是admin:
java -jar jenkins.war
Jenkins的登录:
浏览器访问已经启动的Jenkins,这个访问就在本地的8080端口,启动的时候可以看见启动在哪个端口。浏览器直接输入下面这个地址就好了;
http://127.0.0.1:8080
访问这个地址之后就可以看见下面这个页面,把密码粘贴进去,点击继续就可以了;
Jenkins的初步设置:
然后就进入插件安装页面了,这里选择选择插件来安装,不选推荐,有点绕哦,右边这个;
自己选择的话直接点无就行了,我们要安装插件,但是我们不在这里进行安装, 直接点无,然后点击安装就好了。这样的话刷的一下就进入下一步了。
然后进入创建用户页面这里不创建账号直接使用他默认的用户和密码就行,不自己创建了,要创建也可以,但是就原有给你生成的账号和密码你就用不了;
实例配置,点击现在不要,跳过步骤就行了。
Jenkins安装git插件:
进入首页之后点击manage Jenkins,点这个干啥,安装插件嘛,刚刚啥也没装,我这个项目需要两个插件一个git(从仓库拉取代码),一个allure(把运行的测试结果生成报告);
再点击pluging
点击进来这里 再点击available plugins 可用的插件,那我这里只需要git和allure,allure不采取在这里安装,因为在这里安装的allure太新了会有问题,,搜完git打勾再点击右上角的install就好了,下面我单独说一下怎么安装这个allure;
Jenkins安装allure插件:
上面安装好了之后,我们来安装allure这个家伙坑得很,我们先把安装包 下一下:
点击这个网站:Index of /plugins/allure-jenkins-plugin/latest;下载红圈这个版本;
还是这个页面点击这个大红圈,再把allure的hpi旧版本安装包选择上,然后点击那个deloy就可以了,后续会提醒你更新这个插件,不要更新哈,新版的allure插件在构建这个Jenkins任务的时候,按道理在后置操作可以看见allure report,但是新版就是看不见。所以不要更新!!
那我们本地的allure要不要降级版本呢?我建议还是降级成allure 2.13.2吧,咋安装和配置看文章啦;
Allure 的安装与使用_python allure安装-CSDN博客
下面这个是下载的地址:
Central Repository: io/qameta/allure/allure-commandline/2.13.2
配置Jenkins的allure插件
上面的allure安装好了之后,我们就可以去配置一下allure了,正常是不用配置的,因为allure比较特殊,所以我们还得给他配置一个相对路径,点击红圈tool来配置一下,点进去就可以看见我们按照的git插件和allure插件,git不用配置,我们来配置一下allure;
点进来如图所示,可以看见git和allure,点击设置allure
点击完可以看见下面我已经配置好了,这里要我们输入的有两个地方,一个是名字随便起,我叫allure,你是奶龙吗?最重要的是这个installation directory,这个目录怎么来的,看好了,因为的你本地的allure已经配置在环境变量里了,所以我们随便在哪个地方打开cmd,输入where allure,就会输出路径了,我们只需要复制下来这个路径就可以了,切记只需要复制我光标选中的,不要带上bin目录,因为带上bin目录就找不到allure了,好了,现在配置完成之后就点击save保存一下就好了;
创建Jenkins自动化任务:
这些都安装好了,下面就可以创建一个Jenkins自动化任务来看看,回来首页点击New item,
输入名字我这里叫插件测试,然后再点击这个freestyle project就好了,再点击OK;
点击进来先把考右边这个目录讲一下,可以看见general这个就是填写你这个项目的描述,再看见这个source code我们就可以配置git代码的仓库的地址,这样Jenkins就可以拉取我们推送到git的代码了,然后就是triggers触发器这里可以设置触发的模式,然后environment环境,然后就是build steps就可以构建我们运行的代码,到底是要执行拉取下来的哪个文件阿,这些;然后就是这个post-bulid Action,就是在你的build steps这些步骤执行完毕后再执行的操作,通常是用来生成一些allure报告阿,或者是邮箱通知什么的,我这里主要是用来生成allure报告的,好了这里讲解完毕开始展示我的实际操作;
首先是我什么描述也没写,掠过,你这里可以写你这个Jenkins自动化任务是来干嘛的;
然后就是source code management,这里配置了一个git仓库地址,啊对我自己的仓库地址,你可能会说欸,大锅,你Jenkins拉取这个仓库不用密钥什么乱七八糟的直接就可以拉吗?傻孩子,Jenkins其实也是在你的电脑本地运行的,你的电脑之前配置过git密钥,不知道密钥怎么配的看另外一篇文章,那Jenkins在你的电脑上运行,你能拉,Jenkins肯定也能拉了嘛;
下面就是triggers触发器,environment环境,这里一起讲了,我选择的是poll scm轮询然后我配置了参数H/5 *****,意思就是五分钟检测一下我的git账号有没有更新有的话就执行这个任务,你要是不知道参数怎么配的话,你可以点击poll scm旁边的小问号,官方会教你怎么配!environment环境不用管;
最最最重要的步骤来了,build step,首先是要选择你要执行的命令,我选择的红圈的,因为我的Jenkins是部署在window上的,要是你的Jenkins部署在Linux你就选择execute shell;然后的话可以看见我这里配置了两个命令,下面单独讲解一下这两个命令怎么回事;
首先是:cd testcase1,很简单就是进入testcase1这个目录,看一下我的git仓库,哇,我的自动化框架分层这么优秀吗?额,是的,但是这个不是重点,现在我们的大脑跟着我一起思考,你现在的大脑是空空的,新建一个文件夹叫插件测试,这个文件是不是空空的,那当Jenkins通过拉取我这个仓库的代码的时候,就会把我下面我仓库的代码这里的一整摞放到这个叫插件测试的文件夹,然后现在你大脑这个插件测试的文件夹就多了一个po层啊,config层这些全部都是我git仓库的文件嘛,那你可能会说拉取下来的应该是这样的Jenkins/ui-auto,应该会有我git仓库的项目名称,孩子不要想太多,并不会,而且直接把这一大摞放进去就OK了;
好,有了上面的理解你终于知道了Jenkins是怎么操作的,看下面的图片,Jenkins会在一个目录下创建这个下面,名字就叫插件测试,为什么叫这个名字不叫别的,那是因为你项目命名就叫这个,那所谓的这个build step,就是在这个文件夹打开cmd命令行,然后去输入你build step的命令,首先输入第一行命令就是这个cd testcase1嘛;执行完成又执行下一个命令;
现在来讲一下 pytest test_main.py --alluredir=allure-results 这个命令,你看上面的那个命令执行完就进入到了testcase1这个目录,那我这个命令继续输入执行,就是去运行的测试用例同时去生成allure的测试报告结果嘛,这里讲解一下allure报告的生成,首先我们用allure运行测试用例的时候会先生成一份测试结果,就是allure-result,然后有了这个我们才能生成一份allure的report
这个report就是我们后面看见的HTML页面了,呐,所以我这里执行完测试用例的代码之后生成了一个 --alluredir=allure-results,那我们生成的这个result是在哪个目录下很重要,为什么如果我们要生成测试报告HTML页面就需要这里的result结果
通过命令我们可以知道,我们先是进入的testcase1目录,然后又在这个目录底下执行生成allure-results,所以生成的allure-results就是在这个testcase1底下了,那如果你想把结果生成在其他目录底下你也可以修改你的运行代码为这样,例如我想他生成在allure_data目录下的allure_result可以吗?当然可以那怎么改pytest test_main.py --alluredir=allure_data\allure_results这样改就可以啦;
好,下面讲一下后置操作也就是生成allure报告的操作,点击这个add 后置操作然后选择allure report就好了;
可以看见这里要填写allure-result的地址,根据上面的build step命令我们已经成功生成了一份allure_result结果在testcase1\allure-result的目录下,所以我这里填的testcase1/allure-result,
那为什么要填testcase1\allure-result,为什么不是ui-aoto/testcase1/allure-result,或者是其他的地址呢?因为allure生成报告会需要这个result结果才能生成报告,强调很多次是因为我踩了很多坑,那我来模拟一下Jenkins是怎么找这个文件的,例如你这里填的是testcase1\allure-result,那它就会直接在它之前拉取代码创建的测试插件这个文件夹直接找,所以呢相对于这个测试插件的文件夹这个生成的结果就是在testcase1\allure-result的文件夹下。
根据上面的build step命令我们已经成功生成了一份allure_result结果在testcase1\allure-result的目录下,所以这里的
上面的说完了,你看我填写的路径确实如下,好,现在我们来看看advanced这个红框,这个你可以不用管,这样配置完一保存你就可以看见allure报告了,但是我得讲解一下这个蓝色箭头的指示标;
点击这个蓝色箭头指的方框之后,可以看见以下内容,关注一下这个红色框框,下面它自动给你生成了一个路径参数叫allure-report,意思就是告诉你它会在这个路径生成报告,具体在哪里呢?就在插件测试这个文件夹下面就是了,通过我上面的讲解你肯定知道这个路径是相对于我们起的这个文件名字来说的,那么这个文件就应该在插件测试/allure-report,就直接在这个目录下啦;
那如果你想换放置allure报告的地方,当然可以的你更改这个路径就可以了,例如你改成data/allure-report,那么就会在插件测试这个文件夹下先创建一个data再创建一个allure-report放置report了;
好上面零零散散说了一大堆,终于可以保存我们这个Jenkins自动化的测试任务了,点击Sava保存;
执行Jenkins自动化任务:
那保存以后我们可以立即执行一下我们这个Jenkins自动化任务看看,点那个build now,或者是你不是设置了轮询吗?例如你设置的轮询是2分钟,那你把你的本地代码改一下,再推送到git上去,最晚两分钟你的Jenkins检测到你的git仓库更新之后就直接运行了;然后你要是配置错了想重新配置一下这个自动化任务,那你就点击那个configure就好了,修改完记得保存!