Jenkins 定时触发计谋

打印 上一主题 下一主题

主题 529|帖子 529|积分 1587

每天晚上 11 点执行一次,可以按照以下步调举行。
  1. 复制代码
  2. import jenkins
  3. import datetime
  4. import base64
  5. USERNAME = b'UFNXssaaX0NU\n'
  6. PASSWORD = b'UFNXXssdds0Nd'
  7. class JenkinsMonitor:
  8.     def __init__(self, jobs_to_monitor):
  9.         self.jenkins_url = "http://pe-ddddf.ddssfgfd.com:00011"
  10.         self.username = base64.decodebytes(USERNAME).decode()
  11.         self.password = base64.decodebytes(PASSWORD).decode()
  12.         self.server = jenkins.Jenkins(self.jenkins_url, username=self.username, password=self.password)
  13.         self.jobs_to_monitor = jobs_to_monitor
  14.         self.job_status_dict = {}
  15.     def monitor_jobs(self):
  16.         # 获取当天的日期
  17.         today_date = datetime.datetime.now().date()
  18.         # 检查每个 Job 是否在当天触发并成功
  19.         for ci_job, ct_job in self.jobs_to_monitor.items():
  20.             job_info = self.server.get_job_info(ci_job)
  21.             ct_job_info = self.server.get_job_info(ct_job)
  22.             if ct_job_info.get('disabled'):
  23.                 print(f"Job {ct_job} 已经被禁用,跳过执行冒烟!!!")
  24.                 self.job_status_dict[ct_job] = False
  25.                 continue
  26.             
  27.             last_build_number = job_info['lastCompletedBuild']['number']
  28.             last_build_info = self.server.get_build_info(ci_job, last_build_number)
  29.             # 获取最后一次构建的时间和状态
  30.             build_timestamp = datetime.datetime.fromtimestamp(last_build_info['timestamp'] / 1000).date()
  31.             build_result = last_build_info['result']
  32.             # 如果是今天的构建并且成功
  33.             if build_timestamp == today_date and build_result == 'SUCCESS':
  34.                 self.job_status_dict[ct_job] = True
  35.             else:
  36.                 self.job_status_dict[ct_job] = False
  37.     def trigger_ct_jobs(self):
  38.         # 触发已成功完成 CI 的 Job 的 CT 任务
  39.         for job_name, status in self.job_status_dict.items():
  40.             if status:
  41.                 print(f"触发CT任务: {job_name}")
  42.                 self.server.build_job(job_name, {"delay": "0sec"})
  43.     def run(self):
  44.         self.monitor_jobs()
  45.         self.trigger_ct_jobs()
  46. if __name__ == "__main__":
  47.     jobs_to_monitor = {
  48.         "TMwssa8.1.1/CI_CA_3sdfdsfdssds_1_Merge_Trigger": "TMwssa8.1.1/SMOKE_CA_3sdfdsfdssds_1",
  49.     }  # 替换为你的Job名称
  50.    
  51.     monitor = JenkinsMonitor(jobs_to_monitor)
  52.     print("Jenkins Job Monitor running ...")
  53.     monitor.run()
复制代码

  • 创建 .bat 文件
    创建一个 .bat 文件,比方 run_jenkins_monitor.bat,并在其中编写以下内容:
  1. @echo off
  2. REM 记录当前时间
  3. echo Starting Jenkins Monitor at %time% on %date%
  4. REM 切换到 Python 脚本所在的目录
  5. cd /d "C:\path\to\your\script"
  6. REM 启动 Python 脚本
  7. python "C:\path\to\your\script\monitor_script.py"
  8. REM 记录脚本完成的时间
  9. echo Jenkins Monitor finished at %time% on %date%
  10. 确保将 "C:\path\to\your\script" 替换为实际的 Python 脚本路径。
复制代码

  • 设置使命计划在晚上 11 点运行
    使用 Windows 使命计划程序每天晚上 11 点执行 .bat 文件。
打开使命计划程序:按 Win + S,搜索“使命计划程序”,并打开它。
创建根本使命:
在右侧点击“创建根本使命”。
给使命定名,比方 JenkinsMonitorTask,然后点击“下一步”。
设置触发器:
选择“逐日”,然后点击“下一步”。
设置使命开始的日期和时间,确保时间为 23:00,然后点击“下一步”。
设置操作:
选择“启动程序”,然后点击“下一步”。
在“程序/脚本”字段中,选择你创建的 .bat 文件的路径。
点击“下一步”,然后点击“完成”以创建使命。
4. 测试使命计划
您可以在使命计划程序中手动运行使命,确保它按预期在指定时间执行 Python 脚本。如果设置正确,使命计划程序将每天晚上 11 点自动运行 .bat 文件,从而触发 Python 脚本。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表