You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Jenkins定时任务在触发的任务完成前重复启动?

解决Jenkins Cron任务重复触发的问题

嘿,这个场景我太熟了——之前帮同事处理过几乎一样的问题,给你几个靠谱的方案,按需选就行:

1. 基础配置:禁止并发 + 自动丢弃排队任务

这个不用改代码,纯靠Jenkins配置就能搞定:

  • 打开你的流水线项目配置页,先找到Build Triggers里的cron设置,保持每分钟触发不变
  • 滑到General区域,把**“允许并行构建”**(对应英文选项“Execute concurrent builds if necessary”)的勾去掉,这样同一时间只能跑一个这个任务
  • 再往下找到**“高级项目选项”,展开后勾选“丢弃旧构建”,然后在策略里选“当新构建启动时丢弃旧构建”**。要是你连排队都不想让新任务进,后面的代码方案会更直接。

2. 流水线代码直接检查:有任务在跑就退出

这个更灵活,在Jenkinsfile开头加一段逻辑,一启动就检查有没有同项目的任务正在运行,有的话直接终止当前触发的任务,示例代码给你写好了:

pipeline {
    agent any
    stages {
        stage('检查是否有任务在运行') {
            steps {
                script {
                    def currentJob = Jenkins.instance.getItemByFullName(env.JOB_NAME)
                    // 找到所有正在运行的、不是当前构建的任务
                    def runningBuilds = currentJob.getBuilds().findAll { it.isBuilding() && it.number != env.BUILD_NUMBER }
                    if (runningBuilds.size() > 0) {
                        echo "发现已有任务在跑啦(Build #${runningBuilds[0].number}),本次任务直接退出~"
                        error "任务已在运行,终止当前触发"
                    }
                }
            }
        }
        stage('执行Python下载脚本') {
            steps {
                sh 'python your_script.py'
            }
        }
    }
}

注意哈,如果你的Jenkins开了脚本安全审批,这段里的Jenkins.instance可能需要你去“Manage Jenkins”->“进程内脚本审批”里通过一下权限,不然会报错。

3. 用锁插件:给任务加个独占锁

推荐用Lockable Resources Plugin这个插件,给你的下载任务加个“专属锁”,同一时间只有一个任务能拿到锁运行,其他触发的直接跳过:

  1. 先去Jenkins插件市场装这个插件
  2. 进“Manage Jenkins”->“系统配置”,找到“Lockable Resources”,加个新资源,比如叫file_download_lock
  3. 改Jenkinsfile,开头加锁,并且设置skipIfLocked: true,意思是锁被占了就直接跳过:
pipeline {
    agent any
    options {
        lock(resource: 'file_download_lock', skipIfLocked: true)
    }
    stages {
        stage('执行Python下载脚本') {
            steps {
                sh 'python your_script.py'
            }
        }
    }
}

这个方案省心,不用自己写检查逻辑,插件帮你搞定,新触发的任务会直接标记为“已跳过”,不会占资源。

4. 临时过渡:调整Cron表达式

如果你的下载任务最长也就5分钟,那可以先把cron改成每6分钟触发一次,比如0 */6 * * *,从时间上避开重叠。不过这只是临时方案,要是哪天下载任务突然超时超过6分钟,还是会出问题,所以长期来看还是前面几个方法更靠谱。


内容的提问来源于stack exchange,提问作者Zack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 23:32:59