Маркировка вверх по течению Дженкинс/Хадсон не удалась, если работа вниз по течению
Я использую Parameterized Trigger Plugin, чтобы вызвать нисходящую сборку.
Как указать, что мое восходящее задание должно завершиться неудачно, если нисходящий поток завершится с ошибкой? Задача восходящего потока на самом деле - это фиктивное задание с передаваемыми параметрами в нисходящий поток.
Ответы
Ответ 1
Убедитесь, что вы используете правильный шаг для выполнения ваших последующих работ; Я обнаружил, что, поскольку я выполнял мой как "шаг пост-сборки", у меня не было параметра "Блокировать до тех пор, пока запущенные проекты не закончат свои сборки". Изменение этого параметра для "сборки задачи" в отличие от "задачи пост-сборки" позволило мне найти параметры, которые вы ищете в плагине с параметризированным триггером.
![введите описание изображения здесь]()
Ответ 2
этот код пометит восходящую сборку нестабильной/недействительной на основе состояния текущей работы.
/*************************************************
Description: This script needs to put in Groovy
Postbuild plugin of Jenkins as a Post Build task.
*************************************************/
import hudson.model.*
void log(msg) {
manager.listener.logger.println(msg)
}
def failRecursivelyUsingCauses(cause) {
if (cause.class.toString().contains("UpstreamCause")) {
def projectName = cause.upstreamProject
def number = cause.upstreamBuild
upstreamJob = hudson.model.Hudson.instance.getItem(projectName)
if(upstreamJob) {
upbuild = upstreamJob.getBuildByNumber(number)
if(upbuild) {
log("Setting to '" + manager.build.result + "' for Project: " + projectName + " | Build # " + number)
//upbuild.setResult(hudson.model.Result.UNSTABLE)
upbuild.setResult(manager.build.result);
upbuild.save()
// fail other builds
for (upCause in cause.upstreamCauses) {
failRecursivelyUsingCauses(upCause)
}
}
} else {
log("No Upstream job found for " + projectName);
}
}
}
if(manager.build.result.isWorseOrEqualTo(hudson.model.Result.UNSTABLE)) {
log("****************************************");
log("Must mark upstream builds fail/unstable");
def thr = Thread.currentThread()
def build = thr.executable
def c = build.getAction(CauseAction.class).getCauses()
log("Current Build Status: " + manager.build.result);
for (cause in c) {
failRecursivelyUsingCauses(cause)
}
log("****************************************");
}
else {
log("Current build status is: Success - Not changing Upstream build status");
}
Ответ 3
Посмотрите на следующий ответ: Сбой hudson с groovy script. Вы можете получить доступ к исходной задаче и не выполнить ее сборку. НО... будьте осторожны с тем фактом, что действия post-build Hudson/Jenkins прямо сейчас не позволяют указать какой-либо порядок: если указан ваш groovy script другие действия после сборки, и эти действия влияют на результат сборки (то есть: анализ результатов теста), то вы не сможете обновить статус восходящего задания, если Дженкинс решит запустить их после вашего groovy script.
Ответ 4
На шаге Build сконфигурируйте сборки Trigger/Call на других проектах, выберите последующее задание. Выберите "Блокировать, пока запущенный проект не завершит их сборку". Сохраните настройки по умолчанию под ним. Эти настройки приведут к сбою задания в восходящем направлении, если выход из строя не выполнен