自动化发布工具CI/CD实践Jenkins常用工具和插件的使用

1、安装常用工具

名称 版本 备注
jdk java8 代码打包所需
git 1.8.3.1
maven 3.6.3 注意配置私服内容
nvm 0.39.3 多Node.js环境管理工具
Node.js v14.18.0 / v16.17.1 包管理工具
yarn 1.22.15 包管理工具

1.1 安装jdk

Jenkins 需要使用java11 及以上,但是代码打包依赖jdk8,所以一台机器会同时安装两个jdk环境

复制代码
#二进制安装jdk,解压至
[root@jenkins-new bin]# tar -xf jdk-8u251-linux-x64.tar -C /home/application/

[root@jenkins-new bin]# ll /home/application/jdk1.8.0_251/
total 25836
drwxr-xr-x 2 10143 10143     4096 Mar 12  2020 bin
-r--r--r-- 1 10143 10143     3244 Mar 12  2020 COPYRIGHT
drwxr-xr-x 3 10143 10143      132 Mar 12  2020 include
-rw-r--r-- 1 10143 10143  5217764 Mar 12  2020 javafx-src.zip
drwxr-xr-x 5 10143 10143      185 Mar 12  2020 jre
drwxr-xr-x 5 10143 10143      245 Mar 12  2020 lib
-r--r--r-- 1 10143 10143       44 Mar 12  2020 LICENSE
drwxr-xr-x 4 10143 10143       47 Mar 12  2020 man
-r--r--r-- 1 10143 10143      159 Mar 12  2020 README.html
-rw-r--r-- 1 10143 10143      424 Mar 12  2020 release
-rw-r--r-- 1 10143 10143 20923007 Mar 12  2020 src.zip

[root@jenkins-new bin]# vim /etc/profile
#配置环境变量,最最下面新增

#jdk8
export JAVA_HOME=/home/application/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
..........

#使环境变量生效
[root@jenkins-new bin]# source /etc/profile

#验证java
[root@jenkins-new bin]# which java
/home/application/jdk1.8.0_251/bin/java

1.2 安装git

复制代码
[root@localhost ~]# yum install git

1.3 安装maven

需要注意:
配置本地缓存目录: 默认为 ${user.home}/.m2/repository
配置阿里云加速站
配置自己公司私服仓库

