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 脚本。

相关推荐
并不会34 分钟前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
衣乌安、37 分钟前
【CSS】居中样式
前端·css·css3
兔老大的胡萝卜38 分钟前
ppk谈JavaScript,悟透JavaScript,精通CSS高级Web,JavaScript DOM编程艺术,高性能JavaScript pdf
前端·javascript
低代码布道师40 分钟前
CSS的三个重点
前端·css
耶啵奶膘2 小时前
uniapp-是否删除
linux·前端·uni-app
王哈哈^_^4 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie4 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic5 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿5 小时前
webWorker基本用法
前端·javascript·vue.js
cy玩具5 小时前
点击评论详情,跳到评论页面,携带对象参数写法:
前端