Jenkins高级篇之Pipeline方法篇-Pipeline Basic Steps-5-方法timeout,waitUntil,withEnv

2024-06-11 11:18

本文主要是介绍Jenkins高级篇之Pipeline方法篇-Pipeline Basic Steps-5-方法timeout,waitUntil,withEnv,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

继续来学习basic pipeline这个插件的提供的方法,本篇主要学习timeout和waitUntil两个关于时间监控的方法。有时候,我们需要对一个stage执行时间进行精确监控。例如执行这个stage大概20分钟一定可以完成,那么我们就可以使用timeout 设置20分钟,如果操作20分钟还没有执行结束,那么当前这个pipeline stage就会被自动取消,状态显示为aborted。而waitUntil是一个等待一个条件出现就会终止执行等待的方法。下面我分别用一个简单例子来代码演示。withEnv是设置环境变量的,有时候我们还会设置一些普通变量放这个位置。

1.方法timeout

叫方法或者指令都可以,timeout的基本格式如下,例如我有一个代码块执行监控执行时间,那么放在timeout(){...}就好,

time(时间设置,默认是分钟为单位) {// 需要监控的代码执行
}

我写一个一分钟超时的简单代码。

import hudson.model.*;println env.JOB_NAME
println env.BUILD_NUMBERpipeline{agent anystages{stage("init") {steps{script {timeout(1) {sh('java -version')//sleep 61}}}}}
}

上面我没有执行sleep语句,那么这个打印java -version的代码肯定能在一分钟之内完成,这个job执行的状态是成功。那么,如果我取消sleep这个前面注释,也就是这个代码要执行61秒以上的时间,但是我给了timeout是1分钟,那么这个job跑起来就会自动cancel,状态是aborted。

日志如下:

[Pipeline] {
[Pipeline] timeout
Timeout set to expire in 1 min 0 sec
[Pipeline] {
[Pipeline] sh
[pipeline_basic_steps] Running shell script
+ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK Server VM (build 25.181-b13, mixed mode)
[Pipeline] sleep
Sleeping for 1 min 1 sec
Cancelling nested steps due to timeout
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Timeout has been exceeded
Finished: ABORTED

2.方法waitUntil

在waitUntil{...}里面的代码会无限制循环执行下去,直到返回true,如果返回是false,会在很短时间内再次尝试,没有尝试次数限制,如果有异常,会退出。这个我没有实际用过,不好举例。

import hudson.model.*;println env.JOB_NAME
println env.BUILD_NUMBERpipeline{agent anystages{stage("init") {steps{script {timeout(5) {waitUntil {script {// 监控某一个服务是否启动完成代码}}}}}}}
}

我没有想出一个实际例子,这里写一个伪代码。场景就是,在5分钟之内,我使用waitUntil去一直轮询检查某一个服务是否启动完成。

3.withEnv

import hudson.model.*;println env.JOB_NAME
println env.BUILD_NUMBERpipeline{agent anystages{stage("init") {steps{withEnv(['java_home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el6_10.i386/jre']) {sh("$java_home/bin/java -version")}script {println "test with withEnv feature"}}}}
}

这个用withEnv添加多个环境变量,我没有使用过,下次如果遇到再补上。

这篇关于Jenkins高级篇之Pipeline方法篇-Pipeline Basic Steps-5-方法timeout,waitUntil,withEnv的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051011

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数