自動化發布工具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.pswp.cn/bicheng/74928.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74928.shtml
英文地址,請注明出處:http://en.pswp.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開發的開源深度學習框架,…