Jenkins 自动化部署教程

366 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

部署流程

下载 Jenkins

  1. 打开 官网 ,可以看到页面如下:

image.png

  1. 根据不同的平台下载对应的安装包,我这里是在 Linux 服务器上使用(规格是 CentOS 7.7 64位),因此选择:

image.png

  1. 按照指示,在 Xshell 上执行命令: image.png

image.png

image.png

image.png

image.png

启动 Jenkins 服务

  1. 安装完成之后,修改 Jenkins 端口,避免与 Tomcat 冲突:vim /etc/sysconfig/jenkins
    找到 JENKINS_PORT="8080" ,修改为 JENKINS_PORT="8090"(自己选择端口)

  2. 启动 Jenkins 服务:systemctl start jenkins

  3. 防火墙开启 8090 端口:firewall-cmd --permanent --zone=public --add-port=8090/tcp image.png 重启防火墙:systemctl reload firewalld

  4. 服务器安全组要记得开放 8090 :

image.png

  1. 在浏览器访问 http://{ip}:8090 即可看到如下页面:

image.png

如果还是不能正常显示,请参考下文中排查错误的步骤,希望我遇到的问题能帮到你~

访问 Jenkins

  1. 解锁 Jenkins :cat /var/lib/jenkins/secrets/initialAdminPassword
    获取密码后填入输入框中,“继续”即可。

  2. 安装插件:

image.png

image.png 上图中绿色方块全部点亮后,就会出现下图的界面:(注意:用户名和密码最好在备忘录记下来,以防忘记,找回可能比较麻烦) image.png “保存并完成”往下走,就能看见下图界面了: image.png

插件配置

打开如下页面:

image.png

image.png

  1. 安装 Deploy to container

image.png

  1. 安装 Maven Integration

image.png

  1. 安装 git 相关 3 个插件
  • GitHub Authentication

image.png

  • GitHub Branch Source

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

  • GitHub Organization Folder

image.png

  1. 安装 Publish Over SSH

image.png

检查错误配置

  1. 乱码

在 XShell 中编辑 Tomcat -> conf -> server.xml :vim {tomcat 的安装路径}/conf/server.xml ,在第一行添加(或修改为) <?xml version="1.0" encoding="UTF-8"?> 即可。

  1. 反向代理设置有误

忽略即可。

Jenkins 系统设置

image.png

配置 JDK 目录:

image.png

配置 Git 目录:

image.png

配置 Maven 目录:

image.png

SSH 设置

  1. Jenkins 服务器准备密钥认证
  • ssh-keygen ,一路回车
  • ssh-copy-id -i {ip} ,先 yes ,然后输入连接服务器的密码
  • ssh root@{ip} ,下图代表连接成功: image.png
  1. 在 Jenkins 上配置 SSH 信息
  • 复制 SSH 密钥:cat ~/.ssh/id_rsa
  • 进入 Jenkins 系统设置:在 系统管理 > 系统设置 往下拉找到 publish over ssh image.png

image.png

没有的话到 系统设置 > 插件中心 下载 publish over ssh 插件

新建任务

  1. 点击左侧菜单栏“新建任务”,定义名称和类型

image.png

  1. 设置 maven

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

  • 设置描述

image.png

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

image.png

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

image.png

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

image.png

  • 构建后操作

image.png

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

image.png

image.png

  • 保存之后

image.png

构建任务

  1. 立即构建

image.png

  1. 查看构建结果

image.png

image.png

如果构建失败,可以根据这里的报错信息快速定位问题所在。

Jenkins Error 自查

无法访问 Jenkins

Not Found

  1. 检查 Jenkins 服务是否开启:systemctl status jenkins

image.png

systemctl 命令管理 Jenkins 服务:
# 启动 Jenkins 服务
systemctl start jenkins
# 重启 Jenkins 服务
systemctl restart jenkins
# 停止 Jenkins 服务
systemctl stop jenkins
# 查看 Jenkins 服务状态
systemctl status jenkins

  1. 查看 Jenkins 是哪个端口的服务:ps -ef | grep jenkins

image.png

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

插件卸载

image.png

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

主机密钥验证失败

image.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的路径就可以了

更多 Error

Jenkins error自查

参考资源

视频教程

完整文章教程

解决报错教程