目录
1 Jenkins使用
点击了解 Jenkins框架原理
点击了解 Jenkins之声明式流水线语法
1.1 原理图示
Jenkins
部署在一台服务器上,然后安装了很多必备的Jenkins
插件。比如拉取Gitlab
仓库代码的插件、远程执行命令和拷贝文件的插件。Jenkins
开始运行一个任务时,通过Git
插件从Gitlab
仓库拉取代码到本地目录。Jenkins
通过JDK
和Maven
工具对Java
代码进行打包部署。Jenkins
通过SSH
插件执行远程命令,将包进行备份、清理操作。Jenkins
将JAR
包拷贝到远程服务器的固定目录下。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
:远程服务器的名字,后面在配置拷贝包的时候可以根据名字选择拷贝到哪台服务器。Hostname
:SSH Server
的Hostname
。Username
:SSH Server
登录名和密码或密钥。Remote Directory
:指定将文件拷贝到哪个目录。
1.4.5 备份服务器 JAR 包
在上传打包好的 JAR
包之前,需要将应用服务器上的 JAR
备份。
备份的步骤如下:
- 在远程服务器创建一个备份目录 bak。
- 在备份目录bak上创建一个以当前时间作为目录名的目录。
- 将远程服务器的上
JAR
重命名为原文件名+时间戳的名字。
1.4.6 拷贝 JAR 包到远程服务器
需要配置以下内容:
SSH Server
:指定要将文件拷贝到哪个服务器,格式为<用户名>@<ip 地址>
。Transfer Set Source files
:jenkins
编译后的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
这个命令使用 nohup
和 sudo
权限来执行名为 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中。
标签:1.4,配置,使用,JAR,服务器,Jenkins,安装,打包
From: https://www.cnblogs.com/jingzh/p/18168760