Jenkins之安装使用

1 Jenkins使用

点击了解 Jenkins框架原理
点击了解 Jenkins之声明式流水线语法

1.1 原理图示

在这里插入图片描述

  • Jenkins 部署在一台服务器上,然后安装了很多必备的 Jenkins 插件。比如拉取 Gitlab 仓库代码的插件、远程执行命令和拷贝文件的插件。
  • Jenkins 开始运行一个任务时,通过 Git 插件从 Gitlab 仓库拉取代码到本地目录。
  • Jenkins 通过 JDKMaven 工具对 Java 代码进行打包部署。
  • Jenkins 通过 SSH 插件执行远程命令,将包进行备份、清理操作。
  • JenkinsJAR 包拷贝到远程服务器的固定目录下。
  • Jenkins 执行远程命令,更新服务。

1.2 Jenkins 简易安装教程

Jenkins 官方网站对 Jenkins 如何安装已经讲解得非常清晰了,所以这里不再赘述
Jenkins 下载地址:https://www.jenkins.io/download/
Jenkins 安装步骤:https://www.jenkins.io/doc/book/installing/

安装完成后,我们需要配置 Jenkins。

1.3 配置 Jenkins

因为我们要打包部署的项目是 Java 项目,所以需要将 Java JDK 所在的目录和 Maven 所在目录配置到 Jenkins 中,这样 Jenkins 打包时就能利用这两个工具进行打包。

配置全局工具:Maven
配置如下:
在这里插入图片描述
在这里插入图片描述

配置环境变量:Java JDK和Maven
图片

上面的配置完成后,我们就可以测试下是否可以将代码仓库中的某个分支的代码拉取下来进行打包。

1.4 通过 Jenkins 一键部署

在使用 Jenkins 时,我们必须创建一个任务才行,然后这个任务里面可以配置要执行的各种操作。

Jenkins 中自动构建项目的类型有很多,常用的有以下三种:

  • 自由风格软件项目(FreeStyle Project
  • Maven项目(Maven Project
  • 流水线项目(Pipeline Project

每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。

下面演示创建一个简单的自由风格项目来完成项目的集成过程:

拉取代码->编译 Java 项目->备份服务器 JAR 包->删除服务器 JAR 包->拷贝 JAR 包到服务器->更新服务

图片

1.4.1 创建一个项目

图片

创建成功后就会出现一条记录:
图片
为了测试我们的 Jenkins 是否能正常拉取代码并打包,我们需要配置 Gitlab 代码仓库的地址、用户名、密码。

1.4.2 配置拉取的代码仓库

在这里插入图片描述

配置打包
图片

配置 Maven 打包

echo "开始打包"
mvn clean package
echo "打包完成"

配置到这一步后,我们可以先验证下这些配置是否生效。

1.4.3 运行项目

Dashboard 可以看到配置完成的任务,点击 Build Now 按钮即可开始拉取代码、打包项目。
我们还可以从控制台输出看到打包记录。
Jenkins 会从 Gitlab 仓库拉取指定分支的代码,然后运行 mvn clean package 命令,进行打包。
图片
输出记录中打印出了以下关键信息:代码拉取后存放在哪,打的 jar 包在哪

代码和生成的 jar 包在到这个根目录找到:
C:\ProgramData\Jenkins.jenkins\workspace\passjava-dev

还可以从打印日志的最后看到这次打包用时 2 min 33 秒,任务的执行状态为 Finished Success。
接下来就是将这些 JAR 包拷贝到远程服务器地址。

1.4.4 拷贝安装包

拷贝安装包需要用到一个插件:Publish Over SSH
Dashboard>Manage Jenkins->插件管理->Avaliable plugins

下图是已经安装好了这款插件的截图
图片

配置这个插件的全局配置:

  • SSH Server Name:远程服务器的名字,后面在配置拷贝包的时候可以根据名字选择拷贝到哪台服务器。
  • HostnameSSH ServerHostname
  • UsernameSSH Server 登录名和密码或密钥。
  • Remote Directory:指定将文件拷贝到哪个目录。

在这里插入图片描述

1.4.5 备份服务器 JAR 包

在上传打包好的 JAR 包之前,需要将应用服务器上的 JAR 备份。

备份的步骤如下:

  • 在远程服务器创建一个备份目录 bak。
  • 在备份目录bak上创建一个以当前时间作为目录名的目录。
  • 将远程服务器的上 JAR 重命名为原文件名+时间戳的名字。

在这里插入图片描述

1.4.6 拷贝 JAR 包到远程服务器

需要配置以下内容:

  • SSH Server:指定要将文件拷贝到哪个服务器,格式为 <用户名>@<ip 地址>
  • Transfer Set Source filesjenkins 编译后的 JAR 地址。通过之前的编译信息我们知道,JAR 包地址在如下路径:
    C:\ProgramData\Jenkins.jenkins\workspace<Jenkins 任务名><编译目录>
  • Remove prefix:要移除的文件路径前缀。
  • Remte directory:拷贝到哪个路径下,如果之前已经配置过全局的文件夹,则拷贝的文件会放到 <全局文件夹>/之下,如果全局文件夹之下没有这个 Remote directory 目录,则创建一个。这里我们不需要配置,全局配置已经可以满足条件了。
  • 如果还有其他 JAR 包也需要拷贝则需要再添加一项。

在这里插入图片描述

1.4.7 滚动更新服务

项目采用的 Docker Swarm 方式来管理集群中的微服务。
Jenkins 通过 插件 发送命令到应用服务器上执行指定的脚本
图片

配置远程执行脚本的命令

cd /nfs-data/wukong/
nohup sudo sh restart.sh
exit

这个命令使用 nohupsudo 权限来执行名为 restart.sh 的脚本。nohup 命令用于将脚本在后台运行,即使终端会话结束,脚本仍然继续运行。
点击此处了解 nohup和& 命令使用讲解

1.4.8 远程服务器上创建脚本

如果想要 jenkins 执行远程服务器上的脚本,则需要先在远程服务器上创建一个可执行的脚本。
这里我们需要重启服务器的容器服务,所以在这个目录 /nfs-data/wukong/ 编写一个 restart.sh 脚本。

echo "部署 passjava 服务"
nohup sudo docker service update accountservice --force > /nfs-data/wukong/jenkins/account.txt
nohup sudo docker service update gatewayservice --force > /nfs-data/wukong/jenkins/gateway.txt
nohup sudo docker service update qmsservice --force > /nfs-data/wukong/jenkins/qms.txt
这个命令使用--force选项来更新名为"accountservice、gatewayservice、qmsservice"的 Docker 服务。命令的输出被重定向到文件/nfs-data/wukong/jenkins/xxx.txt中。
posted @ 2024-04-30 21:56  上善若泪  阅读(13)  评论(0编辑  收藏  举报