【Linux应用系列教程】基于Jenkins发布maven项目
一、环境准备
主机名 | IP地址 | 服务器软件 |
---|---|---|
jenkins.linux.com | 192.168.140.10 | Jenkins |
tomcat.linux.com | 192.168.140.12 | Tomcat |
gitlab.linux.com | 192.168.140.13 | Gitlab |
二、服务器准备
部署过程省略
Jenkins
部署教程:https://www.wsjj.top/archives/119
Gitlab
部署教程:https://www.wsjj.top/archives/118
Tomcat
部署教程:https://www.wsjj.top/archives/90
三、在Gitlab服务器上传项目
先创建一个空仓库
1.克隆项目
[root@gitlab ~]# git clone http://gitlab.linux.com/root/hello.git
正克隆到 'hello'...
Username for 'http://gitlab.linux.com': root
Password for 'http://root@gitlab.linux.com':
warning: 您似乎克隆了一个空版本库。
2.上传项目
测试项目下载链接:https://pan.baidu.com/s/1-ct99Xaf045ITL-Nw_P2FQ?pwd=xr9z
[root@gitlab hello]# ls -a
. .. .classpath .git pom.xml .project .settings src target
3.上传项目文件到Gitlab
如果您是新配置的
Git
环境,请先配置用户名
和
[root@gitlab hello]# git add .
[root@gitlab hello]# git commit -m "hello world"
[master(根提交) 8a7a45b] hello world
16 files changed, 187 insertions(+)
create mode 100644 .classpath
create mode 100644 .project
create mode 100644 .settings/.jsdtscope
create mode 100644 .settings/org.eclipse.jdt.core.prefs
create mode 100644 .settings/org.eclipse.m2e.core.prefs
create mode 100644 .settings/org.eclipse.wst.common.component
create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml
create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container
create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name
create mode 100644 .settings/org.eclipse.wst.validation.prefs
create mode 100644 pom.xml
create mode 100644 src/main/webapp/WEB-INF/web.xml
create mode 100644 src/main/webapp/index.jsp
create mode 100644 target/m2e-wtp/web-resources/META-INF/MANIFEST.MF
create mode 100644 target/m2e-wtp/web-resources/META-INF/maven/hello/hello/pom.properties
create mode 100644 target/m2e-wtp/web-resources/META-INF/maven/hello/hello/pom.xml
[root@gitlab hello]# git push -u origin master
Username for 'http://gitlab.linux.com': root
Password for 'http://root@gitlab.linux.com':
Counting objects: 29, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (29/29), 3.83 KiB | 0 bytes/s, done.
Total 29 (delta 1), reused 0 (delta 0)
To http://gitlab.linux.com/root/hello.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
前往Gitlab
端web
界面查看
四、在Jenkins服务器上安装插件
git
插件gitlab
插件- 作用:
- 连接
gitlab
服务器拉取代码
- 连接
- 作用:
maven intergration
插件- 支持
maven
编译、发布
- 支持
publish over ssh
插件- 借助
SSH
协议连接tomcat
服务器,发布项目
- 借助
1.回到Jenkins
端web
界面添加插件
请自行搜索安装以下插件
git
、gitlab
、Maven Integration plugin
、Publish Over SSH
如果在软件商店搜索不到,就证明已经安装过了
下图中仅展示安装其中一个,剩下的自行搜索安装
如果不确定是否安装,可以搜索本地已安装的插件
五、配置Jenkins服务器与Tomcat服务器之间免密SSH
[root@jenkins ~]# ssh-keygen -t rsa
[root@jenkins ~]# ssh-copy-id root@192.168.140.12
测试免密SSH
[root@jenkins ~]# ssh root@192.168.140.12 hostname
tomcat.linux.com
六、在Jenkins服务器安装maven编译工具和Git工具
1.安装Git
工具
[root@jenkins ~]# yum install -y git
2.安装maven
编译工具
[root@jenkins ~]# wget --no-check-certificate https://dlcdn.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz
[root@jenkins ~]# tar xf apache-maven-3.9.2-bin.tar.gz -C /usr/local/
[root@jenkins ~]# mv /usr/local/apache-maven-3.9.2/ /usr/local/maven39
配置环境变量
因为我们用
yum
装了jdk11
,所以不用配置jdk
环境
[root@jenkins ~]# vim /etc/profile
export PATH=$PATH:/usr/local/maven39/bin
[root@jenkins ~]# source /etc/profile
测试
[root@jenkins ~]# mvn -version
Apache Maven 3.9.2 (c9616018c7a021c1c39be70fb2843d6f5f9b8a1c)
Maven home: /usr/local/maven39
Java version: 11.0.19, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
七、配置Jenkins连接Gitlab
- 基于
Gitlab
令牌token
验证
1.前往Gitlab
端web
界面生成token
2.在Jenkins
端web
界面添加Gitlab
访问地址和令牌
报错解决方法
添加域名解析即可
[root@jenkins ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.140.13 gitlab.linux.com
再次回到Jenkins
端web
界面测试
八、配置Jenkins连接Tomcat服务器
1.准备Jenkins
服务器私钥
[root@jenkins ~]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA7uTCTg7JpgH8x2BpUQs9WsBW0/l9gKZU4oSFFOxdt45SMn2r
I39acmoErZ7HoZtmj+QxQWP8EqVhGG7dPO7JvhliiFaWyc989qR0AaQND2+HFHEV
3wGv7dx91Ybs2zql7xBQRGqfoZvAmZC8jZMcF9S56737AiWYiqGIRUcwmTycXem+
TvB8oozEcQlu+sP6tpSOdNvK7CMk77n1ujprtzPa7Wd/jpcTyuGXi2KYnsWjDP2X
dO2tbhmvM5+hrN0gFBvx2cRzjHUrIFcQDOvpGfK+hG3FeYl0dF9oX6b/+AlLaQJz
VkbYtTf6U+5UCnQ6J0NFRY0x9skIZoCeHbpNpQIDAQABAoIBAQDBblbqL00VbtyH
b0g3R/uI5N4pSwVUytlGhHjhZTXI76McoOaWmoLYy4E4N6167EJSVjmPse6kBmal
Cvd2Y/7UPueqbzou9CNB7gzEW1n72pkscxh7dnlGBteYsmRMaqN6++GSVCcnCt8b
OLeDhs8jeKqF+FEq/tgRwBN/zNHL8FhKKU31rwpI84btqOi2XNB4oMjLOVzMA/uc
bFgzlAFMs22L0VP3euCKsVZGc73QEqYpBuc0xJZLNOzpvzigPd0JJfDNV8IaTLO1
eJovJ8hJIxyU2t6qT4KNUPM95yJNkjKnUw/UJg+CEtUXRiFiJ92tWY3S4YPV6t7j
Go/ZNKfhAoGBAPlE1LS7iBTfKiB/nJC0TM6DwDgE6ouPkYu04lKNTnfgr/4cL+O1
pPozWv5qpLcfM5tRkS5NBsl/wZfIVfpWAjw6pqzvAYIaz3Kr/Pfu2Ijx+nwO8pEl
TdKd5UwRGdW8ZAqKoBZ5gkgtyaO/Z+NRW60eGMS49sFEPSPIgWl1Sdz9AoGBAPVY
NHUR/yn6k23I7l1Jkd74LzIp3T74ENS00wNCyMeBGkg89o8wgcpybEH+L3UZCvMP
ykBakAYy5pmTIDsNKq/eK+ggKJ4KqOPZFge8RL/56RfsaDQz5lqrxSZBVMNvGoaJ
znRjq2Nqpw+q7ZIIgwmy4zt6XCPoTMcsvXhrumfJAoGAO2/hNFM/KJLqDaPAJnUH
l3qs++6YKr0KHID+MmcFXepSrMn11Vs7wnk6ak3thsjG2nNBpgOx6ZwwAkw/zBh0
If5uPfAjsO1Jp/NAt7HZKhZg/vHlfxyhCOajhVbSjTeFt0nE0HcazLE2UnhSgk6l
CIuTplzgYccuuPiXexj/itUCgYEAzJ8jKRy4ZseRHDg/7VgFrCPsIPdfijwUtYKW
lxqlIBdh1yvZK3V2WmVyOtwHsq8PPcdGlMOzaSgcwas+b2G83275yaDAn4cecuHE
iPERmdeR+5z1D8zVa3vlctF8I39PbTQUF2hlMgZqjRuvBmPI/lbPQ/T6UgxVtKxw
3bVjg1kCgYBzno0VC5j0/sU17s5lBHZPCgBLf+dxcG7Vy3dUet75UtMr3ICVxvAT
CCH/I+8Y+H+ceYcATsVy7R+SqBFOaAszvS8b01TnPV0RVJ7wUeNL1KaDfADNwJEF
9iKQc0TqosNANkSPyVyorDQBTK9voerbfTqO7kmY/erHN3Xn/TvDuA==
-----END RSA PRIVATE KEY-----
九、配置Jenkins全局工具
十、创建项目发布任务
1.创建任务
2.设置Gitlab
连接
如果遇到报错请看下面
遇到这种问题解决方法也很简单
相信接触过Github
或者Gitee
的小伙伴都知道,在创建仓库的时候,会选择仓库是否为公开仓库或者是私人仓库
上面没有遇到报错,是因为我已经提前设置了仓库为公开状态
3.构建触发器
每
30
分钟拉取一次
这里的H
代表串行执行
默认*/30
代表并行执行,当服务增多的时候,代表所有服务都要同时拉取,同时编译,这样会造成服务器卡顿
而H/30
代表串行执行,当服务增多的时候,会一个一个的编译安装,防止服务器卡顿
4.定义pom.xml
文件路径
clean package -Dmaven.test.skip=true
5.设置构建后的操作
执行的操作(仅供参考)
export PATH=$PATH:/usr/local/jdk1.8.0_191/bin
/usr/local/tomcat85/bin/shutdown.sh
cp /app/project/*.war /usr/local/tomcat85/webapps
/usr/local/tomcat85/bin/startup.sh