我有一个Jenkins主站和从属节点池,它们会动态增长和缩小(基于负载)。主节点被称为" master"奴隶们有名字的指甲。目前,没有节点有标签。
对于我的项目,我希望"开发"从github分支构建在主节点上并拉取请求分支以构建在任何一个从属上。这已经在使用节点(' master')和节点('!master')的脚本管道中成功运行。
我想开始使用新的Declarative样式的管道。目前是否可以实现相同的" master"并且"不是主人"声明性管道中的行为,基于分支名称?
在脚本管道中,它看起来像这样:
def selectedNode = BRANCH_NAME == 'develop' ? 'master' : '!master'
node(selectedNode) {
}
由于
答案 0 :(得分:1)
如果它在脚本中工作,通常可以在声明性管道中的script
步骤中包含完全相同的内容。这适合我:
pipeline {
agent { label 'docker' }
stages {
stage('build') {
steps {
script {
def selectedNode = BRANCH_NAME == 'develop' ? 'master' : '!master'
node(selectedNode) {
}
}
}
}
}
}
我可能会选择这条路线,而不是使用顶级agent
声明。
答案 1 :(得分:0)
在将近 4 年内回答它对 Alex 来说是不现实的)
但对其他人来说会。
首先 - 为您的奴隶设置标签。很有用。
第二 - 在声明性管道和阶段级代理中使用分支过滤(基于“何时”条件)。
pipeline {
agent none
stages {
stage('branch develop') {
agent { label 'master' }
when {
beforeAgent true
branch 'develop'
}
steps {
echo 'run build on master node for branch develop'
}
}
stage('branch not develop') {
agent { label 'another_label' }
when {
beforeAgent true
not { branch 'develop' }
}
steps {
echo 'run build on other nodes for not develop branch'
}
}
}
}