Jenkins(集群與流水線配置)

Jenkins(集群與流水線配置)

Jenkins集群

集群化構建可以提升構建效率,也可以并發在多臺機器上執行構建。

安裝前提:內存至少512MB、Java 17 以上、Maven環境、Git環境

配置集群步驟

配置節點菜單

在這里插入圖片描述

新建節點

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

查看節點配置狀態

新建完節點,點擊所配置的節點,查看配置狀態

在這里插入圖片描述

在這里插入圖片描述

配置完,在該節點的root目錄,可以看到

# 可以在/root目錄下,看到該文件
remoting
remoting.jar

配置并發構建

默認情況,不會并發構建,只會主節點進行構建任務。

需要在該任務構建配置,勾選并發構建配置。

在這里插入圖片描述

勾選后,進行并發構建

在這里插入圖片描述

配置節點的并發構建的個數

在[構建執行狀態],點擊每個節點名稱,進行配置構建個數

在這里插入圖片描述

在這里插入圖片描述

配置任務只能在某節點進行構建

在該任務進行配置,

# 基本語法有:
節點標簽名1 || 節點標簽名1    # 只能在節點1或節點2上執行
節點標簽名1 && 節點標簽名1    

在這里插入圖片描述

Pipline流水線

流水線既能作為任務的本身,也能作為Jenkinsfile。

使用流水線可以讓我們的任務從ui手動操作,轉換為代碼化,像docker的dockerfile一樣,從shell命令到配置文件,更適合大型項目,可以讓團隊其他開發者同時參與進來,同時也可以編輯開發Jenkinswebui不能完成的更復雜的構建邏輯,作為開發者可讀性也更好。

自動化構建

在這里插入圖片描述

主要腳本

pipeline:整條流水線
agent:指定執行器
stages:所有階段
stage:某一階段,可有多個
steps:階段內的每一步,可執行命令

流水線配置

在這里插入圖片描述

基礎框架 -基本腳本:

pipeline {agent any  # agent單獨配置,# agent {#     node {#         label "master"  # 配置節點名稱,在上面的配置集群時,指定的新建節點。例:jenkins-02#     }  # }stages {stage('拉取代碼') {steps {echo '拉取代碼完成'}}stage('執行構建') {steps {echo '執行構建完成'}}}post {always {echo "完成"}failure {echo "失敗"}}
}

注意:每次更改腳本,需要手動,點擊Approve(批準)即可。

否則執行任務,會出現該異常

org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException: script not yet approved for use...

在這里插入圖片描述
點擊Approve(批準)即可。

安裝可視化界面

blue ocean可視化流水線界面
在這里插入圖片描述

訪問,查看新的UI界面
在這里插入圖片描述
在這里插入圖片描述

聲明式流水線

在該任務的流水線,點擊流水線語法,
在這里插入圖片描述

在這里插入圖片描述

Git配置

在這里插入圖片描述

# 生成的腳步
git credentialsId: 'gitee', url: 'https://gitee.com/yan418/jenkins.git'
配置Maven
# 可通過命令配置
# 找到所下載的代碼目錄,對應的pom.xml文件位置,進行maven打包
# 單行寫命令,sh "mvn --version"
# 多行寫命令,在 sh """ xxx  """ 結尾
stage("執行構建") {steps {sh """ cd demomvn clean package"""echo '構建完成'}
}
Pre Steps(前期步驟)

在這里插入圖片描述

