由于上次发的帖子太受欢迎,导致有非常多人问也有很多其它的人想知道。2个不同地域位置的Jenkins怎样自己主动触发相互的Job.当今非常多公司做的产品仅仅是全球化工作的一部分。须要这部分做好以后去做另外一部分,一直持续做完。这样的自下而上的增量集成方式被越来越多的大公司採用。自然这也能做成全自己主动的。
本文就简单说说我经验中的解决的方法:
1.两个地域的网络都能直接相互訪问,这是最好的情况(而这样的情况适用范围是最窄的),能够直接用Jenkins的隐藏功能实现。
首先要有个job处于你build process的最后一步,比方说,你release后,触发这个job,而这个job实现触发另外一个Jenkins。
然后你这个Job得执行在Linux环境下。由于要用Shell。当然你得把build选成Execute Shell窗体。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbW9kb29fanVua28=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
然后你就得加例如以下的命令了:
wget http://$你的目标jenkins IP和port/job/$你想触发的job/buildWithParameters?$你要传递的变量名='$变量名相应的值'&$第2个变量名='$第2个变量名的值'
假设你运气好的话,第一次就搞定了。
当然。。
某些人或者公司有特殊的网络设置,在用这个命令之前大家都不知道。所以方法1非常高的几率会失败。所以当初解决这问题的时候。出现了方法2。
2.两个人地域的网络不能直接訪问,或者方案1不稳定。这得引入另外一个解决方式。
这个方法拥有coder的思维,即引入第3者。这个第3者必须能分别和2个地方的jenkins相互訪问。
比方说。你们的SVN?仅仅要你们做的同一个产品,肯定有某个SVN你们两方都能訪问的。嘿嘿。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbW9kb29fanVua28=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
对于这个图的解释,又回到了jenkins的自己主动trigger上,引入下“自己主动build”的文章。
这样的方案,就非常稳定,可控。
当然还有其它的。朋友们假设有兴趣请评论中讨论。
比方:
3.Jenkins插件