Jenkins 定时触发策略

每天晚上 11 点执行一次,可以按照以下步骤进行。

python 复制代码
复制代码
import jenkins
import datetime
import base64

USERNAME = b'UFNXssaaX0NU\n'
PASSWORD = b'UFNXXssdds0Nd'

class JenkinsMonitor:
    def __init__(self, jobs_to_monitor):
        self.jenkins_url = "http://pe-ddddf.ddssfgfd.com:00011"
        self.username = base64.decodebytes(USERNAME).decode()
        self.password = base64.decodebytes(PASSWORD).decode()
        self.server = jenkins.Jenkins(self.jenkins_url, username=self.username, password=self.password)
        self.jobs_to_monitor = jobs_to_monitor
        self.job_status_dict = {}

    def monitor_jobs(self):
        # 获取当天的日期
        today_date = datetime.datetime.now().date()

        # 检查每个 Job 是否在当天触发并成功
        for ci_job, ct_job in self.jobs_to_monitor.items():
            job_info = self.server.get_job_info(ci_job)
            ct_job_info = self.server.get_job_info(ct_job)

            if ct_job_info.get('disabled'):
                print(f"Job {ct_job} 已经被禁用,跳过执行冒烟!!!")
                self.job_status_dict[ct_job] = False
                continue
            
            last_build_number = job_info['lastCompletedBuild']['number']
            last_build_info = self.server.get_build_info(ci_job, last_build_number)

            # 获取最后一次构建的时间和状态
            build_timestamp = datetime.datetime.fromtimestamp(last_build_info['timestamp'] / 1000).date()
            build_result = last_build_info['result']

            # 如果是今天的构建并且成功
            if build_timestamp == today_date and build_result == 'SUCCESS':
                self.job_status_dict[ct_job] = True
            else:
                self.job_status_dict[ct_job] = False

    def trigger_ct_jobs(self):
        # 触发已成功完成 CI 的 Job 的 CT 任务
        for job_name, status in self.job_status_dict.items():
            if status:
                print(f"触发CT任务: {job_name}")
                self.server.build_job(job_name, {"delay": "0sec"})

    def run(self):
        self.monitor_jobs()
        self.trigger_ct_jobs()

if __name__ == "__main__":
    jobs_to_monitor = {
        "TMwssa8.1.1/CI_CA_3sdfdsfdssds_1_Merge_Trigger": "TMwssa8.1.1/SMOKE_CA_3sdfdsfdssds_1",
    }  # 替换为你的Job名称
    
    monitor = JenkinsMonitor(jobs_to_monitor)
    print("Jenkins Job Monitor running ...")
    monitor.run()
  1. 创建 .bat 文件
    创建一个 .bat 文件,例如 run_jenkins_monitor.bat,并在其中编写以下内容:
batch 复制代码
@echo off
REM 记录当前时间
echo Starting Jenkins Monitor at %time% on %date%

REM 切换到 Python 脚本所在的目录
cd /d "C:\path\to\your\script"

REM 启动 Python 脚本
python "C:\path\to\your\script\monitor_script.py"

REM 记录脚本完成的时间
echo Jenkins Monitor finished at %time% on %date%
确保将 "C:\path\to\your\script" 替换为实际的 Python 脚本路径。
  1. 设置任务计划在晚上 11 点运行
    使用 Windows 任务计划程序每天晚上 11 点执行 .bat 文件。

打开任务计划程序:按 Win + S,搜索"任务计划程序",并打开它。

创建基本任务:

在右侧点击"创建基本任务"。

给任务命名,例如 JenkinsMonitorTask,然后点击"下一步"。

设置触发器:

选择"每日",然后点击"下一步"。

设置任务开始的日期和时间,确保时间为 23:00,然后点击"下一步"。

设置操作:

选择"启动程序",然后点击"下一步"。

在"程序/脚本"字段中,选择你创建的 .bat 文件的路径。

点击"下一步",然后点击"完成"以创建任务。

  1. 测试任务计划

您可以在任务计划程序中手动运行任务,确保它按预期在指定时间执行 Python 脚本。如果设置正确,任务计划程序将每天晚上 11 点自动运行 .bat 文件,从而触发 Python 脚本。

相关推荐
龙猫里的小梅啊11 分钟前
CSS(八)CSS显示模式display属性
前端·css·css3
雨季mo浅忆14 分钟前
第二项目重新梳理
前端·面试
IT学长22 分钟前
JavaWeb图书管理系统设计与实现(附源码)
mysql·servlet·毕业设计·课程设计·图书管理系统
李白的天不白23 分钟前
webpack 与 vue-loader 版本冲突问题
前端·vue.js·webpack
sunneo28 分钟前
专栏D-团队与组织-05-冲突与决策
前端·人工智能·产品运营·aigc·产品经理·ai-native
舟遥遥娓飘飘32 分钟前
量化投资体系之二:为 Web 看板集成公众号/财经原始数据
前端·数据分析·自动化·ai编程
ZC跨境爬虫34 分钟前
跟着 MDN 学 HTML day_13:多媒体嵌入 —— 视频与音频
前端·css·笔记·ui·html·音视频
之歆36 分钟前
DAY12_CSS3选择器全攻略 + 盒子新特性完全指南(上)
前端·css·css3
之歆38 分钟前
DAY13_CSS3进阶完全指南 —— 背景、边框、文本、渐变、滤镜与 Web 字体(上)
前端·c#·css3
幸福巡礼1 小时前
【 LangChain 1.2 实战(四)】构建一个模块化的天气查询 Agent
java·前端·langchain