博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jenkins 批量添加任务job
阅读量:6313 次
发布时间:2019-06-22

本文共 2004 字,大约阅读时间需要 6 分钟。

最近重构一个Scrapy爬虫项目,需要将300个spider的调度任务在jenkins中添加。这已经超过了手动一个一个添加任务的极限,是时候要借助工具批量添加了。

Jenkins API

Jenkins提供了一套远端访问的API,目前有3种方式:

  • XML

  • JSON with JSONP support

  • Python

远程API可以执行以下这些功能:

  • 创建/复制 job

  • 触发一个新的构建

  • 查询Jenkins的运行状态

Jenkins Job模板

1,创建job

本文的思路是先在网页上手动创建一个Job,然后将Job的配置文件拷贝至本地,制作成模板。

image

2,配置job

模板job主要有两块内容:

1,【构建触发器】定时构建

image
  • 【构建】执行shell
image

其中HOST_TEST,PROJECT_TEST是在jenkins系统配置中设置的环境变量,目的是为了更换scrapyd服务器时更加灵活。

image

3,制作模板

进入到jenkins的安装目录(默认为/var/lib/jenkins/),在/var/lib/jenkins/jobs/【采集】template目录下找到config.xml文件,拷贝至本地

false
true
false
false
false
0 12 * * *
false
curl ${HOST_TEST}/schedule.json -d project=${PROJECT_TEST} -d spider='tt_test_spider'

批量创建的job主要差异在spider名称和crontab定时任务的设置不同,将这两处模板化:

config.xml

image

该文件中有4个变量要配置:

  • crontab_value

  • spider_name

  • HOST_TEMPLATE

  • PROJECT_TEMPLATE

Python-Jenkins脚本批量创建job

1,安装

pip install python-jenkins

2,脚本

import jenkinstemplate_xml="config.xml"#与网页版Jenkins登录的账号、密码一致server = jenkins.Jenkins('http://yourip:8080/', username='admin', password='admin')job_list = {       "test1_spider": "30 2 * * *",    "test2_spider": "30 3 * * *",    "test3_spider": "55 11,23 * * *",}classify = '采集'host = 'http://0.0.0.0:6800/'project = 'test_spider'for spider_name, crontab in job_list.items():    with open(template_xml) as f:        profile = f.read()    JOB_CONFIG=profile.replace("crontab_value", crontab)\        .replace("spider_name",spider_name)\        .replace("HOST_TEMPLATE", host)\        .replace("PROJECT_TEMPLATE", project)    print(JOB_CONFIG[-200:])    view_name = "【{}】{}_".format(classify, type)    server.create_job(view_name+name, JOB_CONFIG)    # del_job=server.delete_job(view_name+name)    # print(del_job)

3,结果

image

搞定!分分钟创建了几百个job。

参考

转载地址:http://wxexa.baihongyu.com/

你可能感兴趣的文章
十四、转到 linux
查看>>
Got error 241 'Invalid schema
查看>>
ReferenceError: event is not defined
查看>>
男人要内在美,更要外在美
查看>>
为什么要跟别人比?
查看>>
app启动白屏
查看>>
Oracle 提高查询性能(基础)
查看>>
学习知识应该像织网一样去学习——“网状学习法”
查看>>
Hadoop集群完全分布式安装
查看>>
QString,char,string之间赋值
查看>>
我的友情链接
查看>>
Nginx+mysql+php-fpm负载均衡配置实例
查看>>
shell脚本操作mysql数据库 (部份参考)
查看>>
MySql之基于ssl安全连接的主从复制
查看>>
informix的逻辑日志和物理日志分析
查看>>
VMware.Workstation Linux与windows实现文件夹共享
查看>>
ARM inlinehook小结
查看>>
wordpress admin https + nginx反向代理配置
查看>>
管理/var/spool/clientmqueue/下的大文件
查看>>
HTML学习笔记1—HTML基础
查看>>