我们如何在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'
}
}
}
}
如何获取管道中特定阶段的状态。例如:我想根据" Build"做出某些决定。阶段是成功还是失败。
是否有任何环境变量可以跟踪每个阶段的状态,或者有一个Jenkins REST API可以帮助我实现这一目标。
谢谢!
答案 0 :(得分:1)
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语句结合布尔变量以更具声明性的方式保留。