自动化发布工具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 [email protected]: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 [email protected]: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

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

相关推荐
宁zz21 分钟前
乌班图安装jenkins
运维·jenkins
工业通讯探索者38 分钟前
ProfiNet转CANopen协议转换网关驱动新能源汽车生产线多轴同步控制
自动化·工业物联网·协议转换网关·网关模块·总线协议
FixBug_Nick41 分钟前
使用Docker安装及使用最新版本的Jenkins
docker·容器·jenkins
大丈夫立于天地间1 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信
rainFFrain1 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
小马哥编程2 小时前
【软件测试】自动化测试结合 CI/CD有哪些方案
自动化·集成测试·测试覆盖率
@郭小茶3 小时前
docker-compose方式部署docker项目
运维·docker·容器
自由鬼3 小时前
开源虚拟化管理平台Proxmox VE部署超融合
linux·运维·服务器·开源·虚拟化·pve
weixin_457885824 小时前
JavaScript智能对话机器人——企业知识库自动化
开发语言·javascript·自动化
东方佑4 小时前
利用Python自动化处理PPT样式与结构:从提取到生成
python·自动化·powerpoint