玩命加载中 . . .

Jenkins 自动化部署教程


部署流程

下载 Jenkins

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

download-1

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

download-2

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

download-3

XShell-download-1

XShell-download-1

XShell-download-1

XShell-download-1

启动 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
    firewall-add-port
    重启防火墙:systemctl reload firewalld

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

aliyun

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

image.png

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

访问 Jenkins

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

  2. 安装插件:

install-plugin-1

install-plugin-2

上图中绿色方块全部点亮后,就会出现下图的界面:(注意:用户名和密码最好在备忘录记下来,以防忘记,找回可能比较麻烦)

create-user

“保存并完成”往下走,就能看见下图界面了:

first-page

插件配置

打开如下页面:

plugin-page-1.png

plugin-page-2.png

  1. 安装 Deploy to container

![install Deploy to container](Jenkins-自动化部署教程/install Deploy to container.png)

  1. 安装 Maven Integration

![install Maven Integration](Jenkins-自动化部署教程/install Maven Integration.png)

  1. 安装 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)

  1. 安装 Publish Over SSH

![install Publish Over SSH](Jenkins-自动化部署教程/install Publish Over SSH.png)

检查错误配置

  1. 乱码

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

  1. 反向代理设置有误

忽略即可。

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 设置

  1. Jenkins 服务器准备密钥认证
  • ssh-keygen ,一路回车
  • ssh-copy-id -i {ip} ,先 yes ,然后输入连接服务器的密码
  • ssh root@{ip} ,下图代表连接成功:
    ![ssh success](Jenkins-自动化部署教程/ssh success.png)
  1. 在 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 插件

新建任务

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

![new task](Jenkins-自动化部署教程/new task.png)

  1. 设置 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)

  • 保存之后

save

构建任务

  1. 立即构建

![Build immediately](Jenkins-自动化部署教程/Build immediately.png)

  1. 查看构建结果

![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 page Not Found

  1. 检查 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

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

![find Jenkins port](Jenkins-自动化部署教程/find Jenkins port.png)

  1. 查看防火墙开放了哪些端口:firewall-cmd --list-ports
    ![find firewall port](Jenkins-自动化部署教程/find firewall port.png)

  2. 开放 8090 端口:firewall-cmd --permanent --zone=public --add-port=8090/tcp

  3. 重启防火墙:systemctl reload firewalld

  4. 服务器开放安全组

  5. 访问页面

插件卸载

![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的路径就可以了。

更多 Error

Jenkins error自查

参考资源

视频教程

完整文章教程

解决报错教程


文章作者: hcyety
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hcyety !
评论
  目录