[Jenkins]如何自动停止超时任务?

2024-08-23 17:18

本文主要是介绍[Jenkins]如何自动停止超时任务?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       公司的Jenkins服务器运行一段时间了,每天编译github cocos2d-x仓库的所有pull request,还算稳定。但有个问题比较郁闷,由于实际执行编译的slave就放在办公室里,网络不太稳定,特别是访问github时,有时会导致整个编译任务挂起。由于我们在每个slave上只放了一个执行单元(Excutor),只要一个编译任务挂起,就会导致整个jenkins挂起,所有后续的编译任务都在排队。这个时候只能手动杀掉挂起的任务,以便其他排队的任务可以继续执行。这个问题很蛋疼,因为我们不可能派个人一直盯着jenkins主站,等发现有任务挂起时,已经有10几个pull request在排队了。

    被这个问题折磨了几次之后,我下定决心要把它解决掉,分析了一下,其实可以用jenkins自己来解决:构建一个监控任务(jenkins-job-watchdog),每几分钟跑一次,看看其他任务有没有超时,如果超时,就把它关掉,呵呵,思路并不复杂。熟悉jenkins的童鞋可能会注意到:如果jenkins已经被挂起,就没有办法执行watchdog任务,怎么可能杀掉挂起的任务呢?呵呵,诀窍在于部署:在阿里云上部署一台jenkins master,在公司本地网络部署多台jenkins slave,master上不执行实际的编译任务,只执行触发器任务:响应任务请求,触发实际编译任务(在slave上执行),然后马上结束。这样,就保证了master不会被挂起,只要在master上执行watch-dog任务就可以了。那么:如何获取当前运行的任务,要怎么结束任务呢?必须介绍一下强大的jenkins python api, github地址:

https://github.com/salimfadhley/jenkinsapi

用法很简单:

J = Jenkins('http://localhost:8080',username,password)

for key,job in J.iteritems():

last_build = job.get_last_buildnumber()//获得最后一个构建的编号

 running = build.is_running()//任务是否在运行

        start_time =  last_build.get_timestamp()//获得构建的开始时间

       last_build.stop()//停止构建

将watchdog部署上去以后,还可以分别指定每个任务的超时时间,一旦超时就会被自动杀掉,再也不用半夜起床检查jenkins了~~

这篇关于[Jenkins]如何自动停止超时任务?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录