复制代码
#下载包,并解压
[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
[root@localhost ~]# tar -xf apache-maven-3.6.3-bin.tar.gz -C /home/application


#重命名
[root@localhost ~]# mv /home/application/apache-maven-3.6.3/ /home/application/maven-3.6.3


#修改maven配置文件,添加自己公司私服内容,加速站点
[root@localhost conf]# vim  /home/application/maven-3.6.3/conf/settings.xml

1.4 安装nvm配置 多Node.js环境

nvm是一个用于管理多个 Node.js 版本的工具。它可以让你在同一台机器上安装和切换不同版本的 Node.js,而不会相互干扰。使用 nvm,你可以轻松地安装、切换和删除 Node.js 版本。你可以在同一台机器上同时安装多个版本的 Node.js,并且可以在项目中使用不同的 Node.js 版本,以确保项目的兼容性和稳定性。例如,你可以在一台机器上同时安装 Node.js 10.x、Node.js 12.x 和 Node.js 14.x 版本。然后,你可以使用 nvm 命令来切换到不同的版本,以便在不同的项目中使用不同的 Node.js 版本。

1.4.1 安装必要的依赖项
复制代码
[root@localhost ~]# yum install -y curl git
1.4.2 下载并安装 nvm
复制代码
官网仓库地址: https://github.com/nvm-sh/nvm.git

[root@localhost ~]# wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.3.tar.gz
[root@localhost ~]# tar -xf v0.39.3.tar.gz
[root@localhost ~]# mv nvm-0.39.3 /home/application/nvm
1.4.3 配置环境变量
复制代码
[root@jenkins-new bin]# vim /etc/profile
#配置环境变量,在最下面新增如下内容

#nvm
. /home/application/nvm/nvm.sh

#使环境变量生效
[root@jenkins-new bin]# source /etc/profile
1.4.4 验证nvm版本
复制代码
[root@localhost ~]# nvm -v
0.39.3
1.4.5 在线查看Nodejs所有版本
复制代码
[root@localhost ~]# nvm ls-remote
1.4.5 安装所需的 Node.js版本
复制代码
[root@localhost ~]# nvm install 16.17.1
[root@localhost ~]# nvm install v14.18.0
1.4.6 查看安装的 Node.js版本
复制代码
[root@localhost ~]#  nvm ls
->     v14.18.0
       v16.17.1
default -> 16.17.1 (-> v16.17.1)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.17.1) (default)
stable -> 16.17 (-> v16.17.1) (default)
lts/* -> lts/hydrogen (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.0 (-> N/A)
lts/hydrogen -> v18.16.0 (-> N/A)
1.4.7 切换到指定Node.js版本上
复制代码
[root@localhost ~]# nvm use v14.18.0
Now using node v14.18.0 (npm v6.14.15)

[root@localhost ~]# node -v
v14.18.0
[root@localhost ~]# npm -v
6.14.15

1.5 安装yarn 包管理工具

Yarn 是一个快速、可靠、安全的 JavaScript 包管理器,由 Facebook、Google、Exponent 和 Tilde 公司共同开发。它可以替代 npm,用于管理 JavaScript 包的依赖关系、版本号和安装。与 npm 相比,Yarn 具有以下优点:

  • 快速:Yarn 使用并行下载,可以显著提高安装包的速度。

  • 可靠:Yarn 使用一个锁文件(yarn.lock)来确保在不同的环境中安装相同的依赖项。这可以避免意外升级或降级依赖项,从而保证项目的稳定性。

  • 安全:Yarn 使用 SHA-1 哈希值来验证每个依赖项的完整性,以确保安装的包没有被篡改。

  • 支持离线模式:Yarn 可以缓存所有的包和依赖项,从而可以在没有网络连接的情况下安装依赖项。

  • 易于使用:Yarn 具有与 npm 类似的命令行界面,易于学习和使用。

1.5.1 先使用nvm切换到指定的Node.js版本上

Node.js 版本v14.18.0

复制代码
[root@localhost ~]# nvm use v14.18.0
Now using node v14.18.0 (npm v6.14.15)
1.5.2 设置npm加速地址
复制代码
[root@localhost ~]# npm config set registry https://registry.npm.taobao.org/

 #通过这个命令进行测试
[root@localhost ~]# npm config get registry
https://registry.npm.taobao.org/
1.5.3 安装yarn并设置加速
复制代码
[root@localhost ~]# npm install -g yarn

[root@jenkins-new ~]# yarn config set registry https://registry.npm.taobao.org/


#查看yarn版本
[root@jenkins-new ~]# yarn -v
1.22.15

需要注意的是,每一个Node.js 版本 再安装yarn 的时候,都需要重复上面的操作,先切换到指定nodejs,再安装yarn

复制代码
#先使用nvm切换到指定的Node.js版本上
[root@localhost ~]# nvm use v16.17.1
Now using node v16.17.1 (npm v8.15.0)

[root@localhost ~]# node -v
v16.17.1


#安装yarn
[root@localhost ~]#  npm install -g yarn

[root@localhost ~]# yarn -v
1.22.19

#设置npm私服加速地址
[root@localhost ~]# yarn config set registry https://registry.npm.taobao.org/
yarn config v1.22.19
success Set "registry" to "https://registry.npm.taobao.org/".
Done in 0.05s.

#查看yarn版本
[root@localhost ~]# yarn -v
1.22.19

1.6 在jenkins 服务器上测试打包

1.6.1 前端项目

环境: Node.js v14.18.0 yarn 1.22.15

复制代码
[root@localhost ~]# git clone -b release git@code.xxx.net:xxx-nj/xxx-fe-ak/xxxxx/xxx-business/xxx-oa.git
[root@localhost ~]# cd main-admin/

#拉取依赖
[root@localhost main-admin]# yarn
yarn install v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 39.60s.

#编译打包
[root@localhost main-admin]# yarn  build:prod
total 560
-rw-r--r--   1 root root    180 Jun  6 01:37 babel.config.js
-rw-r--r--   1 root root    203 Jun  6 01:37 jsconfig.json
drwxr-xr-x   6 root root    201 Jun  6 01:41 main-admin
drwxr-xr-x 944 root root  28672 Jun  6 01:40 node_modules
-rw-r--r--   1 root root   1771 Jun  6 01:37 package.json
drwxr-xr-x   4 root root    117 Jun  6 01:37 public
-rw-r--r--   1 root root    333 Jun  6 01:37 README.md
drwxr-xr-x  10 root root    300 Jun  6 01:37 src
-rw-r--r--   1 root root   2790 Jun  6 01:37 vue.config.js
-rw-r--r--   1 root root 504574 Jun  6 01:37 yarn.lock

打包成功!
1.6.2 后端项目

环境: maven3.6.3

复制代码
[root@localhost ~]# git clone -b release git@code.xxx.net:xxx-nj/xx-xx-kj/xx/em/xx/xxx-accident.git

[root@localhost ~]# cd xxx-accident

#编译打包,跳过单测
[root@localhost ~]# /home/application/maven-3.6.3/bin/mvn clean package -Dmaven.test.skip=true

[root@localhost xxx-accident]# ll target/
total 110328
drwxr-xr-x 3 root root      4096 Jun  6 02:09 apidocs
drwxr-xr-x 9 root root       124 Jun  6 02:08 classes
drwxr-xr-x 3 root root        25 Jun  6 02:08 generated-sources
drwxr-xr-x 2 root root        71 Jun  6 02:09 javadoc-bundle-options
drwxr-xr-x 2 root root        28 Jun  6 02:08 maven-archiver
drwxr-xr-x 3 root root        35 Jun  6 02:08 maven-status
-rw-r--r-- 1 root root 107017259 Jun  6 02:09 xx-accident-1.0-SNAPSHOT.jar
-rw-r--r-- 1 root root   1597850 Jun  6 02:08 xx-accident-1.0-SNAPSHOT.jar.original
-rw-r--r-- 1 root root   3610019 Jun  6 02:09 xx-accident-1.0-SNAPSHOT-javadoc.jar
-rw-r--r-- 1 root root    733545 Jun  6 02:09 xx-accident-1.0-SNAPSHOT-sources.jar

打包成功!

2、安装常用插件

早在安装jenkins的时候,其实我们就已经预装了一批社区推荐的插件,但是想要真正的用好jenkins 还不够,我们还需要手动安装一些插件;以下插件都是,安装jenkins 之外的插件,不在安装jenkins时安装的插件

名称 功能 备注
Role-Based Strategy Jenkins用户视图权限管理插件 [Role-based Authorization Strategy | Jenkins plugin](https://wiki.jenkins.io/display/JENKINS/Role+Strategy+Plugin "Role-based Authorization Strategy
Job Configuration History jenkins配置当中的后悔药,如果你更改了某个配置,但是现在又想更改回去,没有备份而且忘了,那么可以使用这个插件 [Job Configuration History | Jenkins plugin](https://wiki.jenkins.io/display/JENKINS/JobConfigHistory+Plugin "Job Configuration History
Email Extension Template Jenkins复杂邮件推送功能,可自定义邮件主题,内容,定义邮件接收对象 [Email Extension | Jenkins plugin](https://plugins.jenkins.io/email-ext/#plugin-content-documentation "Email Extension
Publish Over SSH 通过在jenkins 服务器上 以ssh的方式向远端机器执行命令 [Publish Over SSH | Jenkins plugin](https://plugins.jenkins.io/publish-over-ssh "Publish Over SSH
Generic Webhook Trigger 基于Gitlab钩子提交合并代码触发jenkins构建 [Generic Webhook Trigger | Jenkins plugin](https://plugins.jenkins.io/generic-webhook-trigger "Generic Webhook Trigger
SonarQube Scanner jenkins 上集成 sonarqube 代码质量检测功能 [SonarQube Scanner | Jenkins plugin](https://plugins.jenkins.io/sonar/#documentation "SonarQube Scanner
Blue Ocean 基于web 的可视化流水线 [Blue Ocean | Jenkins plugin](https://plugins.jenkins.io/blueocean/ "Blue Ocean
Build Name and Description Setter 指定每次构建的名称,可根据自己的要求来定义,而不是每次只显示#1, #2 [Build Name and Description Setter | Jenkins plugin](https://plugins.jenkins.io/build-name-setter/ "Build Name and Description Setter
Console Column 提供可用于视图的快速路径控制台链接,能够在项目视图首页展示项目构建输出面板的地址 [Console Column | Jenkins plugin](https://plugins.jenkins.io/console-column-plugin/ "Console Column
figlet-buildstep 允许你在构建过程中输出一个简单的横幅 【注意只支持显示英文单词,单词和单词之间只允许一个空格 [Figlet Buildstep | Jenkins plugin](https://plugins.jenkins.io/figlet-buildstep/ "Figlet Buildstep
sidebar-link 在 Jenkins 主页、视图选项卡和项目页面的侧边栏中添加自定义链接;其中包含链接 URL、文本和图标的设置。这些链接将显示在顶级 Jenkins 页面(主页、用户列表、构建历史记录、我的项目和其他项目视图选项卡)中。特定作业的侧边栏链接也可以添加到作业配置页面中。 [Sidebar Link | Jenkins plugin](https://plugins.jenkins.io/sidebar-link/ "Sidebar Link
Extended Choice Parameter 提供了一种灵活地参数化能力。可以讲版本的信息记录在一个文件内,通过key,value 去调取文件的内容;一般回滚使用这个插件。 [Extended Choice Parameter | Jenkins plugin](https://plugins.jenkins.io/extended-choice-parameter/ "Extended Choice Parameter
Metrics 用于收集和展示Jenkins实例的性能数据和指标的插件。它可以帮助用户监控Jenkins的运行状况,比如构建失败 的状态都可以接入到Prometheus中 [Metrics | Jenkins plugin](https://plugins.jenkins.io/metrics "Metrics

这里不会详细展开讲每个插件的具体使用方法,但是会在后面的案例中 具体介绍如何使用、

相关推荐
SpikeKing几秒前
VibeCoding - OpenClaw 公网访问配置指南 (自动化)
运维·自动化·vibecoding·openclaw
ulias2127 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷8 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
问简9 小时前
docker 镜像相关
运维·docker·容器
Dream of maid9 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾9 小时前
统信系统UOS常用命令集
linux·运维·服务器
Benszen10 小时前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…10 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
中海德--陈顺真11 小时前
西屋模块 1C31129G01
自动化
一叶知秋yyds11 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw