gpt4 book ai didi

jenkins - 如何获取管道中特定阶段的状态

转载 作者:行者123 更新时间:2023-12-01 04:46:44 25 4
gpt4 key购买 nike

我们如何获取 Jenkins 管道中前一阶段的状态。例如:我的示例管道如下:

pipeline {
agent
{
node {
label 'master'
customWorkspace "${env.JobPath}"
}
}

stages
{
stage('Start') {
steps {
sh 'ls'
}
}

stage ('set_env') {
steps {
// script to set environment.
}
}

stage ('Build') {
steps {
// script to build.
}
}

stage ('Send_mail') {
steps {
// script to send mail.
}
}

stage('End') {
steps {
sh 'ls'
}
}
}
}

如何获取管道中特定阶段的状态。例如:我想根据“构建”阶段是成功还是失败来做出某些决定。

是否有任何跟踪每个阶段状态的环境变量,或者有一个 Jenkins REST API 可以帮助我实现这一目标。

谢谢!

最佳答案

Jenkins 声明式管道是在以前的 jenkins 管道方法之上的自以为是的语法。这意味着您还可以将 jenkins 声明性管道视为带有额外语法糖的 groovy 脚本。所以你可以自由地使用变量。正如我在上面的评论中提到的,您可以通过 currentBuild.result 设置整个工作状态,但是如果您想在不同阶段之间的同一作业中做出决策:只需使用 groovy 变量来指示前一阶段的状态。以你的例子为例:

pipeline {

def didSucceed = true

agent
{
node {
label 'master'
customWorkspace "${env.JobPath}"
}
}

stages
{
stage('Start') {
steps {
sh 'ls'
}
}

stage ('set_env') {
steps {
// script to set environment.
didSucceed = true // Here you indicate whether stuff actually worked..
}
}

stage ('Build') {
steps {
if (didSucceed) {
// script to build.
} else {
// Procedure in case of previous error..
}
}
}

stage ('Send_mail') {
steps {
// script to send mail.
}
}

stage('End') {
steps {
sh 'ls'
}
}
}
}

您还可以使用 when 以更具声明性的方式保留语句与 bool 变量相结合。

关于jenkins - 如何获取管道中特定阶段的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46113493/

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