我在Jenkins的这些个job配置起来还是比较繁琐的,要细讲又可以另外写一篇文了。这里特别提到两个很实用的插件吧:
  (1)Parameterized Trigger Plugin(https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin):可以在一个build step中触发其它project的build。

  它有用的是这个“Block until the triggered projects finish their builds”选项,勾上的话Jenkins能在所有trigger的project完成build之后(而非仅仅trigger其它project的build,不等它们完成继续下一个build step)再继续下一个build step,做到真正的依次执行每个build step。

  (2)NodeLabel Parameter Plugin(https://wiki.jenkins-ci.org/display/JENKINS/NodeLabel+Parameter+Plugin):在所有“Possible nodes”标有指定标签(“Label”)的Jenkins节点(是Jenkins master或Jenkins slave)上触发指定project(被触发的project是参数化的)。
  比如我有一个project叫“StartClassicROLATServiceOnAllNodes”,它有一个build step是这样设定的:

  再来看看“StartClassicROLATServiceOnASingleNode”这个project的设定:

  这个project有一个Node类型的参数,参数名“NodeX”与之前Label Factory中的“NodeX”对应,“Possible nodes”选的是“ALL”,那么列出的所有node(master、10.107.122.152、10.107.122.153、10.107.122.154)都在判断范围之内(判断其是否有“Node”标签,有则执行project)。
  另外,列出的所有node我都为其加了一个“Node”标签。

  这样,当我trigger “StartClassicROLATServiceOnAllNodes”之后,会在master、10.107.122.152、10.107.122.153、10.107.122.154这4个node上同时执行“StartClassicROLATServiceOnASingleNode”。