一、Jenkins所在位置
由程序员将代码编写完成后,通过eclipse/idea所集成的构建工具像maven或gradle进行本机的单机构建,跑一下测试用例,然后将代码提交到Git/Svn,由一个专门管理代码的人(项目经理/技术经理)全部拉下来进行一个手动的集成(所有的功能模块打包到一起),构建(把源代码编译完成成为我们目标的class文件,包括相关的依赖,冲突等),测试,全部跑通之后打包下来部署到测试服务器上,供测试人员来使用,到没有问题的时候把编译好的部署到外网上以供生产环境使用。
由于专门管理的人经常耗时耗力,还会有一些人为上的瑕疵或者疏漏保证不了每次构建都能成功,或者是有什么代码提交的时候在冲突方面解决的并不是特别的好,我们在开发的过程当中,我们可能只关注了自己功能的开发,有一些zar包上的依赖冲突,有一些代码上的依赖冲突,都有可能会发生,所以这是一件特别繁重的事情,所以我们提出来一种jenkins自动化持续集成和持续构建,持续测试,持续发布,能够有效的减少负担,让所有工作变得自动化同时也能够及时的完成工作,当开发人员把代码提交到git上的时候,我们能够按照时间段或者是按照一些条件,能够完成自动化的构建集成,同时我们的测试也可以帮我们一块帮我们跑出来,把我们的测试报告,比如有哪些的功能模块没有跑通的,全部在整体跑完之后发送给我们的相关研发人员,这样的话虽然没有及时解决bug,但能让我们更快的找到系统中所存在的问题,这就是jenkins所出在地位,它能够替代掉一个人,让我们把集成测试这个工作安排在每一天,一般来说敏捷测试会在每一天晚上构建一次代码,如果要是有一些传统的项目并不需要每天构建,以不至于在错误的路上越走越远,到最后统一集成的时候会出现特别严重的冲突,需要花很长时间解决,jenkins也是由java开发出来的软件,或者说是一套管理系统,他能够有机的把我们所有的开发环节都链接到一起,从源代码托管服务器上把源代码拉去到jenkins服务器上,jenkins依托我们额外的插件,例如maven或者gradle,帮我们去在jenkins的本机完成构建,替换掉了管理员的一部分操作,构建完成之后要是一旦失败了,他会发送报告,成功之后会帮我们跑测试用例,测试用例跑通之后没什么问题,还可以帮我们构建完成之后自动化的把构建好的zar包或者war包帮我们发送到测试服务器上,以供测试人员使用。
Jenkins + Maven + Git持续集成基础使用
二、GitLab服务器配置(在ssh下安装)
1.创建一个虚拟器Jenkins-GitLab-ssh
2.安装依赖
yum install -y curl policycoreutils-python openssh-server perl
3.配置镜像
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
4.开始安装
EXTERNAL_URL="http://192.168.198.129" yum install -y gitlab-jh
这里的地址填写自己的服务器ip,因为新版的是极狐gitlab有jh,老版本的就没有。
5.安装完成之后启动输入命令gitlab-ctl start,以下是gitlab的常用命令
- gitlab-ctl start 启动所有gitlab组件
- gitlab-ctl stop 停止所有gitlab组件
- gitlab-ctl restart 重启所有gitlab组件
- gitlab-ctl reconfigure 启动服务
- vi /etc/gitlab/gitlab.rb 修改默认的配置文件
- gitlab-ctl tail 查看日志
6.gitlab默认是80端口,将其改为8600端口,在/etc/gitlab/gitlab.rb中修改配置文件
修改上图中椭圆标注的内容为当前Linux系统实际的ip地址和给gitlab分配的端口号
使gitlab的配置文件生效
gitlab-ctl reconfigure
然后在防火墙中添加永久端口号8600
firewall-cmd --add-port=223/tcp --permanent
查看永久开放的端口
firewall-cmd --list-ports --permanent
配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld
重启gitlab
gitlab-ctl restart
7.在网页中输入地址登录gitlab:http://192.168.198.129:8600
由于是第一次登录用户名就是root,密码存放在了/etc/gitlab/initial_root_password中,24小时后会被清除。
8.登录成功后修改密码,点击左边的右上角,下拉栏中点击编辑个人资料,然后左边栏中点击密码。
三、上传项目到GitLab
我这里以IDEA为例将项目上传至GitLab
1.安装本地git仓库,下载git,下载链接:点击我跳转到下载地址,下载后无脑next下一步安装成功。
2.在IDEA左上角依次点击File > Settings
3.在Settings左侧栏中依次点击Version Control > Git,在Path to Git executable中输入自己下载的git所在的路径,然后找到Git\cmd\git.exe这个,点击右侧的Test查看版本号,出现版本号则为成功。
4.将代码提交到本地git仓库中。
在IDEA中点击上方SVN,在弹出的下拉栏中点击Create Git Repository,选择自己要上传的项目。
然后右击项目选中git > Add将代码拉到本地仓库。
5.右击项目点击Git > Commit Direction将代码提交
6.填写commit message,analyze code是分析是否有错误,报错等可以不勾选,减少时间。
提交完成之后在右下角可以看到一个master的分支。
7.首先GitLab点击左上角的加号弹出下拉栏,点击新建项目/仓库
8.进去之后点击创建空白项目
9.进入后填写项目名称,项目的地址可以使用用户名root,点击新建项目
10.在创建好的项目中点击代码复制http路径。
11.在IDEA中右击项目依次点击Git > Manage Remotes
12.在弹出的对话框中点击加号,将复制的路径填入。
13.将代码提交到远程仓库中,在IDEA的上面点击Git栏,出现下拉框点击push。
14.选择将代码要添加的分支master,点击push完成上传。
15.回到GitLab中点击main选择master分支,就能看到代码啦。
16.在代码检查完成之后,点击创建合并请求将两个分支的代码合并到一起。
配置下基本信息后点击创建。
17.最后点击批准,合并。
四、Jenkins服务器配置
1.将系统自带的jdk删除。
- 使用命令查看当前操作系统自带JDK环境:rpm -qa|grep jdk (rpm -qa:查询所安装的所有rpm包)
- 使用yum命令卸载所有JDK:yum -y remove java-1.7.0-openjdk-headless-1.7.0.251-2.6.21.1.el7.x86_64
2.查看可用的jdk包:yum search java|grep jdk 需要下载大于11的版本,这里我们安装11
3.下载jdk11:yum install -y java-11-openjdk
4.输入java -version查看版本
5.下载Jenkins的war包:点我跳转到下载地址
6.将下载好的jenkins.war包放到服务器的root路径下。
7.这里jenkins服务器默认端口是8080,我们需要在防火墙里将8080端口开放。
8.运行jenkins.war:java -jar jenkins.war
9.等待几分钟输入网址:192.168.198.101:8080,将密码填入,这里密码已经在控制台中显示出来了,进入之后我们选择安装他推荐的插件,等待之后开始创建管理员用户。
10.后面无脑下一步进入jenkins,后面需要我们从jenkins服务器上帮我们从git上拉取代码,拉完之后回来需要我们在本地构建一下,就用到了这个Maven,我们就需要在jenkins这台服务器上装上。
11.下载Maven:点击我跳转到下载地址
12.下载后传到/root目录中
13.对maven包进行操作
- 将maven包解压缩:tar -zxvf apache-maven-3.9.6-bin.tar.gz
- 然后将其移走:mv apache-maven-3.9.6 /usr/local/maven
- 执行maven:/usr/local/maven/bin/mvn
- 查看版本号:/usr/local/maven/bin/mvn -v
14.安装git:yum install git
五、集成allure报告
1.安装git、allure插件
2.配置插件
3.创建项目first
4.填写git仓库地址,修改为main分支
5.测试步骤选择填写一段代码
6.测试步骤完成后的动作选择生成allure报告
7.sava保存后,build now运行
8.创建test项目,填写项目路径
9.构建命令
10.增加groovy脚本,因为在我们jenkins里面他会经常让html的代码无法显示,会有样式丢失,这个是固定写法。
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
11.添加allure报告
临时temp报告路径
html报告路径
六.持续集成企业微信
下载插件Qy Wechat
在企业微信中新增一个机器人,复制Webhook地址
将Webhook地址填入
构建后的操作,填入Webhook地址
七.集成电子邮件通知
在网易邮箱中设置POP3/SMTP/IMAP
点击开启,生成密码
在系统配置中填写系统管理员邮件地址
进行smtp server跟email后缀的配置
填写邮箱,跟生成的密码
接受邮件的账户
邮件的标题一般是固定的,以及邮件的内容
将构建后email的什么时候触发邮件,默认的是失败后触发,将Failure-any删掉,换成总是触发
八.构建定时项目
* * * * *表示分时日月年,例:27 21 * * *表示每天的21点27分时构建一次。
九.python发送邮件模块的封装
1。新建一个email_ manage.py文件
2.新建一个test_case的测试用例