# 生成的腳步
sshPublisher(publishers: [sshPublisherDesc(configName: 'testserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'sh cmm.sh demo', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
Post Steps(后續步驟)

在這里插入圖片描述

頁面配置,與之前頁面操作配置一樣,點擊下方,生成腳本。

# 生成的腳步
sshPublisher(publishers: [sshPublisherDesc(configName: 'testserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'nohup /usr/local/java/jdk1.8.0_202/bin/java -jar /root/cmm/demo*.jar >/root/log/demo.log 2>&1 & sleep 1', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/cmm', remoteDirectorySDF: false, removePrefix: 'demo/target', sourceFiles: '**/demo/target/demo*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
對應完整的腳步

根據上面生產的腳步,進行完整拼接,配置該任務的腳步

pipeline {agent any  tools {maven "maven-3.6.1"  # maven-3.6.1,是在Tools里配置的Maven名稱}stages {stage('拉取代碼') {steps {# 從git倉庫,拉取代碼git credentialsId: 'gitee', url: 'https://gitee.com/yan418/jenkins.git'echo '拉取代碼完成'}}stage('執行打包項目') {steps {# 找到所下載的代碼目錄,對應的pom.xml文件位置,進行maven打包# 單行寫命令,sh "mvn --version"# 多行寫命令,在 sh """ xxx  """ 結尾sh """ cd demomvn clean package"""echo '構建完成'}}stage('執行Pre Steps') {steps {# Pre Steps(前期步驟)sshPublisher(publishers: [sshPublisherDesc(configName: 'testserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'sh cmm.sh demo', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])echo '執行構建完成'}}stage('發送jar包到測試服務器') {steps {# Post Steps(后續步驟)sshPublisher(publishers: [sshPublisherDesc(configName: 'testserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'nohup /usr/local/java/jdk1.8.0_202/bin/java -jar /root/cmm/demo*.jar >/root/log/demo.log 2>&1 & sleep 1', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/cmm', remoteDirectorySDF: false, removePrefix: 'demo/target', sourceFiles: '**/demo/target/demo*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])echo '執行構建完成'}}}post {always {echo "完成"}failure {echo "失敗"}}
}

配置完,進行構建任務,查看流水線情況,也可以單獨執行某個環節的任務重啟

在這里插入圖片描述

配置多分支Job任務

一套代碼,分為test分支和master分支,通過一個Jenkins,分別發送部署到測試服務和生產服務器。

在這里插入圖片描述

在這里插入圖片描述

再點擊-創建流水線,如果在操作過程失敗,點擊設置按鈕,進行手動配置

在這里插入圖片描述

配置分支源

手動配置多分支源

在這里插入圖片描述

配置Jenkinsfile

在這里插入圖片描述

將不同的Jenkinsfile文件,提交不同的分支上。

在這里插入圖片描述

在這里插入圖片描述

查看頁面配置

分別單獨對不同的分支的代碼,進行構建。也可以在多分支JOB運行,一次構建不同分支的任務構建。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93368.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93368.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93368.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入剖析ROS參數服務器通信機制 ——共享全局數據的“云端倉庫”實現原理

?1. 核心概念:分布式數據共享容器? ?定位?:ROS參數服務器(Parameter Server)是ROS架構中的全局共享存儲系統,相當于機器人的“云端倉庫”。 ?作用?: 存儲多節點共享的靜態配置參數(如機器…

21.AlexNet

雖然LeNet在手寫數字識別上取得了不錯的結果,但是他在對于更大的數據集效果就十分有限。 一方面,對于更大尺寸的圖像效果有限 另一方面,對于更多分類的任務效果有限 自LeNet后的十幾年,計算機視覺領域步入寒冬,神經網絡…

Shell腳本-條件判斷相關參數

一、前言在 Shell 腳本編程中,條件判斷 是實現流程控制的核心機制之一。無論是判斷文件是否存在、字符串是否相等,還是數值大小比較,都離不開條件判斷語句。本文將帶你全面掌握 Shell 腳本中與條件判斷相關的參數和語法,包括&…

何為“低空經濟”?

低空經濟(Low-Altitude Economy)是指以1000米以下空域(部分場景可延伸至3000米)為核心,以無人機(UAV)、電動垂直起降飛行器(eVTOL)、直升機、通航飛機等航空器為載體&…

線性代數 | 直觀理解一些概念

注:本文為 “線性代數 直觀理解概念” 相關合輯。 英文引文,機翻未校。 中文引文,略作重排。 如有內容異常,請看原文。 直觀理解線性代數的一些概念 2015-03-06 Updated: 2015-05-09 本文介紹矩陣的一些相關概念的直觀理解&…

Spring AI 集成阿里云百煉平臺

Spring AI 集成阿里云百煉平臺 創建API key 在阿里云百煉平臺創建API key設置系統變量。阿里云百煉 api key 創建 API 參考 官方API地址:https://bailian.console.aliyun.com (1)在阿里云百煉控制臺,選擇API參考菜單。 API…

Codeforces Round 859 (Div. 4) A - D + F - G2 題解

Codeforces Round 859 (Div. 4) A - D F - G2 題解A. Plus or Minus&#xff08;800 分難度&#xff09; 思路&#xff1a; 直接 if - else 判斷。 參考代碼&#xff1a; #include<bits/stdc.h> using namespace std; void solve(){int a, b, c;cin >> a >&g…

【Java web】Servlet 詳解

一、什么是 Servlet&#xff1f;—— 你不知道的 "網頁服務員"想象你走進一家網紅書店&#xff08;比如 "在線 Java 書店"&#xff09;&#xff0c;想買一本《Java 編程思想》。你告訴前臺服務員你的需求&#xff0c;服務員去倉庫找書、包裝、收款&#xf…

數據庫Microsoft Access、SQL Server和SQLite三者對比及數據庫的選型建議

SQLite本質是代碼庫&#xff0c;Access是單文件桌面DB&#xff0c;SQL Server是正經的C/S架構數據庫。這就像比較自行車、家用轎車和卡車&#xff0c;完全不同的設計目標。 核心區別對比表特性Microsoft AccessSQL ServerSQLite類型桌面DBMS (文件型)客戶端/服務器 RDBMS嵌入式…

【C++】默認構造函數,參數化構造函數,拷貝構造函數,拷貝賦值運算符, 移動構造函數 ,移動賦值運算符

1. 默認構造函數 (Default Constructor) 作用&#xff1a; 無參創建對象 簽名&#xff1a; ClassName() 特點&#xff1a; ①無參數或所有參數都有默認值 ②若未聲明任何構造函數&#xff0c;編譯器自動生成&#xff08;空實現&#xff09; ③用于容器默認初始化&#xff08;如…

辦公效率提升指南:完成重復任務自動化

手動操作容易出錯&#xff0c;尤其是在處理大量數據或復雜文檔時。它將PDF轉換、Word處理、Excel操作、OCR識別等高頻功能融為一體&#xff0c;界面清爽無冗余&#xff0c;零廣告打擾&#xff0c;專注提升工作效率。它內置七大核心模塊&#xff1a;自動任務、系統工具、文件處理…

數字煉金術:當API工作流遇見AI客服—點石成金的智能革命!

目錄 引言 一、藍耘元生代MaaS平臺概述 1.1 藍耘平臺的API服務 1.2 藍耘平臺的優勢 二、初識藍耘元生代MaaS平臺—帶你深度體驗 2.1 從零開始——平臺注冊與環境搭建 2.2 藍耘平臺的優勢在哪里&#xff1f; 三、API工作流調用技巧與實踐 3.1 API工作流設計與調用流程 …

HackMyVM-Uvalde

目錄信息搜集漏洞利用權限提升信息搜集 主機發現 ┌──(kali?kali)-[~] └─$ nmap -sn 192.168.21.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-16 01:10 EDT Nmap scan report for dev.medusa.hmv (192.168.21.6) Host is up (0.00015s latency). MAC Addr…

「Java EE開發指南」如何使用MyEclipse中的Web Fragment項目?

開發者可以通過使用Web Fragment項目模塊化應用程序部署描述符&#xff0c;本文提供如何使用它們的必要信息。 該特性在MyEclipse中可用。 MyEclipse v2025.1離線版下載 通過使用Web Fragment項目&#xff0c;您的Web應用程序部署描述符可以模塊化&#xff0c;就像能夠模塊化…

redis的key過期刪除策略和內存淘汰機制

一、key的過期刪除策略 原由&#xff1a;一般情況下&#xff0c;在使用redis作緩存&#xff0c;對k設置過期時間&#xff0c;當過期時間到后&#xff0c;k還是占用內存的&#xff0c;并沒有從內存中移除。 1.定時刪除 在設置key的過期時間的同時&#xff0c;為該key創建一個定…

NVIDIA Nsight Deep Learning Designer使用

一、關于產品 1.1 產品介紹 NVIDIA Nsight Deep Learning Designer 是一款面向 AI 推理開發者的可視化建模與優化工具。它支持基于 ONNX 格式的神經網絡模型編輯、結構可視化、性能分析與 TensorRT 引擎導出&#xff0c;幫助用戶更高效地設計、調優和部署高性能推理模型。該工…

Android 常見100道面試題(完整版)

一、基礎組件與核心原理Activity 相關Q1&#xff1a;請描述 Activity 的完整生命周期&#xff0c;從創建到銷毀經歷哪些關鍵方法&#xff1f;A&#xff1a;Activity 完整生命周期包括&#xff1a;onCreate&#xff08;初始化&#xff09;→ onStart&#xff08;可見&#xff09…

Navicat 為 SQLite 數據庫設置密碼指南

Navicat 為 SQLite 數據庫設置密碼指南 在 SQLite 中設置密碼實際上是通過加密實現的&#xff0c;Navicat 使用 SQLCipher 擴展來提供數據庫加密功能。以下是詳細的操作方法和注意事項&#xff1a; 在 Navicat 中設置密碼&#xff08;加密數據庫&#xff09; 步驟 1&#xff1a…

Spring Framework:Java 開發的基石與 Spring 生態的起點

在 Java 技術領域&#xff0c;Spring Framework 無疑是一座里程碑式的存在。它不僅徹底改變了 Java 企業級應用的開發模式&#xff0c;更以其為核心衍生出了龐大的 Spring 生態系統&#xff0c;成為無數開發者構建應用的首選技術棧。本文將以 Spring Framework 為核心&#xff…

Unity中 terriaria草,在攝像機拉遠的時候就看不見了,該怎么解決

在 Unity 中&#xff0c;當攝像機拉遠時草就看不見&#xff0c;可能是由于地形細節距離設置、攝像機裁剪平面設置或 LOD&#xff08;Level of Detail&#xff09;設置不當導致的。以下是具體的解決方法&#xff1a;調整地形細節距離&#xff1a;選中場景中的地形對象&#xff0…