Jenkins+git+maven每日构建指导手册
概览
本文主要为 Linux 下部署 Jenkins+git+maven 实现每日构建,windows 下构建原理相似,区别之处会加以说明。
安装前准备工作:
- jdk 安装与环境变量配置,因为 jenkins 需要配置 jdk,故先提前安装 jdk 版本选择 1.8 以上
- Jenkins 安装包
- git 安装包
- maven 安装包
- tomcat8 安装包
- jdk安装与配置
上传 jdk 包至目录:/home
mkdir -p /usr/java
cd /home
tar -xvf jdk-8u144-linux-x64.tar.gz
mv jdk1.8.0_144 /usr/java
环境变量配置:vi /etc/profile 在最后添加以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=/usr/java/jdk1.8.0_144/jre
export PATH=$PATH:$JAVA_HOME/bin
重启profile文件
source /etc/profile
git安装
1、安装依赖的包
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
2、下载安装
下载 git:
wget https://github.com/git/git/archive/v2.3.0.zip
如果不能在线下载,那就下载 tar 包:https://mirrors.edge.kernel.org/pub/software/scm/git/
解压下载的安装包后,进入解压后的目录,进行编译安装
将其安装在 /usr/local/git 目录下。
cd git-2.3.0
make prefix=/usr/local/git all
make prefix=/usr/local/git install
编译安装完成后,配置环境变量:vim /etc/profile
然后在文件的最后一行,添加下面的内容,然后保存退出。
export PATH=/usr/local/git/bin:$PATH
使用 source
命令使配置立即生效
source /etc/profile
查看 git 版本,发现输出 2.3.0,表明安装成功。
3、添加一个认证用户
安装好 git 后需要配置认证用户,否则代码拉取不下来。
jenkins 服务器上 root 用户生成密钥对:
输入:ssh-keygen -t rsa
后,一路回车。如下所示
[root@node1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
bf:1e:4d:b3:0f:fb:8b:71:cd:ef:d3:70:69:a4:46:ff root@node1.chinasoft.com
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| . . |
| S + + .|
| . o =.*.|
| o * oo=|
| o B .E|
| .o o.+o+|
输入:cat .ssh/id_rsa.pub
获取公钥,填入 gitlab 上
[root@node1 ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3vhfbA4NdkP8g1WVyYkw93f1PZ04nWoyFnoerC9b40jIY5px+tkugdy/RZ3/bp4hMC5yNgV1S25Tm8RpzBJMp7pbJz8dO+LCKqUnXq9Eh0QhsZE0xlQN+J4awy9YIGiD2nFg7k/ZzeAtQRzNryrrPnKaWpXtg7tMGGTWBjeyLAVuqCOMU7euY94G26UmVfjDLIJkcJqB+8dwvodW3wpmUER32qVPKZLnSYSOCfoNed+P4Eujs5PBCLuzFvGyiDhY2Pwrk/4S11jWUa7TJItfoPXzeGc/ujaJi/o24dt8VXeFa/Rm4wywYLNW3TRjXy1mPpdVlob3701MMQ0bf3qPvroot@node1.chinasoft.com
3.1、在gitlab上配置公钥
把 key 复制进去,同时 title 起一个简单明了的名字
在 jenkins 服务器 192.168.xxx.xxx 上测试下是否能够正常获取代码
jenkins 拉取代码没问题
3.2、配置 jenkins 的认证
配置jenkins的认证:系统管理 --> Global Tool Configuration
jenkins 拉取代码没问题,继续配置 jenkins 的认证,这里应该输入私钥
输入:cat .ssh/id_rsa
,如下所示:
cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAt74X2wODXZD/INVlcmJMPd39T2dOJ1qMhZ6HqwvW+NIyGOac
frZLoHcv0Wd/26eITAucjYFdUtuU5vEacwSTKe6Wyc/HTviwiqlJ16vRIdEIbGRN
MZUDfieGsMvWCBog9pxYO5P2c3gLUEcza8q6z5ymlqV7YO7TBhk1gY3siwFbqgjj
FO3rmPeBtulJlX4wyyCZHCagfvHcL6HVt8KZlBEd9qlTymS50mEjgn6DXnfj+BLo
7OTwQi7sxbxsog4WNj8K5P+EtdY1lGu0ySLX6D183hnP7o2iYv6NuHbfFV3hWv0Z
uMMsGCzVt00Y18tZj6XVZaG9+9NTDENG396j7wIDAQABAoIBAEHMfCR9HJTsMMDk
SmDs3JqnHWhK+UzUe0/6VmEla0VNmI0cQFyMEYcUR3Z41uulEgURf22ZLv9WDPuq
yar4r26rtynsE1avbiEpwHzQVaMDhT2zqYUg9NA/fVdgl3PtT3KgyGQFd5MgIQUN
ileGkOF6GpoGBqnOvJkJfAS5+0RHi8EZ8RcufNExgan5QF42dtKNWOEdgZIp0+WY
jmI73YEpIadQzKxjL6PCOUmFAjfuNllw3It5QLePvYYlQeWKkl8QdROOADzOxgoj
6zCdzGo6ZqP4vK8gGioT7UybH1WJoN8of1ZBenKyT4+TagQYwqV0LXIpVBkHKgdD
5bxZIPkCgYEA4giWHweLYxmkZIXDx5VrOjIPmzTFqSfDMI9rDFQt57AbIr0hM4BW
6qmViWwuc9t28cLSXv+0FtycIfs4co8RvMinIMLykWddX8x3sniCr2+Pgn/G+RgQ
FK36wN0dVZwwr/6oPeIDCJlr4AqhDAJLJkcbRjc5i8kR9OPHIvkPJjsCgYEA0Bou
cmeOGYtrCW6t88xnmR26Sk8ybNWUdpju9SpEeCdz4jJnZC29AJ3qg8LilG0sDS/y
0cNT/iMP8x6FPeFqJnhI/l4C1H5WEqult/thMl1bZ+RFEO92EUcKEXZep0yu5Txr
6bHZzCnp9cYe56z9qsGk064LR2N9TR16xAzeud0CgYEArx0B2NZKeaNDBhHPxI8Q
/IwOJSs0O0Gv6a4iu/F3gviffUFTOIgkTjbFwCqMrnuHYfOSccDeb5vIZlcvuyj2
D/DP8gS2UknnQDGzRhQxAuOGJg8CQrcOtka3brWfZVTVL3Q2OYMg4Iej2HXDoP8h
42zRR4u/THmhLL1O6NxVjUMCgYBslKyVbuja9T61HjXPVmDbqIIyEZ6a4NnlA6jy
7Mnq85LofCosQB00vDDH7SCyF0B75P/KaSNjH8JLtSoKfpoXVn2nkz/gxcZ9WWhP
Ve+CCuoNjDJpQriVDT74m42Jt14uJ9eaiPy+JUR4w5YOhdmZhg5NkKs75XJUkUQk
FR8FVQKBgQDOWXJYF3VEYdCD1qIy/CsY3s4ARD9kery+5aOCu6TNd6auYEfqxsev
ie1jD+cvAgVR1aZ5aP3C8jEYhZa4xgn1+hxfRLWs79uMYnXXNGJ+FxKftDyhuV+m
efEQrUf8jh4MofW9Ee6Z7YjitIRY7SQ+kZl2Xms+QZlJotBzTG2DSA==
-----END RSA PRIVATE KEY-----
复制 jenkins 拉取 git 代码服务器 root 的私钥
添加描述,点击 OK
maven 安装
1、下载
下载 maven:百度上搜 maven,进入官网,找到 download,在页面中找到需要下载的文件即可,这里提供一个下载地址 https://maven.apache.org/download.cgi
上传压缩包到 home 目录下,解压压缩包,命令如下:
tar –xvf apache-maven-3.5.4-bin.tar.gz
配置 maven 的环境变量:
vim /etc/profile
在文件的尾部加上下面内容
export M3_HOME=/home/apache-maven-3.5.4
export PATH=${M3_HOME}/bin:${PATH}
测试 maven 有没有安装成功
mvn –v
出现下图的版本信息表示安装成功
安装完成后,如果项目用的是 maven 私服,需要更改下 maven/conf
目录下的 settings.xml
配置文件,如下图,否则可能编译不成功。
2、更改配置
Jenkins 安装
1、下载
请到 jenkins 官网下载最新版 Jenkins.war 包,官网地址:https://jenkins.io/
因为 jenkins 是依赖于 tomcat 启动的,所以先部署 tomcat,部署完成后,将 Jenkins.war 包放在 tomcat 的 webapps 目录下,启动 tomcat 即可
以下为部署 tomcat 步骤:
unzip apache-tomcat-8.0.37.zip
mv apache-tomcat-8.0.37 /usr/local/
cd /usr/local
将 jenkins.war 放到 /usr/local/tomcat/webapps 目录下
启动 tomcat:sh /usr/local/ apache-tomcat-8.0.37/bin/startup.sh
等待 tomcat 启动完成。
2、初始化
打开 web 界面:http://111.111.111.111:8080/jenkins
注:111.111.111.111 为自己的 linux 主机 IP
第一次打开要输入随机生成的密码:
密码在 tomcat 的 logs 目录下的 calalina.out 里:cat /usr/local/apache-tomcat-8.0.37/logs/calalina.out,tomcat 启动起来后,就去看他的 log,里面会看到的。
输完密码后,进行下一步:
插件下载:(可跳过,后面安装)
如果你的 linux 可以访问外网,便可以在线安装插件:
如果无法连接外网,就需要在 jenkins 网站下载需要的插件进行本地安装,本地安装会遇到许多插件安装时依赖其他插件,比较烦,需要耐心的一个一个安装。
下载插件地址:https://updates.jenkins.io/download/plugins/
注:插件安装完成后,重启 jenkins,使插件生效
注册:后续 jenkins 登陆时的账号密码
3、邮箱配置
配置邮件通知,系统管理–系统设置
添加管理员邮箱,添加邮件
点击保存或测试邮件,系统会给目标邮箱发送一封测试邮件:
4、插件安装
安装 git 插件:如果刚才已经安装,此时便不需要安装了。
同理,安装 maven 插件。
配置 Jenkins
5、全局工具配置
创建项目之前先要对 Jenkins 进行基本的配置,比如 jdk 的目录,git 命令的目录和 maven 的目录等等
首先点击系统管理
进入管理页面后如图:
点击 Global Tool Configuration 进入插件配置页面
配置 jdk
点击新增 JDK 按钮,会显示 jdk 配置 form,将刚才安装的 jdk 相关信息录入,这里我们只需要配置好 jdk 别名和 JAVA_HOME 即可。 注:不用勾选自动安装,因为我们已经安装好了
配置 git
注:1、此处需要安装 git 插件后才会出现 git 配置 2、需要将 git.exe 的正确路径配置到 Path to Git executable 中(Linux 没有 exe 后缀)
配置 maven
跟 jdk 相同,配置好名字和路径即可,当然也可以选择自动安装,不过还是推荐手动安装然后配置,配置好了之后点击 save 即可
安装插件
由于新版默认没有将 war 部署到 Tomcat 的插件,所以需要手动安装,在系统管理中选择管理插件,再选择可选插件,搜索 Deploy to Container Plugin,然后勾选点击直接安装
创建 Jenkins 任务
1、创建项目
点击开始创建一个新任务进入任务创建页面
先输入项目名字,然后选择构建一个 maven 项目,最后点击 ok 按钮
2、 选择版本控制器
页面中找到源码管理模块,根据项目使用的版本控制器选择,如我们使用的 git,则选择 git
源码浏览器,去 gitlab 上找到 http 的 url:http://192.168.3.198/web/web-demo.git
找出 gitlab 的版本,输入 url 和版本,版本只支持2位,拉到最下面保存
3、 配置构建触发器
我这里配置的是每隔一段时间自动构建一次,也有其他选项
时间规则:
MINUTE Minutes within the hour (0–59)
HOUR The hour of the day (0–23)
DOM The day of the month (1–31)
MONTH The month (1–12)
DOW The day of the week (0–7) where 0 and 7 are Sunday.
指定顺序为 MINUTE HOUR DOM MONTH DOW
在某个域指定多个值的规则是:
* specifies all valid values
M-N specifies a range of values
M-N/X or */X steps by intervals of X through the specified range or whole valid range
A,B,...,Z enumerates multiple values
如果要定期执行任务,必须提供 H (for “hash”)标识。
比如 0 0 * *
会在同一时间执行所有任务,而使用 H H * *
也会在每天执行一次任务,但是并不是同一时间,这样就可以节省很多资源。
H 还可以用于范围:H H(0-7) * * *
标识在每天 12:00-7:59 之间的某个时间执行任务。
H * * * *
代表每个小时执行一次。
H/15 * * * *
每15分钟执行一次。
4、 配置构建
我用的是 Maven,这里用 Maven 构建
Maven Version:Maven 版本,可以选择我们配置好的 Maven
Goals:Maven 执行命令,为空默认是 install
5、 配置构建后操作,这里配置自动部署到远程 Tomcat
- 去系统管理的插件管理下载
deploy to container plugin
插件 - 在构建后操作的选项中选择
Deploy war/ear to container
- 配置 war 名称、上下文路径和 Tomcat
WAR/EAR files :war 包的相对路径
Context path:上下文名称,就是在 tomcat webapp 下的文件名称,localhost:8080/personnel
,可以为空
6、 注意事项
配置 tomcat 要有管理权限
1). 配置有管理权限的用户
到 tomcat 下面 conf/tomcat-users.xml
里面配置用户名密码
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-status" />
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="admin" roles="admin,manager-gui,manager-script,manager-status" />
2). tomcat 工程目录下默认是 webapp 必须有 manager 工程 ,如果修改了路径 需要将 manager 工程拷贝到 tomcat 的新设置的工程路径
7、 开始构建
点击立即构建,查看控制台,可以看到构建的详细输出