部署流程
下载 Jenkins
- 打开 官网 ,可以看到页面如下:
- 根据不同的平台下载对应的安装包,我这里是在 Linux 服务器上使用(规格是 CentOS 7.7 64位),因此选择:
- 按照指示,在 Xshell 上执行命令:
启动 Jenkins 服务
安装完成之后,修改 Jenkins 端口,避免与 Tomcat 冲突:
vim /etc/sysconfig/jenkins
找到JENKINS_PORT="8080"
,修改为JENKINS_PORT="8090"
(自己选择端口)启动 Jenkins 服务:
systemctl start jenkins
防火墙开启 8090 端口:
firewall-cmd --permanent --zone=public --add-port=8090/tcp
重启防火墙:systemctl reload firewalld
服务器安全组要记得开放 8090 :
- 在浏览器访问
http://{ip}:8090
即可看到如下页面:
如果还是不能正常显示,请参考下文中排查错误的步骤,希望我遇到的问题能帮到你~
访问 Jenkins
解锁 Jenkins :
cat /var/lib/jenkins/secrets/initialAdminPassword
获取密码后填入输入框中,“继续”即可。安装插件:
上图中绿色方块全部点亮后,就会出现下图的界面:(注意:用户名和密码最好在备忘录记下来,以防忘记,找回可能比较麻烦)
“保存并完成”往下走,就能看见下图界面了:
插件配置
打开如下页面:
- 安装
Deploy to container

- 安装
Maven Integration

- 安装
git
相关 3 个插件
GitHub Authentication

GitHub Branch Source
这个插件似乎自己已经安装好了,若没有安装,则还是按照上面的步骤安装即可。
GitHub Organization Folder

- 安装
Publish Over SSH

检查错误配置
- 乱码
在 XShell 中编辑 Tomcat -> conf -> server.xml :vim {tomcat 的安装路径}/conf/server.xml
,在第一行添加(或修改为) <?xml version="1.0" encoding="UTF-8"?>
即可。
- 反向代理设置有误
忽略即可。
Jenkins 系统设置

配置 JDK 目录:

配置 Git 目录:

配置 Maven 目录:

SSH 设置
- Jenkins 服务器准备密钥认证
ssh-keygen
,一路回车ssh-copy-id -i {ip}
,先yes
,然后输入连接服务器的密码ssh root@{ip}
,下图代表连接成功:

- 在 Jenkins 上配置 SSH 信息
- 复制 SSH 密钥:
cat ~/.ssh/id_rsa
- 进入 Jenkins 系统设置:在
系统管理
>系统设置
往下拉找到publish over ssh


没有的话到
系统设置
>插件中心
下载publish over ssh
插件
新建任务
- 点击左侧菜单栏“新建任务”,定义名称和类型

- 设置 maven
下面的方法是适用于 公有 Git 仓库 的配置,私有 Git 仓库这里就不配置了,毕竟用得少。
- 设置描述

- 选择版本控制器和仓库地址
图中的 GitHub url:https://github.com/bingyue/easy-springmvc-maven
是一个测试仓库,用于检测我们安装的东西是否能正常使用

- 设置触发器(保持默认)

- 设置构建(编译打包)
使用 maven 构建,将clean package -Dmaven.test.skip=true
填入 Goals and options 中

- 构建后操作

选择(send build artifacts over ssh)通过 SSH 发送构建工件:


- 保存之后
构建任务
- 立即构建

- 查看构建结果


如果构建失败,可以根据这里的报错信息快速定位问题所在。
Jenkins Error 自查
无法访问 Jenkins
- 检查 Jenkins 服务是否开启:
systemctl status jenkins

systemctl
命令管理 Jenkins 服务:
# 启动 Jenkins 服务
systemctl start jenkins
# 重启 Jenkins 服务
systemctl restart jenkins
# 停止 Jenkins 服务
systemctl stop jenkins
# 查看 Jenkins 服务状态
systemctl status jenkins
- 查看 Jenkins 是哪个端口的服务:
ps -ef | grep jenkins

查看防火墙开放了哪些端口:
firewall-cmd --list-ports
开放 8090 端口:
firewall-cmd --permanent --zone=public --add-port=8090/tcp
重启防火墙:
systemctl reload firewalld
服务器开放安全组
访问页面
插件卸载

要使插件的卸载立即生效,需要我们重启 Jenkins 服务。这个我们可以通过 web 页面重启:http://{ip}:8080/restart
。
重启完成后输入用户名和密码即可再次访问 Jenkins 服务了。
主机密钥验证失败

查看 maven 的路径是否配置正确
用户凭据设置错误
控制台输出报错信息:ERROR: Error fetching remote repo 'origin'
更改 ssh 的配置:在 ~/.ssh/config
中添加如下配置 StrictHostKeyChecking no UserKnownHostsFile /dev/null
无法找到对应的执行文件
控制台输出报错信息:Exception when publishing, exception message [Exec exit status not zero. Status [127]]
原因:在远程部署 jar 包的时候报错,也就是说 Jenkins 执行 shell 时无法获取环境变量的原因导致。
解决方案:在 shell 脚本上加上环境变量如
#!/bin/bash
source ~/.bash_profile
source /etc/profile
Status [127]
代表的是没找到对应的执行文件。
cd 打开到自己部署的war的路径就可以了。