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

1、安装常用工具

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shared_ptr和 weak_ptr的详细介绍

关于 shared_ptr 和 weak_ptr 的详细介绍及使用示例: 1. shared_ptr(共享所有权智能指针) 核心特性 引用计数:记录当前有多少个 shared_ptr 共享同一个对象。自动释放:当引用计数归零时,自动释放对象内存…

Spring AI MCP 架构详解

Spring AI MCP 架构详解 1.什么是MCP? MCP 是一种开放协议,它对应用程序向大语言模型(LLMs)提供上下文信息的方式进行了标准化。可以把 MCP 想象成人工智能应用程序的 USB-C 接口。就像 USB-C 为将设备连接到各种外围设备和配件提供了一种…

腾讯系AI应用,可以生视频,3D模型...

以下注册手机后就可以使用了。 腾讯智影 智能抹除-在线去水印去字幕-抹除水印字幕-腾讯智影 混元(文字,图片生成3D) 腾讯混元3D 混元视频(文字生成视频,可惜右下角有文字) https://video.hunyuan.tencen…

数据结构(并查集,图)

并查集 练习版 class UnionFindSet { public:void swap(int* a, int* b){int tmp *a;*a *b;*b tmp;}UnionFindSet(size_t size):_ufs(size,-1){}int UnionFind(int x){}void Union(int x1, int x2){}//长分支改为相同节点int FindRoot(int x){}bool InSet(int x1, int x2)…

数据结构:探秘AVL树

本节重点 理解AVL树的概念掌握AVL树正确的插入方法利用_parent指针正确更新平衡因子掌握并理解四种旋转方式:左单旋,右单旋,左右双旋,右左双旋 一、AVL树的概念 AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis&…

电源系统的热设计与热管理--以反激式充电器为例

前言 反激电源常用于各种电子设备中,比如充电器、适配器等,它们通过变压器进行能量转换。高温环境可能对电子元件造成影响,特别是像MOSFET、二极管、变压器这样的关键部件,导致效率变低,甚至可能导致功能失效。还有安…

linux课程学习二——缓存

一.文件io与标准io的一个区别 遇到死循环可以ctrl c结束进程 使用printf输出,输出没有问题 用wirte输出,参数1,可以理解为上面介绍的linux标准文件描述符的1(STDOUT)标准输出,我们加上一个死循环while&…

Kafka中的消息如何分配给不同的消费者?

大家好,我是锋哥。今天分享关于【Kafka中的消息如何分配给不同的消费者?】面试题。希望对大家有帮助; Kafka中的消息如何分配给不同的消费者? 在 Kafka 中,消息是通过 主题(Topic) 进行组织的&…

Android的安全问题 - 在 Android 源码的 system/sepolicy 目录中,区分 public、private 和 vendor的目的

参考:Google文档 在 Android 8.0 及更高版本中自定义 SEPolicy 在 Android 源码的 system/sepolicy 目录中,区分 public、private 和 vendor 是为了模块化 SELinux 策略,并明确不同部分的访问权限和接口边界。这种设计主要基于以下原因&…

Java NIO之FileChannel 详解

关键点说明 文件打开选项: StandardOpenOption.CREATE - 文件不存在时创建 StandardOpenOption.READ/WRITE - 读写权限 StandardOpenOption.APPEND - 追加模式 StandardOpenOption.TRUNCATE_EXISTING - 清空已存在文件 缓冲区操作: ByteBuffer.wrap…

stock-pandas,一个易用的talib的替代开源库。

原创内容第841篇,专注智能量化投资、个人成长与财富自由。 介绍一个ta-lib的平替——我们来实现一下,最高价突破布林带上轨,和最低价突破布林带下轨的可视化效果: cross_up_upper stock[high].copy()# cross_up_upper 最高价突破…

JVM 面经

1、什么是 JVM? JVM 就是 Java 虚拟机,它是 Java 实现跨平台的基石。程序运行之前,需要先通过编译器将 Java 源代码文件编译成 Java 字节码文件;程序运行时,JVM 会对字节码文件进行逐行解释,翻译成机器码指令&#x…

【JavaScript】合体期功法——DOM(一)

目录 DOMWeb API 基本概念作用和分类 什么是 DOMDOM 树DOM 对象 获取 DOM 元素根据 CSS 选择器来获取 DOM 元素选择匹配的第一个元素选择匹配的多个元素 其他获取 DOM 元素方法 修改元素的内容对象.innerText 属性对象.innerHTML 属性案例:年会抽奖 修改元素属性修改…

GAMMA数据处理(十)

今天向别人请教了一个问题,刚无意中搜索到了一模一样的问题 不知道这个怎么解决... ok 解决了 有一个GAMMA的命令可转换 但是很奇怪 完全对不上 转换出来的行列号 不知道为啥 再试试 是因为经纬度坐标的小数点位数 de as

Java入门知识总结——章节(二)

ps:本章主要讲数组、二维数组、变量 一、数组 数组是一个数据容器,可用来存储一批同类型的数据 🔑:注意 类也可以是一个类的数组 public class Main {public static class Student {String name;int age; // 移除 unsignedint…

动态IP:网络世界的“变色龙”如何改变你的在线体验?

你知道吗?有时候我觉得动态IP就像是网络世界里的“变色龙”。它不像静态IP那样一成不变,而是随时在变化,像是一个永远在换衣服的演员。你永远不知道它下一秒会变成什么样子,但正是这种不确定性,让它变得特别有趣。想象…

从24GHz到71GHz:Sivers半导体的广泛频率范围5G毫米波产品解析

在5G技术的浪潮中,Sivers半导体推出了创新的毫米波无线产品,为通信行业带来高效、可靠的解决方案。这些产品支持从24GHz到71GHz的频率,覆盖许可与非许可频段,适应高速、低延迟的通信场景。 5G通信频段的一点事儿及Sivers毫米波射频…

aocache:AOCache 新增功能深度解析:从性能监控到灵活配置的全方位升级

最近对aocache 进行了重要升级,最新版本0.6.0增加了几项新功能:性能分析日志,AOCache性能分析工具,切入点自定义配置,全局配置,本文详细说明这几项目新功能的作用和使用方式。 一、性能分析日志 需求背景…

Java EE 进阶:MyBatis-plus

MyBatis-plus的介绍 MyBatis-plus是MyBatis的增强工具,在MyBatis的基础上做出加强,只要MyBatis有的功能MyBatis-plus都有。 MyBatis-plus的上手 添加依赖 在我们创建项目的时候,我们需要添加MyBatis-plus和mysql的依赖 MyBatis-plus的依赖…

GitHub和Gitee上的一些AI项目

以下是GitHub和Gitee上的一些AI项目: GitHub上的AI项目 TensorFlow:一个端到端开源机器学习平台,包含大量工具和库,广泛应用于图像识别、自然语言处理等领域。PyTorch:由Facebook开发的开源深度学习框架,…