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安装时生成的管理员密码,continue
(2)、安装相应的插件
左侧是一些常用的插件,右侧是自己选择插件,我们使用通用的插件 。
(3)、创建用户
当插件安装结束后,出现此页面,创建jenkins的第一个用户,save and finish。
(4)、创建完成
创建用户完成后,我们进入jenkins的工作台,我们接下来需要配置jenkins需要的一些全局配置,并建立到gitlab服务器的连接。
3、配置jenkins
(1)、配置jenkins全局配置
进入全局工具配置界面
将之前在jenkins服务器上安装的jdk,git,maven配置到jenkins环境中(文末附maven的安装和git安装),点击保存。
maven 和 git的安装见附2、附3
(2)、配置SSH连接信息(当有Tomcat测试服务器时,方便远程免密连接,目前不需要)
首先安装插件 : publish over ssh
在可选插件中搜索publishover ssh直接安装
安装时, 选择安装完成后重启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
详细解释:Passphrase是指在生成秘钥的时候设置的密码,由于我们都是一路回车下来的所以此处不用写
path to key是指私钥的位置/root/.ssh/id.rsa
key是指私钥的内容 path to key 和key任选其一即可
name是指你要远程到tomcat的名称 随便写就可以,后期为了区分,所以我写了测试服务器
hostname是指测试服务器的ip
username是指测试服务器的用户
remote directory是指要放到测试服务器的目录,这里写tomcat的部署目录
设置结束后,点击Test Configuration测试是否可以连接。
(3)、建立与gitlab的连通
a、需要安装gitlab相关的插件
我在测试时,因为需要gitlab发送webhook通知到jenkins执行脚本,所以需要Gitlab Hook Plugin这个插件,用来接收构建的请求信息,如果定时任务的话不需要此插件。
b、建立一个job
需要建立一个job,才能在job中建立到gitlab的连接。
c、配置job的相关信息
1、简单描述一下job的相关信息
2、连接到gitlab
Credentials 需要添加,用户名和密码使用gitlab的用户即可
对应gitlab中应该添加jenkins服务器的公钥
3、构建触发器
本处有两种构建方式
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
也可以在系统配置中查看
之后就是将该地址配置给gitlab,
在gitlab的项目配置中,填写请求地址以及选择事件添加webhook即可。
注意,在gitlab 10.6版本之后默认是不允许在本地网络中请求webhook,如果确实需要此服务的话,需要gitlab管理员allow此操作
4、构建
此处需要注意的是,execute shell 无法找到mvn命令,问题在于其未加载/etc/profile环境变量,需要在shell开始添加
#! /bin/sh -l
也可以构建其他一些操作
5、构建后操作
此处我添加了一个操作,即在构建失败的时候,或者有其他异常时会发送邮件到此处填写的邮箱。而发件人的配置见附1
而如果想自定义发送邮件内容,且待附件,或者发送给多个人,抄送给某些人,可以使用Ediable Email Notification触发事件,配置如下
每次编译结束后都会将结果和build log发送给Recipient List中的邮箱,以及开发者的邮箱。两个接收邮箱结果如下:
至此,配置jenkins完成,还有很多有趣的功能可以去自己测试一下
4、测试结果
可以查看项目的构建历史,点击可以查看每一次构建的结果
可以查看本次构建的控制台输出
附1:邮件通知设置
同样在系统设置下面
点击测试,发送一封测试邮件到我的邮箱
附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