因为上次发的帖子太受欢迎,导致有很多人问也有更多的人想知道,2个不同地域位置的Jenkins如何自动触发相互的Job.当今很多公司做的产品只是全球化工作的一部分,需要这部分做好以后去做另外一部分,一直持续做完。这种自下而上的增量集成方式被越来越多的大公司采用。自然这也能做成全自动的。
本文就简单说说我经验中的解决办法:
1.两个地域的网络都能直接相互访问,这是最好的情况(而这种情况适用范围是最窄的),可以直接用Jenkins的隐藏功能实现。
首先要有个job处于你build process的最后一步,比如说,你release后,触发这个job,而这个job实现触发另外一个Jenkins。
然后你这个Job得运行在Linux环境下,因为要用Shell。当然你得把build选成Execute Shell窗口。
然后你就得加如下的命令了:
wget http://$你的目标jenkins IP和端口/job/$你想触发的job/buildWithParameters?$你要传递的变量名=‘$变量名对应的值‘&$第2个变量名=‘$第2个变量名的值‘
如果你运气好的话,第一次就搞定了。当然。。某些人或者公司有特殊的网络设置,在用这个命令之前大家都不知道。所以方法1很高的几率会失败。所以当初解决这问题的时候,出现了方法2。
2.两个人地域的网络不能直接访问,或者方案1不稳定,这得引入另外一个解决方案。
这个方案拥有coder的思维,即引入第3者,这个第3者必须能分别和2个地方的jenkins相互访问。
比如说,你们的SVN?只要你们做的同一个产品,肯定有某个SVN你们双方都能访问的。嘿嘿。
对于这个图的解释,又回到了jenkins的自动trigger上,引入下“自动build”的文章。
这种方案,就很稳定,可控。
当然还有其他的,朋友们如果有兴趣请评论中讨论。
比如:
3.Jenkins插件
Parameterized Remote Trigger Plugin
如何用Jenkins触发另一个Jenkins---Global build solution