最近重构一个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文件,拷贝至本地
<?xml version="1.1" encoding="UTF-8"?><project>
<actions/>
<description/>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.scm.NullSCM"/>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers>
<hudson.triggers.TimerTrigger>
<spec>0 12 * * *</spec>
</hudson.triggers.TimerTrigger>
</triggers>
<concurrentBuild>false</concurrentBuild>
<builders>
<hudson.tasks.Shell>
<command>curl ${HOST_TEST}/schedule.json -d project=${PROJECT_TEST} -d spider='tt_test_spider'</command>
</hudson.tasks.Shell>
</builders>
<publishers/>
<buildWrappers/>
</project>
批量创建的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 jenkins
template_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。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本项目为基于Java的Spring与Spring Boot框架知识体系设计源码,总计包含183个文件,涵盖158个Java源代码文件、5个Markdown文件、3个文本文件、3个HTML文件、2个XML文件、2个PNG图片文件、1个Git忽略文件以及1个表单文件。这些资源共同构成了一个全面的知识体系,旨在帮助开发者深入理解Spring和Spring Boot框架的相关知识点。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的Spring与Spring Boot框架知识体系设计源码 (179个子文件)
com.yuan.java.java.util.A 52B
B.form 3KB
.gitignore 21B
home.html 1KB
login.html 450B
example.html 264B
WebUtils.java 20KB
GitLabCiCreateWebHook.java 10KB
ImagePHash.java 7KB
ShowapiRequest.java 6KB
LogAspect.java 6KB
AspectConfig.java 6KB
WebSocketServer.java 5KB
IOTestDemo.java 4KB
AnnotationMethod.java 4KB
BMPLoader.java 4KB
RSAEncrypt.java 4KB
PicUtils.java 3KB
MD5.java 3KB
CommonController.java 3KB
TimeServerClient.java 3KB
HttpClient.java 3KB
TimeServer.java 3KB
StringUtils.java 3KB
HttpHelper.java 3KB
ShowApiUtils.java 3KB
IntrospectorTest.java 3KB
ThreadTest.java 3KB
CutImage.java 3KB
HttpServer.java 3KB
RedisAnnotationConfig.java 3KB
Server.java 3KB
JdbcDataSource.java 3KB
RedisListenProcessor.java 3KB
Base64.java 3KB
ZipCompressor.java 3KB
HttpClient.java 2KB
PathMatchUtil.java 2KB
JPanelDemo.java 2KB
MongoParam.java 2KB
MongoServiceImpl.java 2KB
ConcurrentCheckAspect.java 2KB
MyErrorPage.java 2KB
TestTest.java 2KB
ShowApiLogger.java 2KB
FileItem.java 2KB
RedisConfig.java 2KB
ApplicationUtil.java 2KB
ThreadTest0.java 2KB
SimpleNioClient.java 2KB
MongoDBAppender.java 2KB
ThreadLearn.java 2KB
SysUserDao.java 2KB
JSONTest.java 2KB
ThreadTest1.java 2KB
RedisQueueConfig.java 2KB
FileListenerAdaptor.java 2KB
SocketPackUtils.java 1KB
ResourceLoader.java 1KB
ProxyConfig.java 1KB
UserMobileBook.java 1KB
RedisListenConfig.java 1KB
MyUtil.java 1KB
TestWatchService.java 1KB
WebSocketServer.java 1KB
QueueController.java 1KB
LogMongo.java 1KB
TestAlibaba.java 1KB
LinkedBlockingQueueTest.java 1KB
LoginInterceptor.java 1KB
IpTest.java 1KB
ReflectRest.java 1KB
LambdaTest.java 1KB
HtmlTest.java 1KB
MonitorDemo.java 1KB
ApplicationTests.java 1KB
AsyncController.java 1KB
Mock.java 1KB
BarWorker.java 950B
Demo.java 940B
JdbcTest.java 887B
RabbitConfig.java 886B
Constants.java 862B
BarWorker2.java 848B
CssDemo.java 845B
ResponseMsg.java 842B
Server.java 828B
ScriptTest.java 821B
NettyMessageEncoder.java 804B
Client.java 786B
TestOnly.java 781B
MessageListenerAdapterWrapper.java 762B
SessionConfig.java 760B
Application.java 753B
MathTest.java 744B
SpElTest.java 711B
LogMongoStep.java 703B
AtomicTest.java 702B
Receiver.java 679B
TestProxy.java 677B
共 179 条
- 1
- 2
资源评论
csbysj2020
- 粉丝: 2471
- 资源: 5462
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Visual Basic .Net及Python技术的学校需求解决方案设计源码
- 基于Java语言的Web开发学习Demo设计源码
- 基于Java的医院排队叫号系统界面原型设计源码
- 基于Java语言的Himalaya仿喜马拉雅设计源码
- 基于PHP+HTML+CSS+JavaScript的智能电车管家设计源码
- 基于Emscripten编译的纯H5直播流播放器jessibuca设计源码
- 基于react-native的Android隐私合规配置与代码集成设计源码
- 基于JavaFX技术的全功能色彩管理器设计源码
- erlang-21.3-1.el7.x86-64.rpm
- eclipse-inst-jre-win64.exe
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功