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

相关推荐
css趣多多1 小时前
案例自定义tabBar
前端
chenbin5201 小时前
Jenkins 自动构建Job
运维·jenkins
java 凯1 小时前
Jenkins插件管理切换国内源地址
运维·jenkins
姑苏洛言2 小时前
DeepSeek写微信转盘小程序需求文档,这不比产品经理强?
前端
林的快手3 小时前
CSS列表属性
前端·javascript·css·ajax·firefox·html5·safari
匹马夕阳3 小时前
ECharts极简入门
前端·信息可视化·echarts
API_technology3 小时前
电商API安全防护:JWT令牌与XSS防御实战
前端·安全·xss
yqcoder3 小时前
Express + MongoDB 实现在筛选时间段中用户名的模糊查询
java·前端·javascript
十八朵郁金香4 小时前
通俗易懂的DOM1级标准介绍
开发语言·前端·javascript
陆鳐LuLu4 小时前
日志管理利器:基于 ELK 的日志收集、存储与可视化实战
运维·elk·jenkins