詹金斯 - 让代理商等待其他代理商完成

时间:2016-07-16 14:36:06

标签: jenkins

我是Jenkins的新手,我正在尝试设置一个使用少量构建执行程序的项目。 流程如下:

  • 两个带有 //You have mistaken the order setContentView(R.layout.activity_help); TextView helptitle = (TextView)findViewById(R.id.title_help); Typeface typeface = Typeface.createFromAsset(getAssets(), "beyond_the_mountains.ttf"); helptitle.setTypeface(typeface); 标签的构建执行程序返回其IP地址并等待第三个构建执行程序完成其工作
  • 带有webservice标签的第三个构建执行程序收集这些IP地址并执行一些长时间运行的作业(e.x.将HTTP请求发送到部署在这两个代理上的Web服务)

如何在Jenkins中实现这种行为?

我发现当构建执行程序完成其工作时,它立即被释放,我不知道如何让它等待其他构建执行程序完成其工作。

修改

我忘了提到我希望保留带有tester标签的构建执行程序(不适用于其他作业),直到具有webservice标签的构建执行程序完成其长期运行的作业

此外,所有这些构建执行程序都应位于不同的从属服务器上。这意味着每个slave只有一个构建执行程序。

3 个答案:

答案 0 :(得分:3)

我终于设法使用Pipeline及以下脚本执行此操作:

node('webservice') {
    def firstHostname = getHostname()
    node('webservice') {
        def secondHostname = getHostname()
        node('tester') {
            println 'Running tests against ' + firstHostname + ' and ' + secondHostname
            // ...
        }
    }
}

def getHostname() {
    sh 'hostname > output'
    readFile('output').trim()
}

它获取了两个带有webservice标签的构建执行程序。我正在获取他们的主机名(我使用它们而不是IP地址)并将它们传递给带有tester标签的构建执行程序。最后,tester运行了一些长期运行的测试。

这两个webservice构建执行程序被阻塞,直到tester完成其工作,并且在此期间没有其他项目可以使用它们。

答案 1 :(得分:0)

正如Alex O所提到的,您可以在Jenkins项目/执行程序中配置项目/执行程序之间的主从关系。有选项,“构建触发器” - >在构建其他项目之后构建

或使用插件来实现它 https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin

https://wiki.jenkins-ci.org/display/JENKINS/Join+Plugin

答案 2 :(得分:0)

你真正想要的可能就是你的工作同时使用了三个奴隶。

以这种方式重新思考设置,不必考虑IP的集合以及随后使用的奴隶作为必须以某种方式对齐的三个不同步骤。

不幸的是,Jenkins不支持在开箱即用的情况下使用多个从站,但是可以实现您想要的功能,例如:使用Multijob plugin和Aaron已提到的Join plugin

有关如何同时使用两个从属设备的信息,另请参阅this question