1、简介:
JJB:全称是jenkins job builder,提供了快速配置jenkins任务的能力,便于puppet、docker等进行配置管理。通过jjb将yaml/json文件转化为jenkins可识别的xml文件,从而实现快速的配置。
并且,使用了JJB之后,对jenkins的配置,都可以使用版本库进行管理,这样就很容易追溯历史,便于管理,极大的简化了工程的配置管理,为自动化的持续集成提供了一个极佳的解决方案。当前的开源openstack(https://docs.openstack.org/infra/system-config/jjb.html)的持续集成系统便采用JJB进行自动化配置管理。
http://docs.openstack.org/infra/jenkins-job-builder/
2、安装:
操作系统:CentOS7.0
S1、github上下载最新jenkins job builder,执行python setup.py install安装
https://github.com/openstack-infra/jenkins-job-builder
(或者对接pip源,使用pip install安装)
S2、此外,对接国内的python pip源,比如清华的。在执行jenkins-jobs的时候,可能会因为各种缺少python依赖库而报错。
比如:
pip install python-jenkins
pip install stevedore
pip install pyaml
S3、配置jenkins用户:
参照:https://docs.openstack.org/infra/jenkins-job-builder/execution.html
请确保该配置与实际的jenkins的用户名密码相匹配
S4、查看是否配置成功:
[root@localhost Desktop]# jenkins-jobs --version
Jenkins Job Builder version: 2.0.0
对于jenkins-jobs命令的使用,主要四个参数:
{test,delete-all,update,delete}
3、测试
生成一个yaml文件,使用jenkens-jobs test src -o dest
其中src指的是yaml配置文件或目录(遍历目录下所有.yaml/.yml or .json 文件),
dest生成的工程xml文件目录
查看dest中文件,确认是否生成了对应的结果。
如果结果正确,使用jenkins-jobs update src命令更新工程
注意事项
4a)、在JJB使用过程中存在一个缓存的概念(参数:ignore_cache置为false时不予配置,如果设置了,则默认cache路径为:XDG_CACHE_HOME=~/.cache/jenkins_jobs),记录了之前JJB的配置过程,因此在配置的时候,只针对缓存,更新那些新增内容。如果你通过jenkins界面手动更改了工程,更改的信息是无法刷入缓存中的,那么jjb便不会更新该工程,这可能会有一些疑惑。所以使用JJB后,请不要手动更改该工程。
如果已经出现了冲突,可以使用jenkins-jobs命令清除缓存
资料:
1、参考openstack的写作:
https://docs.openstack.org/infra/jenkins-job-builder/
2、jenkins jobs的命令大全:
https://docs.openstack.org/infra/jenkins-job-builder/execution.html#command-reference
3、jenkins jobs的模板定义:
https://docs.openstack.org/infra/jenkins-job-builder/definition.html
https://docs.openstack.org/infra/system-config/jjb.html
4、RDO使用JJB的资料:
https://blogs.rdoproject.org/6006/manage-jenkins-jobs-with-yaml
5、devops工具:jenkins job builder
http://www.adaptivecomputing.com/blog-cloud/devops-tools-jenkins-job-builder/
6、openstack的jjb主页:
源码:https://github.com/openstack-infra/jenkins-job-builder
review主页:https://git.openstack.org/cgit/openstack-infra/jenkins-job-builder
其他问题:
1、命令中的--workers是什么意思?