gpt4 book ai didi

jenkins - 在不调用代理的情况下跳过 Jenkins 管道中的一个阶段?

转载 作者:行者123 更新时间:2023-12-02 17:44:23 24 4
gpt4 key购买 nike

我们使用 jenkins pipeline dsl 来描述我们的工作。现在我们有了类似的东西:

pipeline {
agent none

options {
timestamps()
}

environment {
//SOME ENV VARS
}

stages {
// more stages
stage('stage1'){
when {
expression { env.BRANCH_NAME == 'master' }
}
agent { label 'slave1' }
steps{
//doing stuff
}
}
}

构建过程中的一个阶段,仅应在构建主分支时运行,您可以考虑部署作业或该方向的其他任务。问题是,我们拥有该特定标签的代理商资源是有限的。当我们构建其他分支时,作业仍然会调用 Slave1 代理,并在检查分支不是主分支后跳过该阶段。这很糟糕,因为当所有 Slave1 代理都在主分支作业上工作时,其他作业将不得不等待 Slave1 代理变得可用,只是为了检查它是否需要运行该阶段。

jenkins pipeline DSL 有没有办法跳过该阶段,而无需等待 Slave1 代理确定分支?

最佳答案

接受的答案中提供的方法有效,因为您没有在阶段('stage1')中声明代理。相反,您在步骤中显式创建一个节点,因此在检查条件时不会创建代理。

这种方法可行,但会给您的 Jenkinsfile 增加不必要的复杂性。从 Jenkins 管道插件版本 1.2.6 开始,实现此目的的正确方法是:

pipeline {
agent none
stages {
// more stages
stage('stage1'){
when {
beforeAgent true
branch 'master'
}
agent { label 'slave1' }
steps {
// do stuff
}
}
}
}

检查 when tag documentation 中可用的语法和可用选项。

关于jenkins - 在不调用代理的情况下跳过 Jenkins 管道中的一个阶段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45499746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com