一尘不染

Jenkins-让代理商等待其他代理商完成

jenkins

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

  • 带有webservice标签的两个构建执行器返回其IP地址,并等待第三个构建执行器完成其工作
  • 第三个带有tester标签的构建执行器收集这些IP地址并执行一些长期运行的工作(例如,向部署在这两个代理上的Web服务发送HTTP请求)

如何在詹金斯实现这种行为?

我发现,当构建执行器完成其工作时,它会立即释放,并且我不知道如何使其等待其他构建执行器完成其工作。

编辑

我忘了提到我要webservice保留带有标签的构建执行器(不适用于其他作业),直到带有tester标签的构建执行器完成其长期运行的工作。

同样,所有这些构建执行器都应分别位于单独的从机上。这意味着每个从站只有一个构建执行器。


阅读 213

收藏
2020-07-25

共1个答案

一尘不染

我终于设法使用 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完成其工作为止,在此期间没有其他项目可以使用它们。

2020-07-25