jenkins打包部署配置详解(前端+后端)


jenkins 软件的安装部署,后续再出相关的文档。

0. 前言

0.1 系统和软件版本

系统版本:Centos 7.9
jenkins 版本:jenkins-2.346.1
java 版本:jdk1.8.0_241
maven 版本:3.9.3
git 版本:1.8.3.1

0.2 配置 jenkins 配置文件

在很多网上的都说 jenkins 配置文件是/etc/sysconfig/jenkins,但是随着 jenkins 的版本,这个配置文件已经被弃用,虽然这个文件还存在。在高版本配置文件是/usr/lib/systemd/system/jenkins.service

修改配置文件内容如下:

User=root
Group=root

Tips:在实际操作过程中发现,在 Java 打包的时候,在使用 maven 的时候,出现Permission denied权限问题,主要是因为 jenkins 在打包的时候默认使用的是 jenkins 用户,如果想解决有两种方式,一种是给 jenkins 用户赋权限,一种是直接用 root 用户。赋权限操作麻烦,直接将配置文件中的 User、Group 改成 root 用户,简单粗暴,问题解决。

1. 后端部署

1.1 依赖安装

我是使用 Java 语言开发,这里就说说 Java 相关的。

  1. JDK 安装:Linux 环境 JDK 安装
  2. maven 安装:python3 和 maven 的安装教程
  3. git 安装,直接使用yum -y install git即可。

Tips:jdk 安装是因为 Java 有对应的依赖,maven 安装主要是对后端 Java 代码打包使用,git 是用来拉取仓库的代码使用。(如果打包方式不是 maven,或者仓库不是 git,可以根据实际需求安装)

1.2 配置系统环境

