当前位置: 首页 > news >正文

Jenkins的pipeline Script的 每个组件的详细讲解

在Jenkins的Pipeline脚本中,各个组件的配置和Groovy的一些常用函数起到了决定性的作用,帮助开发人员控制自动化流程的执行。以下是对Jenkins Pipeline的主要组件和Groovy常用函数的详细讲解:

1. Jenkins Pipeline主要组件

1.1 agent
  • 功能:定义在哪台节点上执行Pipeline任务。
  • 语法:
    • agent any:表示可以在任何可用节点上执行。
    • agent none:表示不在任何节点上执行,适合在 stages 中单独指定 agent。
    • agent { label ‘label_name’ }:在特定标签的节点上执行。
    • agent { docker { image ‘image_name’ } }:使用特定的Docker镜像来执行Pipeline。
1.2 environment
  • 功能:设置环境变量,可以在整个Pipeline中使用。
  • 语法:
environment {ENV_VAR = 'value'PATH = "/usr/bin:/usr/local/bin:${PATH}"
}
1.3 options
  • 功能:配置Pipeline的高级选项,比如超时设置、丢弃旧的构建等。

  • 常见配置:

    • timeout(time: 1, unit: ‘HOURS’):将Pipeline的执行限制在1小时内。
    • disableConcurrentBuilds():防止并发构建。
    • buildDiscarder(logRotator(numToKeepStr: ‘5’)):只保留5个构建记录。
  • 实例

    options {timestamps()timeout(time: 4, unit: 'HOURS')buildDiscarder(logRotator(artifactDaysToKeepStr: '100', artifactNumToKeepStr: '100', daysToKeepStr: '200', numToKeepStr: '200'))copyArtifactPermission('/DS_BFFD/FFGFGGDY/ssffgd_ddfddf-MT');}
    1. timestamps()
    功能:在构建日志中添加时间戳。
    作用:每条日志消息前都会显示时间戳,方便用户查看构建过程中的时间信息。
    2. timeout(time: 4, unit: 'HOURS')
    功能:设置构建的超时时间。
    参数:
    time: 4:表示超时时间为 4。
    unit: 'HOURS':表示时间单位为小时。
    作用:如果构建在 4 小时内没有完成,Jenkins 将自动终止该构建。这有助于防止构建长时间挂起。
    3. buildDiscarder(logRotator(...))
    功能:设置构建的保留策略。参数:logRotator 是一个用于控制构建日志和工件保留的类,具体参数如下:artifactDaysToKeepStr: '100':保留构建工件的天数,设置为 100 天。artifactNumToKeepStr: '100':保留的构建工件数量,设置为 100 个。daysToKeepStr: '200':保留构建日志的天数,设置为 200 天。numToKeepStr: '200':保留的构建日志数量,设置为 200 个。
    作用:如果构建在 4 小时内没有完成,Jenkins 将自动终止该构建。这有助于防止构建长时间挂起。
    4. buildDiscarder(logRotator(...))
    功能:设置构建的保留策略。
    参数:logRotator 是一个用于控制构建日志和工件保留的类,具体参数如下:artifactDaysToKeepStr: '100':保留构建工件的天数,设置为 100 天。artifactNumToKeepStr: '100':保留的构建工件数量,设置为 100 个。daysToKeepStr: '200':保留构建日志的天数,设置为 200 天。numToKeepStr: '200':保留的构建日志数量,设置为 200 个。
    作用:这个选项帮助管理 Jenkins 中的构建历史,确保不会无限制地保留构建日志和工件,从而节省存储空间。
    5. copyArtifactPermission('/DS_BFFD/FFGFGGDY/ssffgd_ddfddf-MT')
    功能:设置对特定路径的复制工件的权限。
    参数:'/DS_BFFD/FFGFGGDY/ssffgd_ddfddf-MT' 是一个路径,表示允许从该路径复制工件。
    作用:这个选项确保在构建过程中可以从指定的路径复制工件,通常用于多项目构建或需要共享工件的场景。```
  • 总结

    • options 块用于设置构建的全局选项,包括时间戳、超时、构建日志和工件的保留策略,以及复制工件的权限。
    • buildDiscarder(logRotator(…)) 选项帮助管理构建历史,确保不会占用过多的存储空间。
    • copyArtifactPermission 选项确保在构建过程中可以从指定路径复制工件。

这些选项的设置有助于提高 Jenkins 构建的可管理性和可维护性。

1.4 parameters
  • 功能:定义构建时用户可以输入的参数。
  • 常见配置:
    • string(name: ‘ENV’, defaultValue: ‘dev’, description: ‘Environment to deploy’):文本输入。
    • booleanParam(name: ‘DEPLOY’, defaultValue: true, description: ‘是否部署’):布尔值输入。
    • choice(name: ‘BRANCH’, choices: [‘dev’, ‘qa’, ‘prod’], description: ‘分支选择’):选择输入。
1.5 tools
  • 功能:指定运行Pipeline时需要的工具(如JDK、Maven)。
  • 常见配置:
     tools {jdk 'JDK8'maven 'Maven 3.6.3'}
    
1.6 triggers
  • 功能:定义触发Pipeline的条件,比如定时执行或代码变更。
  • 常见配置:
    • cron(‘H 4/* 0 0 1-5’):按照特定时间执行。
    • pollSCM(‘H/5 * * * *’):每5分钟检查SCM是否有代码变更。
    • upstream(upstreamProjects: ‘project-name’, threshold: hudson.model.Result.SUCCESS):当指定的上游项目成功时触发。
      1.7 stages
  • 功能:包含具体的构建步骤,通常分成若干 stage。
  • 语法:
stages {stage('Build') {steps {echo 'Building...'}}stage('Test') {steps {echo 'Testing...'}}
}
1.8 post
  • 功能:定义在构建结束时执行的操作,如清理资源、通知等。
  • 常见选项:
    • always:无论成功或失败都执行。
    • success:构建成功时执行。
    • failure:构建失败时执行。
    • unstable:构建结果不稳定时执行。
  • 语法:
post {always {echo 'Cleaning up...'}success {echo 'Success!'}failure {echo 'Build failed!'}
}

2. Groovy常用函数

2.1 发送邮件的实现

Jenkins提供了 emailext 插件,用于发送构建通知邮件。可以自定义 body 内容,格式为HTML或纯文本。以下是一个带HTML格式的邮件发送示例:

post {failure {emailext (subject: "构建失败通知 - ${env.JOB_NAME} #${env.BUILD_NUMBER}",body: """<h3>构建失败通知</h3><p>项目名称: ${env.JOB_NAME}</p><p>构建编号: ${env.BUILD_NUMBER}</p><p>触发原因: ${currentBuild.description}</p><p>详情请查看 <a href="${env.BUILD_URL}">构建日志</a></p>""",recipientProviders: [[$class: 'DevelopersRecipientProvider']])}
}
2.2 sh 和 bat 执行系统命令

在不同操作系统中执行Shell或Batch命令。

Linux/macOS:

sh 'echo "Hello from Linux"'

Windows:

bat 'echo Hello from Windows'
2.3 catchError

用于在步骤中捕获错误并继续执行,以确保流程不中断。

catchError(buildResult: 'UNSTABLE') {sh 'exit 1' // 即使失败,也将当前构建标记为UNSTABLE而不是FAILED
}
2.4 archiveArtifacts

用于归档构建生成的文件,便于后续的访问。

archiveArtifacts artifacts: '**/target/*.jar', allowEmptyArchive: true
2.5 readFile 和 writeFile

用于在Pipeline中读取或写入文件内容。

def content = readFile 'myfile.txt'
writeFile file: 'output.txt', text: content

总结

Jenkins Pipeline脚本的灵活性体现在各个组件的组合使用上,如通过 agent 指定执行节点,parameters 实现构建参数化,post 中加入错误通知等。而Groovy的丰富函数扩展,如 emailext、archiveArtifacts 等,使得Pipeline的配置更加灵活和便捷。通过这些配置和Groovy函数的掌握,能更好地构建、监控和管理CI/CD流程。

相关文章:

Jenkins的pipeline Script的 每个组件的详细讲解

在Jenkins的Pipeline脚本中&#xff0c;各个组件的配置和Groovy的一些常用函数起到了决定性的作用&#xff0c;帮助开发人员控制自动化流程的执行。以下是对Jenkins Pipeline的主要组件和Groovy常用函数的详细讲解&#xff1a; 1. Jenkins Pipeline主要组件 1.1 agent 功能&…...

Tomcat 和 Netty 的区别及应用场景分析

在 Java Web 开发中&#xff0c;Tomcat 和 Netty 都是常见的网络框架&#xff0c;它们各自有着不同的设计理念和适用场景。本文将通过详细的对比和实际场景示例&#xff0c;帮助你理解 Tomcat 和 Netty 在功能、性能、架构等方面的差异&#xff0c;帮助你在实际开发中做出更合理…...

6.C操作符详解,深入探索操作符与字符串处理

C操作符详解&#xff0c;深入探索操作符与字符串处理 C语言往期系列文章目录 往期回顾&#xff1a; C语言是什么&#xff1f;编程界的‘常青树’&#xff0c;它的辉煌你不可不知VS 2022 社区版C语言的安装教程&#xff0c;不要再卡在下载0B/s啦C语言入门&#xff1a;解锁基础…...

生数科技发布 Vidu 1.5 新版本,引领视频大模型新潮流

在国内视频大模型领域&#xff0c;生数科技一直以创新和突破而备受瞩目。近日&#xff0c;生数科技再度发力&#xff0c;发布了 Vidu 1.5 新版本&#xff0c;为视频创作带来了全新的变革与机遇。 Vidu 1.5 新版本在多个方面展现出了卓越的性能和创新的特点。首先&#xff0c;它…...

CentOS 7 aarch64停止更新后安装gcc8 —— 筑梦之路

CentOS 7.9非X86架构系统生命周期结束后&#xff08;2024-6-30&#xff09;配置在线可用yum源 —— 筑梦之路_centos7.9 arm-CSDN博客 以前的做法 sudo yum install centos-release-scl-rh sudo yum install devtoolset-8-buildsudo yum install devtoolset-8-gdb sudo yum i…...

WPF下 DataGrid加入序号列

先上代码&#xff1a; <DataGrid Name"DGV" AutoGenerateColumns"False" Grid.Row"0" Grid.Column"0" HorizontalGridLinesBrush"RoyalBlue" VerticalGridLinesBrush"Tomato" CanUserAddRows"False&qu…...

iOS UI 自动化 手势右滑退出当前页面

1、TouchAction from appium.webdriver.common.touch_action import TouchAction# 获取屏幕的宽度和高度 screen_width driver.get_window_size()["width"] screen_height driver.get_window_size()["height"]# 定义滑动的起点和终点坐标 start_x 0 en…...

《MySQL 实战教程:从零开始到高手进阶》

当然可以。下面是一篇关于MySQL的学习指南&#xff0c;它适合初学者到中级用户&#xff0c;涵盖了MySQL的基础知识、安装步骤、基本命令以及一些高级功能。 MySQL 学习指南 1. 了解 MySQL MySQL 是一个关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典…...

第27天 安全开发-PHP应用TP 框架路由访问对象操作内置过滤绕过核心漏洞

时间轴 演示案例 TP 框架-开发-配置架构&路由&MVC 模型 TP 框架-安全-不安全写法&版本过滤绕过 TP 框架-开发-配置架构&路由&MVC 模型 参考&#xff1a; https://www.kancloud.cn/manual/thinkphp5_1 1、配置架构-导入使用 去thinkphp官网可以看到&…...

应用系统开发(12) Zync中实现数字相敏检波

在 Xilinx Zynq 系列(如 Zynq-7000 或 Zynq UltraScale+)中实现数字相敏检波(DSP,Digital Synchronous Detection)可以通过硬件(PL部分,FPGA逻辑)和软件(PS部分,ARM Cortex-A 处理器)的协同工作来实现。以下是一个详细的设计方法,包括基本原理和 Zynq 的实现步骤。…...

栈Stack和队列Queue

目录 一、栈 &#xff08;1&#xff09;用数组实现 &#xff08;2&#xff09;用单链表实现 &#xff08;3&#xff09;用标注尾结点的单链表实现 &#xff08;4&#xff09;用双向链表实现 2、栈的实际应用 &#xff08;1&#xff09;改变元素的序列 &#xff08;2&am…...

uniapp 微信小程序地图标记点、聚合点/根据缩放重合点,根据缩放登记显示气泡marik标点

如图&#xff0c;如果要实现上方的效果&#xff1a; 上方两个效果根据经纬度标记点缩放后有重复点会添加数量 用到的文档地址https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.addMarkers.htmlMapContext.addMarkers(Object object) 添加标记点Ma…...

Percona XtraBackup备份docker版本mysql 5.7

my.cnf配置文件 [client] default_character_setutf8[mysqld] # 数据存储目录&#xff08;必须手动指定&#xff09; datadir/var/lib/mysql/data# 字符集 collation_server utf8_general_ci character_set_server utf8 # 二进制日志 server-id1 log_bin/var/log/mysql/binl…...

C++:关联式容器的介绍及map与set的使用

我们之前已经学习过string,vector,list,queue,priority_queue等容器&#xff0c;这些容器我们统称为序列式容器&#xff0c;因为它们的数据的逻辑结构呈线性。因为这些容器中存储的数据即便二者之间发生交换&#xff0c;也不会对原有的容器结构造成太大影响。 但上篇文章我们介…...

一文说清:Linux下C++静态库的封装和调用

一 引言 《一文说清&#xff1a;windows下C静态库的封装和调用》中说了&#xff1a; 静态库允许开发者在多个项目中复用代码&#xff0c;减少重复劳动&#xff0c;并增强程序的可维护性。并讲述了windows环境下创建、封装以及调用C静态库的过程。 本文则描述了&#xff0c;如…...

【Java 学习】数据类型、变量、运算符、条件控制语句

Java基础语法 1. 打印 Hello World !2. 变量类和数据类型2.1 什么是变量&#xff1f;什么是数据类型&#xff1f;2.2 常用的数据类型2.3 使用变量2.4 String 类数据类型2.4.1 String 类基本概念2.4.2 String 类的使用 3. 运算符3.1 算数运算符3.2 关系运算符3.3 逻辑运算符3.4 …...

【软考】系统架构设计师-数据库设计基础

数据库核心考点 三级模式-两级映射 外模式--视图 概念模式--表&#xff08;模式、基本表&#xff09; 内模式--物理文件 数据库设计 概念结构设计&#xff1a;属性冲突、命名冲突、结构冲突 逻辑结构设计&#xff1a;关系模式&#xff08;层次模型、网络模型&#xff09…...

【Jmeter相关】

Jmeter 可以作为接口测试问题&#xff0c;也会涉及到性能相关的问题 一、JMeter中用户定义的变量(User Defined Variables&#xff09;和用户参 数&#xff08;User Parameters&#xff09;的区别是什么? 在JMeter中都是用于定义和存储测试数据的方法&#xff0c;但它们有一…...

拍立淘按图搜索API接口系列,返回示例图参考

拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品&#xff0c;该接口返回的通常是一个JSON格式的响应&#xff0c;其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例&#xff0c;同时提供对其关键字段的解…...

OSG开发笔记(三十二):深入理解相机视口、制作支持与主视图同步变换旋转的相机HUD

​若该文为原创文章&#xff0c;未经允许不得转载 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/143852695 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 长沙红胖子Qt…...

2024RISC-V中国峰会 演讲幻灯片和视频回放均已公开

目录 一、幻灯片地址: 二、演讲视频: 一、幻灯片地址: RVSC2024/slides at main cnrv/RVSC2024 GitHub 二、演讲视频: RISC-V国际基金会的个人空间-RISC-V国际基金会个人主页-哔哩哔哩视频...

河道无人机雷达测流监测系统由哪几部分组成?

在现代水利管理中&#xff0c;河道无人机雷达监测系统正逐渐成为一种重要的工具&#xff0c;为河道的安全和管理提供了强大的技术支持。那么&#xff0c;这个先进的监测系统究竟由哪几部分组成呢&#xff1f; 河道无人机雷达监测系统工作原理 雷达传感器通过发射电磁波或激光束…...

28.<Spring博客系统⑤(部署的整个过程(CentOS))>

引入依赖 Spring-boot-maven-plugin 用maven进行打包的时候必须用到这个插件。看看自己pom.xml中有没有这个插件 并且看看配置正确不正常。 注&#xff1a;我们这个项目打的jar包在30MB左右。 <plugin><groupId>org.springframework.boot</groupId><artif…...

OpenAI震撼发布:桌面版ChatGPT,Windows macOS双平台AI编程体验!

【雪球导读】 「OpenAI推出ChatGPT桌面端」 OpenAI重磅推出ChatGPT桌面端&#xff0c;全面支持Windows和macOS系统&#xff01;这款新工具为用户在日常生活和工作中提供了前所未有的无缝交互体验。对于那些依赖桌面端进行开发工作的专业人士来说&#xff0c;这一更新带来了令人…...

香港站群服务器有助于提升网站在搜索引擎中的排名

拥有253个IP的服务器通常被称为多IP站群服务器。这种服务器架构主要用于集中管理多个网站&#xff0c;允许网站管理员通过一个后台管理系统来高效管理和更新这些网站。 一、主要特点 集中管理&#xff1a;多IP站群服务器通过统一的后台管理系统&#xff0c;可以实现对多个网站…...

YOLOX:使用自己数据集训练模型及改进--1.YOLOX环境搭建及运行

YOLOX环境搭建及运行 YOLO X网络架构是继YOLO v5后,由旷视科技于2021年提出的新一代anthor-free模型,研究者将网络分为输入端、Backbone、PAFPN及Predication,并在Predication提出Decoupled Head、Anchor-free和Multi positives(后文会详细介绍)。 本篇文章介绍如何通过官…...

PyTorch使用教程-深度学习框架

PyTorch使用教程-深度学习框架 1. PyTorch简介 1.1-什么是PyTorch ​ PyTorch是一个广泛使用的开源机器学习框架&#xff0c;特别适合深度学习的应用。它以其动态计算图而闻名&#xff0c;允许在运行时修改模型&#xff0c;使得实验和调试更加灵活。PyTorch提供了强大的GPU加…...

TON商城与Telegram App:生态融合与去中心化未来的精彩碰撞

随着区块链技术的快速发展&#xff0c;去中心化应用&#xff08;DApp&#xff09;逐渐成为了数字生态的重要组成部分。而Telegram作为全球领先的即时通讯应用&#xff0c;不仅仅满足于传统的社交功能&#xff0c;更在区块链领域大胆探索&#xff0c;推出了基于其去中心化网络的…...

“乐鑫组件注册表”简介

当启动一个新的开发项目时&#xff0c;开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间&#xff0c;还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念&#xff0c;旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…...

凹凸/高度贴图、法线贴图、视差贴图、置换贴图异同

参考&#xff1a; 凹凸贴图、法线贴图、置换贴图-CSDN博客 视差贴图 - LearnOpenGL CN 1,Learn about Parallax(视差贴图) - 知乎 “视差贴图”的工作流程及原理(OpenGL) - 哔哩哔哩 法线与置换贴图原理讲解以及烘焙制作&#xff01; - 知乎 1. Bump Mapping 凹凸贴图 BumpMap…...

石湾做网站/百度知道答题赚钱

OSSIM安装注意事项 1.如何选择OSSIM版本 SIEM (安全信息和事件管理)是软件和服务的组合,是安全信息管理和安全事件管理的融合体。SIEM可以管理企业IT资源产生的安全信息(包括日志、告警等)进行统一的实时监控误操作行为进行监控、审计分析、调查取证、出具各种报表报告。OSS…...

品牌网站设计公司哪家好/seo的流程是怎么样的

你有什么技能比大多人&#xff08;超过90%以上&#xff09;更好&#xff1f; 现在可能是视频后期制作的能力&#xff0c;但我希望以后会是编程的能力&#xff0c;待人接物、为人处世的能力。 针对这个技能的获取你有什么成功的经验&#xff1f; 点亮视频后期这个技能可能和高中…...

大连网站在哪备案/推广平台怎么做

问题描述 python中使用matplotlib包画图失败 文件开头导入matplotlib包 # 正负条形图 import matplotlib.pyplot as plt import numpy as np运行程序后报错如下&#xff1a; 引用文本 Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the fi…...

点对点视频网站开发/新闻网最新消息

名字和id在之前的例子中我们看到了一些方法可以获得线程的名字的方法&#xff0c;构造方法中也出现了给线程命名的方法。我们举个例子。public class Main {public static void main(String[] args){Thread thread1new Thread(new TheThread(),"thread1");Thread thr…...

住房城乡建设部网站合同示范/广西seo关键词怎么优化

1.月之头脑是处方(月の頭脳は処方せん)&#xff1a;以铃仙优昙华院前往红魔馆送药的旅程为起点&#xff0c;穿插魔理沙误捡药物产生的误会&#xff0c;以及比那名居 天子/射命丸 文的煽动&#xff0c;当然结尾众人都获得一个圆满结局。2.魔理沙的盗梦空间(第9回東方ニコ童祭-夢…...

为网站优势/成都做网络推广的公司有哪些

不多说&#xff0c;直接上干货&#xff01; 机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。本文总结一下常见的机器学习算法&#xff0c;以供参考。机器学习的算法很多&#xff0c;很多算法是一类算法&#xff0c;而有些…...