Issue
In Jenkins I have an Upstream Project A that triggeres a Downstream Project B.
Project A:
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo "Some message"
build(job: 'B', wait: false)
}
}
}
}
Project B
pipeline {
agent none
tools {
maven "maven"
}
stages {
stage('Triggered By Upstream') {
when {
triggeredBy "UpstreamCause"
}
steps {
echo "Triggered by Upstream project"
}
}
}
}
Here project A successfully triggers the project B. But the stage in project B will be skipped due to the condition in when being False. It seems like a bug to me. Does anyone know what's wrong in this code?
Solution
Apparently there is no cause as UpstreamCause, but rather BuildUpstreamCause, which evaluates to true when the pipeline is triggered from an upstream project. So the when clause in project B should be written as:
when {
triggeredBy "BuildUpstreamCause"
}
in order for the stage to be run when triggered from an upstream project.
Answered By - Sina Barghidarian