Jenkins持续集成

237 阅读5分钟

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」。

前言

温馨提示:在框架需要集成jenkins的时候,一定要注意环境切换问题,如果jenkins和开发环境是同样的系统且都有python环境,基本不用太担心代码的移植问题,如果是跨平台了,那么需要注意了,框架代码中涉及文件路径的问题需要兼容一下,因为可能在执行代码的时候会报提示找不到文件的错误。写好的代码是采用何种工具托管的,如:SVN、Git等,这个没有硬性要求;从代码安全上考虑,一般建议搭建本地svn或gitlab服务器作为代码托管仓库,否则基本都选择码云或其他代码仓库,题主选择github作为代码托管仓库。

Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成.

---- 摘自百度百科

环境搭建

这个略显简单,讲几种启动服务的方法吧:先下载jenkins.war安装包或docker pull jenkins镜像

  • 第一种启动方式:java -jar jenkins.war # --httpPort=8081指定服务端口
  • 第二种方式呢,就是容器部署,如部署tomcat、jboss等,然后启动容器;
  • 第三种方式:docker run -u root -p 8080:8080 -v /data/jenkins:/etc/jenkins -d jenkins/blueocean 在这里插入图片描述

插件准备

插件需要哪些呢?出了默认的,其他按需安装,题主在这里给推荐一些:

  • 首先是跟代码仓库相关的git的插件,要配置服务器及job中使用;
  • 然后是jenkins集成的html报告插件:HTML Publisher 或者 Allure;
  • 可选插件:mail发送邮件相关插件、有钉钉DingTalk;
  • 当然还有更多好用的插件,如参数化、触发器等等。

创建job

在这里插入图片描述

  • 源码管理;git需要现在系统管理--系统配置中配置服务器 在这里插入图片描述
  • 配置github服务器只需要secret,而在jobs的git源码管理需要帐号和密钥 在这里插入图片描述
  • 构建:这里需要关注jenkins服务器和执行程序服务器是否一致,否则可能需要over ssh插件去目标服务器执行程序:python3 mainByUnittest.py 在这里插入图片描述
  • 构建后操作:当然是html报告展示和发送邮件/消息 在这里插入图片描述
  • 构建job,执行脚本看结果 在这里插入图片描述
  • 可以点击左侧的构建id查看控制台输出日志⬇⬇⬇ 在这里插入图片描述

小结

整体的框架与jenkins集成已经完成了搭建工作,剩下的就是对细节的一些处理,大多数同学会在初次搭建过程中遇到各种各样的问题,比如:git拉取不到代码?执行py脚本报错:不支持中文编码?报告生成NaN%?报告无法正确展示、样式错误等问题?

虽然这些问题,题主都遇到过了,也有对应的解决办法,但是这里就不贴出来了,因为有可能在你那就失效了,有时候同学遇到问题就找我寻求解决办法,题主也需要时间和精力去解决,然后可能的情况就是束手无策,为啥?就因为咱们的环境不一样,题主的办法解决不了;说的是有可能会这样。

构建策略

如果是稳定的项目,建议采用定时构建,因为可以实时监控项目的健康状态,如果项目还处于开发测试阶段,那么建议被动触发构建,因为每次提交新的代码都可以执行测试,避免在测试完之后才发现问题,而是将问题提前暴露,在提测的时候就应该检查代码是否会影响之前已经测试通过的测试用例。

  • 定时构建:注意cron表达式的写法 在这里插入图片描述
  • 被动构建:这种情况一般两种选择:一种依赖jenkins的其他job,另一种就是git被动触发;

定时触发构建就是主动,被动触发构建呢,就得有先决条件,比如是某个项目构建了,那好,我等他构建完了,我就构建,再比如git有提交新代码了,被通知可以构建了。 在这里插入图片描述

报告展示

这里报告只演示两种HTML Publisher和allure样式的html报告

  • jenkins先配置allure插件:系统管理--全局工具配置--allure命令,需要指定工具版本,如果不确定版本,可以先在开发环境:allure --version获取版本,保持环境一致: 在这里插入图片描述
  • allure report 这里输入的目录是pytest --alluredir 后面的allure-results目录; 在这里插入图片描述
  • allure效果演示如下: 在这里插入图片描述
  • HTML报告效果展示 在这里插入图片描述

扩展

最后对于执行测试之后的结果通知:无论是结果通知还是发送附件到邮箱,这一部分就当作为框架最后的作业练习吧,同学们不要急着去百度看结果(看也是去测试别人的笔记),先尝试自己去摸索、遇到问题自己去解决,反正大家都认识中文,英语呢也应该可以应付简单的足够了。

这里顺带给出提示吧:下载mail邮箱相关、钉钉消息通知的插件;该配置服务器的服务器、该获取access_token的就去建群获取,调用api的活儿交给jenkins插件就好了。

总结

按照目录设计来讲,这里应该是设计整个框架的最后一篇,因为咱们最终设计的框架目标是需要多人协作,然后在公共平台集成执行测试(远程执行),当然不能只在本地环境执行测试(个人主义要不得),至此,框架内容已经全部复习完毕。

作者会不定期的回顾所学的内容,发现有遗漏的也会及时补充;也会在实际工作中去开发或尝试新的技术,实际应用才能熟练掌握,拒绝纸上谈兵,同时也希望关注我的同学,不要忘了投资自己,唯有不断充实自己,才能让自己的职业生涯走得更远、更稳。