【问题标题】:Jenkins workflow job: limit where it can runJenkins 工作流作业:限制它可以运行的位置
【发布时间】:2017-07-04 16:36:20
【问题描述】:
我有两个 Jenkins 工作流作业,它们以不同的参数启动同一个作业,即它们构建的分支。后一项工作在多个平台上构建项目。 “头”作业,即工作流作业可以在不同的机器上启动。另外,设置中有两台linux机器。
有时会发生这样的情况,其中一台(例如,master)在其中一台 linux 机器上启动,而另一台在另一台机器上启动。他们俩都必须在 linux 机器上构建一个目标,并且由于他们俩都很忙,所以两个工作都停滞不前。
对于普通作业,可以限制它们可以运行的位置,但是,我找不到如何限制工作流作业可以运行的位置。显然,它应该使用 groovy 脚本来完成,但它究竟是如何让我不知道的。
有解决办法吗?
【问题讨论】:
标签:
jenkins
jenkins-pipeline
【解决方案1】:
这是一个全局执行的 Jenkinsfile(这是告诉 jenkins 整个管道必须在具有这三个标签的从属设备上运行):
pipeline {
agent { label 'docker && git && rbenv' }
stages {
stage('commit_stage') {
steps {
echo 'building stuff'
}
}
}
}
您还可以通过node 步骤为任何阶段或阶段的一部分选择某个从属或某些功能:
pipeline {
agent { label 'docker && git && rbenv' }
stages {
stage('commit_stage') {
steps {
// this overrides the top-level agent requirements
node('linux_with_zsh') {
echo 'building stuff'
}
}
}
}
}