持续集成实施(四)
本篇介绍有关jenkins项目依赖的插件parameterized trigger plugin等。
先表明我们的需求是需要使用git parameter,这个插件的好处是可以在参数化构建前,将项目所
有分支同步过来然后选择分支构建,方便进行版本控制。
一、git parameter使用
git parameter在github上地址:https://github.com/jenkinsci/git-parameter-plugin
在jenkins上安装插件以后,选择参数化构建就可以使用。
需要注意的是:
在使用git parameter之后,遇到了一个坑,因为在打iOS的包的时候,使用了Multiple SCMs来
拉取代码的,发现在使用过程中遇到,选择Build with Parameters时候,Branch出现报错提示为:!No Git respository configured in SCM configuration
,原来git parameter这个插件不能支持Multiple SCMs,已经提了issue,开源作者貌似没动静。
二、parameterized trigger plugin使用
parameterized trigger plugin可以用来传递不同job一个文件名或者路径,这个时候我们不需要传递文件实体,那这个路径如何传递呢?比如有如下两个项目,我想把A的工作目录传递给B,让B使用。 操作流程分为两步:
1、在Ajob内的操作:
如图所示:我将A项目的工作目录传递给了自定义参数TEST_WORKSPACE.到这里A项目的配置就完成了。
2、在Bjob内配置:
我们在A项目配置的TEST_WORKSPACE参数,如果在B job中使用,首先我们在配置界面中,勾选The build is parameterized。这样我们就在当前工作环境中得到了由A传递过来的参数。
三、Multijob Plugin插件
这是一个集成了ParameterizedTrigger和BuildPipeline的插件,但它是形成一个新的job,而不是一个视图。并且它不要求job之间本身就存在依赖关系。这样一来,建立job的时候可以保持相对的独立性,而通过这个插件来组装成产品所需要的持续集成环境。
需要注意的是:在创建job时一定要选择“MultiJob Project”,在“free-style project”下默认
是不能选择使用这个插件的。
如图所示我集成了Multijob之后,新建了两个下游项目。
配置如下:
需要在两个下游job中配置一下参数,就能引用Multijob中的参数:
四、Join Plugin插件
这也是一个触发job的插件,亮点在于它触发job的条件是等待所有当前job的下游的job都完成才会发生。当然,只有在当前job有两个及以上的下游job时才有意义。简单举个例子来说,A同时触发B1和B2两个job,然后配置这个插件又触发C,这时C就会等B1和B2都完成之后才会被执行。
需要注意的是:默认情况下,通过Join插件触发的job是不能传递参数的,如果有需要,可以勾选“Trigger parameterized build on other project”,这样其实就是把Join插件和
ParameterizedTrigger插件集成起来了。
当然同样需要在下游job中配置一下参数化构建,才能引用Join中的传递的参数。
五、命令行直接git clone代码
最后发现,这些插件都不能满足项目要求,最后无奈只能选用命令行git clone代码的方法,可以通过ssh(key file)或者https(.netrc),当然我们的项目代码都是ssh,所以直接git clone ssh://xxx即可,当然,
需要在构建环境中选择SSH Agent确认Credentials。
简单记述,以便整理。。。。。