部署流程
下载 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
![install Deploy to container](Jenkins-自动化部署教程/install Deploy to container.png)
- 安装
Maven Integration
![install Maven Integration](Jenkins-自动化部署教程/install Maven Integration.png)
- 安装
git
相关 3 个插件
GitHub Authentication
![install GitHub Authentication](Jenkins-自动化部署教程/install GitHub Authentication.png)
GitHub Branch Source
这个插件似乎自己已经安装好了,若没有安装,则还是按照上面的步骤安装即可。
GitHub Organization Folder
![install GitHub Organization Folder](Jenkins-自动化部署教程/install GitHub Organization Folder.png)
- 安装
Publish Over SSH
![install Publish Over SSH](Jenkins-自动化部署教程/install Publish Over SSH.png)
检查错误配置
- 乱码
在 XShell 中编辑 Tomcat -> conf -> server.xml :vim {tomcat 的安装路径}/conf/server.xml
,在第一行添加(或修改为) <?xml version="1.0" encoding="UTF-8"?>
即可。
- 反向代理设置有误
忽略即可。
Jenkins 系统设置
![Manage Jenkins page](Jenkins-自动化部署教程/Manage Jenkins page.png)
配置 JDK 目录:
![JDK Directory](Jenkins-自动化部署教程/JDK Directory.png)
配置 Git 目录:
![Git Directory](Jenkins-自动化部署教程/Git Directory.png)
配置 Maven 目录:
![Maven Directory](Jenkins-自动化部署教程/Maven Directory.png)
SSH 设置
- Jenkins 服务器准备密钥认证
ssh-keygen
,一路回车ssh-copy-id -i {ip}
,先yes
,然后输入连接服务器的密码ssh root@{ip}
,下图代表连接成功:
![ssh success](Jenkins-自动化部署教程/ssh success.png)
- 在 Jenkins 上配置 SSH 信息
- 复制 SSH 密钥:
cat ~/.ssh/id_rsa
- 进入 Jenkins 系统设置:在
系统管理
>系统设置
往下拉找到publish over ssh
![publish over ssh setting-1](Jenkins-自动化部署教程/publish over ssh setting-1.png)
![publish over ssh setting-2](Jenkins-自动化部署教程/publish over ssh setting-2.png)
没有的话到
系统设置
>插件中心
下载publish over ssh
插件
新建任务
- 点击左侧菜单栏“新建任务”,定义名称和类型
![new task](Jenkins-自动化部署教程/new task.png)
- 设置 maven
下面的方法是适用于 公有 Git 仓库 的配置,私有 Git 仓库这里就不配置了,毕竟用得少。
- 设置描述
![add description](Jenkins-自动化部署教程/add description.png)
- 选择版本控制器和仓库地址
图中的 GitHub url:https://github.com/bingyue/easy-springmvc-maven
是一个测试仓库,用于检测我们安装的东西是否能正常使用
![add git](Jenkins-自动化部署教程/add git.png)
- 设置触发器(保持默认)
![add trigger](Jenkins-自动化部署教程/add trigger.png)
- 设置构建(编译打包)
使用 maven 构建,将clean package -Dmaven.test.skip=true
填入 Goals and options 中
![add maven](Jenkins-自动化部署教程/add maven.png)
- 构建后操作
![Post build operation-1](Jenkins-自动化部署教程/Post build operation-1.png)
选择(send build artifacts over ssh)通过 SSH 发送构建工件:
![Post build operation-2](Jenkins-自动化部署教程/Post build operation-2.png)
![Post build operation-3](Jenkins-自动化部署教程/Post build operation-3.png)
- 保存之后
构建任务
- 立即构建
![Build immediately](Jenkins-自动化部署教程/Build immediately.png)
- 查看构建结果
![Viewing the build results-1](Jenkins-自动化部署教程/Viewing the build results-1.png)
![Viewing the build results-2](Jenkins-自动化部署教程/Viewing the build results-2.png)
如果构建失败,可以根据这里的报错信息快速定位问题所在。
Jenkins Error 自查
无法访问 Jenkins
- 检查 Jenkins 服务是否开启:
systemctl status jenkins
![open Jenkins](Jenkins-自动化部署教程/open Jenkins.png)
systemctl
命令管理 Jenkins 服务:
# 启动 Jenkins 服务
systemctl start jenkins
# 重启 Jenkins 服务
systemctl restart jenkins
# 停止 Jenkins 服务
systemctl stop jenkins
# 查看 Jenkins 服务状态
systemctl status jenkins
- 查看 Jenkins 是哪个端口的服务:
ps -ef | grep jenkins
![find Jenkins port](Jenkins-自动化部署教程/find Jenkins port.png)
查看防火墙开放了哪些端口:
firewall-cmd --list-ports
![find firewall port](Jenkins-自动化部署教程/find firewall port.png)开放 8090 端口:
firewall-cmd --permanent --zone=public --add-port=8090/tcp
重启防火墙:
systemctl reload firewalld
服务器开放安全组
访问页面
插件卸载
![uninstall plugin](Jenkins-自动化部署教程/uninstall plugin.png)
要使插件的卸载立即生效,需要我们重启 Jenkins 服务。这个我们可以通过 web 页面重启:http://{ip}:8080/restart
。
重启完成后输入用户名和密码即可再次访问 Jenkins 服务了。
主机密钥验证失败
![Host key verification failed](Jenkins-自动化部署教程/Host key verification failed.png)
查看 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的路径就可以了。