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…