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流程。

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

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

相关文章

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;获取安装命令&#xff0c;安装MindSpo…

gitlab和jenkins连接

一&#xff1a;jenkins 配置 安装gitlab插件 生成密钥 id_rsa 要上传到jenkins&#xff0c;id_rsa.pub要上传到gitlab cat /root/.ssh/id_rsa 复制查看的内容 可以看到已经成功创建出来了对于gitlab的认证凭据 二&#xff1a;配置gitlab cat /root/.ssh/id_rsa.pub 复制查…

SpringBoot实现WebSocket

参考链接&#xff1a;https://www.kancloud.cn/king_om/mic_03/2783864 一、环境搭建 1.创建SpringBoot项目&#xff0c;引入相关依赖 <dependencies><!-- Spring Boot核心启动器&#xff0c;引入常用依赖基础 --><dependency><groupId>org.springf…

现代密码学|公钥密码体制 | RSA加密算法及其数学基础

文章目录 公钥密码RSA数学基础欧拉函数欧拉定理模指数运算 RSA加密算法对rsa的攻击 公钥密码 现代密码学&#xff5c;公钥密码体制概述 加密 A用B的公钥加密 B用B的私钥解密 认证 A使用A的私钥加密 B使用A的公钥解密 加密认证 A用A的私钥加密&#xff0c;再用B的公钥加密 B用…

VuePress v2 快速搭建属于自己的个人博客网站

目录 为什么用VuePress&#xff1f; 一、前期准备 Node.js 使用主题快速开发 二、VuePress安装 三、个性化定制 修改配置信息 删除不需要的信息 博客上传 四、部署 使用github快速部署 初始化仓库 本地配置 配置github的ssh密钥 部署 为什么用VuePress&#xff…

【阅读记录-章节1】Build a Large Language Model (From Scratch)

目录 1. Understanding large language models1.1 What is an LLM?补充介绍人工智能、机器学习和深度学习的关系机器学习 vs 深度学习传统机器学习 vs 深度学习&#xff08;以垃圾邮件分类为例&#xff09; 1.2 Applications of LLMs1.3 Stages of building and using LLMs1.4…

平台整合是网络安全成功的关键

如今&#xff0c;组织面临着日益复杂、动态的网络威胁环境&#xff0c;随着恶意行为者采用越来越阴险的技术来破坏环境&#xff0c;攻击的数量和有效性也在不断上升。我们最近的 Cyber​​Ark 身份威胁形势报告&#xff08;2024 年 5 月&#xff09;发现&#xff0c;去年 99% 的…

PlantUML——时序图

PlantUML时序图 背景 时序图&#xff08;Sequence Diagram&#xff09;&#xff0c;又名序列图、循序图&#xff0c;是一种UML交互图&#xff0c;用于描述对象之间发送消息的时间顺序&#xff0c;显示多个对象之间的动态协作。时序图的使用场景非常广泛&#xff0c;几乎各行各…

【MYSQL】分库分表

一、什么是分库分表 分库分表就是指在一个数据库在存储数据过大&#xff0c;或者一个表存储数据过多的情况下&#xff0c;为了提高数据存储的可持续性&#xff0c;查询数据的性能而进行的将单一库或者表分成多个库&#xff0c;表使用。 二、为什么要分库分表 分库分表其实是两…

Spring纯注解开发

在我的另一篇文章中&#xff08;初识Spring-CSDN博客&#xff09;&#xff0c;讲述了Bean&#xff0c;以及通过xml方式定义Bean。接下来将讲解通过注解的方法管理Bean。 我们在创建具体的类的时候&#xff0c;可以直接在类的上面标明“注解”&#xff0c;以此来声明类。 1. 常…

git push时报错! [rejected] master -> master (fetch first)error: ...

错误描述&#xff1a;在我向远程仓库push代码时&#xff0c;即执行 git push origin master命令时发生的错误。直接上错误截图。 错误截图 错误原因&#xff1a; 在网上查了许多资料&#xff0c;是因为Git仓库中已经有一部分代码&#xff0c;它不允许你直接把你的代码覆盖上去…

java常用工具包介绍

Java 作为一种广泛使用的编程语言&#xff0c;提供了丰富的标准库和工具包来帮助开发者高效地进行开发。这些工具包涵盖了从基础的数据类型操作到高级的网络编程、数据库连接等各个方面。下面是一些 Java 中常用的工具包&#xff08;Package&#xff09;及其简要介绍&#xff1…

latex中,两个相邻的表格,怎样留一定的空白

目录 问题描述 问题解决 问题描述 在使用latex写论文时&#xff0c;经常表格需要置顶写&#xff0c;则会出现两个表格连在一起的情况。下一个表名容易与上面的横线相连&#xff0c;如何通过明令&#xff0c;留出一定的空白。 问题解决 在第二个表格的 \centering命令之后…

react中如何在一张图片上加一个灰色蒙层,并添加事件?

最终效果&#xff1a; 实现原理&#xff1a; 移动到图片上的时候&#xff0c;给img加一个伪类 &#xff01;&#xff01;此时就要地方要注意了&#xff0c;因为img标签是闭合的标签&#xff0c;无法直接添加 伪类&#xff08;::after&#xff09;&#xff0c;所以 我是在img外…

C++builder中的人工智能(27):如何将 GPT-3 API 集成到 C++ 中

人工智能软件和硬件技术正在迅速发展。我们每天都能看到新的进步。其中一个巨大的飞跃是我们拥有更多基于自然语言处理&#xff08;NLP&#xff09;和深度学习&#xff08;DL&#xff09;机制的逻辑性更强的AI聊天应用。有许多AI工具可以用来开发由C、C、Delphi、Python等编程语…

【项目开发】URL中井号(#)的技术细节

未经许可,不得转载。 文章目录 前言一、# 的基本含义二、# 不参与 HTTP 请求三、# 后的字符处理机制四、# 的变化不会触发网页重新加载五、# 的变化会记录在浏览器历史中六、通过 window.location.hash 操作七、onhashchange 事件八、Google 对 # 的处理机制前言 2023 年 9 月…

AUTOSAR_EXP_ARAComAPI的7章笔记(5)

☞返回总目录 相关总结&#xff1a;典型的 SOME/IP 多绑定用例总结 7.3.3 典型的SOME/IP多绑定用例 在前面的章节中&#xff0c;我们简要提到&#xff0c;在一个典型的SOME/IP 网络协议的部署场景中&#xff0c;AP SWC不太可能自己打开套接字连接来与远程服务通信。为什么不…

Jenkins下载安装、构建部署到linux远程启动运行

Jenkins详细教程 Winodws下载安装Jenkins一、Jenkins配置Plugins插件管理1、汉化插件2、Maven插件3、重启Jenkins&#xff1a;Restart Safely插件4、文件传输&#xff1a;Publish Over SSH5、gitee插件6、清理插件&#xff1a;workspace cleanup system系统配置1、Gitee配置2、…

Flutter:Dio下载文件到本地

import dart:io; import package:dio/dio.dart;main(){// 创建dio对象final dio Dio();// 下载地址var url https://*******.org/files/1.0.0.apk;// 手机端路径String savePath Directory.systemTemp.path/ceshi.apk;print(savePath);downLoad(dio,url,savePath); }downLo…

【C++笔记】C++三大特性之多态

【C笔记】C三大特性之多态 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】C三大特性之多态前言一.多态1.1 多态的概念1.2 虚函数1.3 虚函数的重写/覆盖1.4 多态的定义及实现 二.虚函数重写的⼀些其他问题2.1 协变(…