为何要配置系统环境,因为在你新建任务的时候会使用到,比如远程连接后端服务器发布应用,这个远程连接就需要配置,比如使用的 maven、git、jdk 都需要配置。

  1. git、maven、jdk 配置
    进入 Dashboard => 系统管理 => 全局工具配置
  • 配置 jdk:指定别名,在指定JAVA_HOME,这个值就是在安装 jdk 时配置JAVA_HOME,保持一直即可。(我这里是/usr/local/jdk1.8.0_241
  • 配置 git:指定名称,在执行 git 命令所在的目录,如果这里不知道 git 命令安装在什么位置,可以通过whereis git命令查询到。(我这里是/usr/bin/git
  • 配置 maven:指定名称,指定MAVEN_HOME,这个值就是在安装 maven 时配置MAVEN_HOME,保持一直即可。(我这里是/usr/local/maven
  1. 配置远程连接
    进入 Dashboard => 系统管理 => 系统配置 => 找到 Publish over SSH(如果没有这个可以去插件管理里面下载,一般在安装 jenkins 的时候都会安装)

新增 SSH Server,根据要求填写相关内容即可。(一般在填写到 Remote Directory 后,下面有个高级,点击进去,选择使用 Use password authentication, or use a different key,输入 Password 即可)填写完成后,记得点击一下下面的 Test Configuration,看是否能够正常连接,显示 success 即表示没有问题。(如果有多个服务器,可以通过新增即可)

1.3 配置发布任务

进入 Dashboard => 新建任务 => 填写名称,选择”构建一个 maven 项目”,确认进入配置页面

  1. 源码管理,选中 Git
    配置仓库地址(Repository URL)、认证信息(Credentials)、指定代码分支

Tips:如果还没有凭证,可以点击添加,进入添加页面,Domain 选择全局凭证,类型选择 Username with Password,范围选择全局,用户名填写 gitLab 仓库拉取代码的用户名,密码是对应用户名的密码。

  1. 构建环境
    选择 Delete workspace before build starts。

  2. Pre Steps
    选择调用顶层 maven 目标,选择 maven 版本,这个 maven 版本就是在上面配置的 maven,目前是执行的语句,Java 一般会使用clean package -Dmaven.test.skip=true

  3. 构建后操作

选择 Send build artifacts over SSH,填写 SSH Server Name,再在高级里面填写相关信息,需要将Verbose output in console选中,方便看日志。下面是高级里面信息说明:

  • Transfer Source files:表示你需要发送到远程服务器的文件,比如你打完的 jar 包。需要注意的是这个路径是相对路径,不是绝对路径。比如你 git 上拉取的项目名称是 demo。打完包后会在 demo 里面生成一个 target 目录,jar 包就是放在其内,这个时候,这里的路径写的就是demo/target/demo.jar
  • Remove prefix:这个表示发送到运程仓库,是否要把 Transfer Source files 配置的部分路径给擦除。比如你要将demo.jar发送到远程服务器的/usr/local/service目录下,这个时候如果你不执行擦除,则会默认在/usr/local/service下创建demo/target/目录存储demo.jar,最终发送到远程服务器后的路径是/usr/local/service/demo/target/demo.jar。如果你的目的是想放在/usr/local/service,这个时候就需要执行擦除,Remove prefix 就配置demo/target
  • Remote directory:表示远程目录,也就是你放 jar 包的位置,但是这里有个坑,在之前配置远程连接的时候也涉及到一个 Remote Directory 信息,当 jenkins 通过 ssh 进入远程服务器后,会自动 cd 到其中配置 Remote Directory 中。如果这里的 Remote directory 也配置的话,可能会造成目录不准确的问题。比如你要将 demo.jar 放到/usr/local/service目录下,在远程连接里面的 Remote Directory 配置了/usr/local/service,在这里也做了同样配置,那么这个时候就出出现一个问题,在 demo.jar 发送到远程服务器时,demo.jar 并不是放在/usr/local/service下,而是/usr/local/service/usr/local/service下。如果你的目的是想放在/usr/local/service,这个时候就不需要配置 Remove directory 就配置,保持为空即可。(或者直接将远程连接中的 Remove directory 配置成/,这里的 Remove directory 该配啥就配啥,灵活性更高)
  • Exec Command:表示要在远程服务器上执行的命令,比如 jar 包发送过去,肯定要运行起来,这个时候就需要执行脚本或者命令,就是写在这里。示例如下:
#!/bin/sh
cd /usr/local/service/
sh service.sh restart

Tips:到此配置结束,上面的配置内容比较绕,特别是 Remove prefix 和 Remote directory,多尝试几次就能理解。

1.4 构建验证

保存后,点击页面左侧中的立即构建,在下面的 Build History 中就有对应的构建记录,点击进入,查看构建日志,根据日志看定位错误和调整配置,如果一次成功,那就恭喜你啦。

Tips:在配置 jdk 环境变量的时候,一般都是配置在/etc/profile中。在执行启动 jar 的时候,会给出没有找到 jdk 的问题。解决方案:在~/.bashrc文件中进行同样的环境变量配置即可。(具体原因可以面向百度、必应、谷歌查询)

2. 前端部署

2.1 依赖安装

我们项目研发的前端使用 vue,所以这里主要的依赖就是 node 和 npm,这里安装 node 和 npm 有两种方式,一种是直接使用yum命令安装,一种是使用nvm安装。使用yum安装有个不好的地方就是版本比较固定,如果需要给多个项目多个版本的项目打包,就存在版本不兼容问题。这个时候使用nvm安装就会更为方便。

  • 方式一:yum安装
yum -y install nodejs
yum -y install npm

Tips:yum中的 nodejs、npm 版本更新较慢,官方最新的版本可能在yum中不存在。

  • 方式二:nvm安装

Tips:nvm在安装之前,如果本机里面已经安装了 nodejs 和 npm,需要先删除掉。如果你是用yum安装的 nodejs 和 npm,直接使用yum -y remove nodejsyum -y remove npm

2.2 配置发布任务

进入 Dashboard => 新建任务 => 填写名称,选择”构建一个自由风格的软件项目”,确认进入配置页面

  1. 源码管理:和后端发布配置相同
  2. 构建:在增加构建步骤中选择“执行 shell”,shell 脚本如下:
# 安装依赖
npm install
# 执行构建
npm run build
# 将打包完成的dist目录做成压缩文件,方便发送到服务
tar -zcvf xxx.tar.gz dist

Tips:这个脚本只是简单的打包工作,如果涉及 nodejs、npm 版本的切换,再添加对应命令即可。

  1. 构建后操作

SSH Server Name:对应服务器,在前言 0.2 中已经做具体的配置说明,这里选择即可。
在“高级”里面配置 Transfers 操作

  • Transfer Set Source files:配置需要发送到服务器的文件,上面已经将需要发送的文件打包成 xxx.tar.gz,那么这里直接填上即可。
  • Remove prefix:这里没有前缀,保持为空。
  • Remove directory:发送到远程服务器,文件存放的位置,这里关于路径写写法注意事项在后端部署中已经做了详细的说明,直接参考即可。比如要放到/usr/local/app目录下,就填写此值即可。
  • Exec command:在远程服务器上需要执行的命令。示例如下:
#!/bin/sh
# 进入到目录目录
cd /usr/local/app
# 执行对应的脚本文件,这个脚本文件就是将之前旧的项目目录删除,然后解压压缩包,对解压后的dist进行改名,改成项目名称即可。(可以不改名,看实际需求)
sh xxx.sh

Tips:到这里前端发布就完成了。


文章作者: 程序猿洞晓
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 程序猿洞晓 !
评论
 上一篇
Centos系统如何扩充磁盘容量及默认root目录50G解决方案 Centos系统如何扩充磁盘容量及默认root目录50G解决方案
使用VMware构建Centos虚拟机是常规操作,但是有时候会出现安装时候设定的磁盘容量,使用过程不够需要扩容,虽然本身VMware能够在设置中对磁盘进行扩容,但是存在一个问题即使这种扩容只是给虚拟机增加了对应的磁盘容量,但是没有实际挂载到虚拟机上的,也就是扩容了,但实际不能使用,还需要进入到Centos系统中另外进行一系列操作……
2023-08-19
下一篇 
SVN+Apache httpd+Nginx实现svn的http请求和Nginx代理 SVN+Apache httpd+Nginx实现svn的http请求和Nginx代理
通过SVN+Apache httpd实现通过http协议访问svn,通过nginx实现反向代理SVN服务。
2023-07-17
  目录