jenkins+Gitlab+maven+shell实现项目的自动化编译测试

这是早些时候写的一篇文档了,Gitlab8.0+在集成了gitlab-ci之后使用起来比jenkin方便很多,建议大家学习一下

环境

一台gitlab服务器

​ IP:192.168.100.7

一台Jenkins服务器

​ IP:192.168.90.170

​ 系统:RedHat 6.8

​ JDK:jdk1.8.0_201

​ Maven:apache-maven-3.3.9

​ Git: git-2.11.1

一台开发用机器(用来测试push代码时,由gitlab向jenkins发送push event触发脚本;后改用定时构建,所以此机器可以忽略)

​ IP:192.168.90.171

搭建Jenkins服务器过程:

1、jenkin安装

(1)、下载jenkins运行war包

wget http://mirrors.jenkins.io/war-stable/2.32.3/jenkins.war

或者本地下载之后通过ftp拷贝到服务器中

(2)、安装JDK

下载jdk文件

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

放在/usr/java 文件夹下

[[email protected] ~]# cd /usr/java/
[[email protected] java]# tar -xzvf jdk-8u201-linux-x64.tar.gz

修改环境变量

[[email protected] java]# vi /etc/profile 
export JAVA_HOME=/usr/java/jdk1.8.0_201
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
[[email protected] java]# source /etc/profile

通过java -version验证jdk是否安装成功

(3)、运行jenkins war包

[[email protected] java]# cd /usr/jenkins/
[[email protected] jenkins]# java -jar jenkins.war

如何不使用jdk的话,同样可以放到Tomcat里启动

可以通过端口8080访问

http://192.168.90.170:8080/

2、jenkins搭建

(1)、第一次访问时会出现这个页面

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

通过红标文件路径获得jenkins安装时生成的管理员密码,continue

(2)、安装相应的插件

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

左侧是一些常用的插件,右侧是自己选择插件,我们使用通用的插件 。

(3)、创建用户

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

当插件安装结束后,出现此页面,创建jenkins的第一个用户,save and finish。

(4)、创建完成

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

创建用户完成后,我们进入jenkins的工作台,我们接下来需要配置jenkins需要的一些全局配置,并建立到gitlab服务器的连接。

3、配置jenkins

(1)、配置jenkins全局配置

jenkins+Gitlab+maven+shell实现项目的自动化编译测试
进入全局工具配置界面

jenkins+Gitlab+maven+shell实现项目的自动化编译测试
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

将之前在jenkins服务器上安装的jdk,git,maven配置到jenkins环境中(文末附maven的安装和git安装),点击保存。

maven 和 git的安装见附2、附3

(2)、配置SSH连接信息(当有Tomcat测试服务器时,方便远程免密连接,目前不需要)

首先安装插件 : publish over ssh
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

在可选插件中搜索publishover ssh直接安装

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

安装时, 选择安装完成后重启jenkins(勾选)

在jenkins服务器上使用ssh生成**,然后利用**实现免密登陆。

执行脚本

[[email protected] ~]# ssh -****** -t rsa

一直回车即可,最终在 /root/.ssh/文件夹下生成两个文件 id.rsa(私钥)和id.rsa.pub(公钥),我们需要把公钥的内容写到测试服务器的/root/.ssh/authorized_keys文件中(因为我的测试服务器与jenkins服务器用的同一台,所以就是在本地了)

[[email protected] ~]# cd /root/.ssh/
[[email protected] .ssh]# cp id_rsa.pub authorized_keys 

jenkins+Gitlab+maven+shell实现项目的自动化编译测试
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

详细解释:Passphrase是指在生成秘钥的时候设置的密码,由于我们都是一路回车下来的所以此处不用写

path to key是指私钥的位置/root/.ssh/id.rsa

key是指私钥的内容 path to key 和key任选其一即可

name是指你要远程到tomcat的名称 随便写就可以,后期为了区分,所以我写了测试服务器

hostname是指测试服务器的ip

username是指测试服务器的用户

remote directory是指要放到测试服务器的目录,这里写tomcat的部署目录

设置结束后,点击Test Configuration测试是否可以连接。
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

(3)、建立与gitlab的连通

a、需要安装gitlab相关的插件

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

我在测试时,因为需要gitlab发送webhook通知到jenkins执行脚本,所以需要Gitlab Hook Plugin这个插件,用来接收构建的请求信息,如果定时任务的话不需要此插件。

b、建立一个job

需要建立一个job,才能在job中建立到gitlab的连接。

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

c、配置job的相关信息
1、简单描述一下job的相关信息

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

2、连接到gitlab

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

Credentials 需要添加,用户名和密码使用gitlab的用户即可
jenkins+Gitlab+maven+shell实现项目的自动化编译测试
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

对应gitlab中应该添加jenkins服务器的公钥
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

3、构建触发器

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

本处有两种构建方式

a、定时构建

​ H 0,6,12,18 * * * 每天的 0点,6点,12点,18点执行构建

​ H H/2 * * * 每隔半小时执行一次构建

​ 具体语法请百度

b、接收gitlab发送来的webhook请求,勾选可以识别的gitlab的事件

​ 此时需要在gitlab中配置webhook需要发送请求的路径。

​ 首先是jenkins的请求地址,一般结构为:

http://IP:8080/github-webhook

​ 也可以在系统配置中查看
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

之后就是将该地址配置给gitlab,

在gitlab的项目配置中,填写请求地址以及选择事件添加webhook即可。
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

注意,在gitlab 10.6版本之后默认是不允许在本地网络中请求webhook,如果确实需要此服务的话,需要gitlab管理员allow此操作
jenkins+Gitlab+maven+shell实现项目的自动化编译测试
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

4、构建

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

此处需要注意的是,execute shell 无法找到mvn命令,问题在于其未加载/etc/profile环境变量,需要在shell开始添加

#! /bin/sh -l

也可以构建其他一些操作

5、构建后操作

此处我添加了一个操作,即在构建失败的时候,或者有其他异常时会发送邮件到此处填写的邮箱。而发件人的配置见附1

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

而如果想自定义发送邮件内容,且待附件,或者发送给多个人,抄送给某些人,可以使用Ediable Email Notification触发事件,配置如下

jenkins+Gitlab+maven+shell实现项目的自动化编译测试
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

每次编译结束后都会将结果和build log发送给Recipient List中的邮箱,以及开发者的邮箱。两个接收邮箱结果如下:

jenkins+Gitlab+maven+shell实现项目的自动化编译测试
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

至此,配置jenkins完成,还有很多有趣的功能可以去自己测试一下

4、测试结果

可以查看项目的构建历史,点击可以查看每一次构建的结果
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

可以查看本次构建的控制台输出
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

附1:邮件通知设置

同样在系统设置下面
jenkins+Gitlab+maven+shell实现项目的自动化编译测试

点击测试,发送一封测试邮件到我的邮箱

jenkins+Gitlab+maven+shell实现项目的自动化编译测试

附2:Maven安装配置

[[email protected] ~]# wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
[[email protected] ~]# tar -xvzf apache-maven-3.3.9-bin.tar.gz 

修改系统环境变量为:

export MAVEN_HOME=/root/apache-maven-3.3.9
export JAVA_HOME=/usr/java/jdk1.8.0_201
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar

附3:Git安装配置

https://blog.****.net/mao_tao/article/details/78398933