2010-05-18 4 views
2

Может ли кто-нибудь помочь в решении этой проблемы?Трубы Хадсона

У меня есть тестовое задание, работа в нисходящем направлении и работа по объединению. Я хочу, чтобы работа по объединению выполнялась, если работа по нисходящей линии завершается успешно.

Если тестовое задание выходит из строя, а работа по нисходящему ходу завершается успешно, я все еще хочу запустить задание соединения.

Кто-нибудь знает о плагине, который может помочь здесь?

Плагин соединения недостаточно хорош, потому что я могу настроить его для запуска задания соединения, когда тест И нисходящий поток будет успешным, или запустить соединение независимо от успеха или неудачи заданий. Но не запускайте совместную работу ТОЛЬКО, если нисходящий поток преуспевает.

Почему я хочу это делать так? Я хочу, чтобы конвейерные задания были объединены вместе, но только если общая работа «вниз по течению» завершается успешно. Если он терпит неудачу, я хочу, чтобы трубопровод «ломался».

Добавление дополнительной информации к оригинальному вопросу: Итак, у меня есть набор тестов (Test.1, Test.2, Test.3). Я могу запускать их отдельно от Хадсона, они бегут, производят результат и заканчивают. Я также хочу иметь возможность запускать их как часть конвейера. Test.1 запускается, завершается, а затем запускается Test.2. и т. д. Поэтому у меня есть два разных способа, которыми я могу запустить Test.1. Индивидуальный или как часть трубопровода. Чтобы помочь здесь, я сделал Test.1, Test.2 и т. Д. Параметризованным (true/false). По умолчанию параметр равен false. Поэтому, когда я запускаю Test.1 по умолчанию (false), тест запускается и заканчивается. Когда я запускаю Test.1 с параметром True, я бы хотел, чтобы он запускал Test.2. Это второй бит я не могу показаться, чтобы сделать

Большое спасибо Джон

+0

Должны ли все тесты работать друг за другом? Если нет, просто создайте задание Test.all, которое запускает все ваши тестовые задания.Если порядок тестовых заданий не важен, вы можете сериализовать их с помощью плагина locks-and-latches (этот плагин имеет ошибку, а это означает, что даже если шлейфы заданий работают параллельно, они выполняются последовательно после каждого другие, проверьте базу данных проблем для получения дополнительной информации) –

+0

Да, все тесты должны выполняться последовательно, хотя порядок, в котором они выполняются, не важен. Если плагин locks-and-latches может сериализовать доступ, тогда работа Test.All будет работать нормально. Спасибо за отзыв и терпение Питер. Я дам вам знать, как я продвигаюсь. – johnoc

ответ

0

Разве вы не можете просто пропустить присоединиться плагин и сделать работу присоединиться зависит исключительно от работы вниз по течению? Это удовлетворит ваши требования о том, чтобы выполнение задания объединения выполнялось только в том случае, когда работа по нисходящей линии завершается успешно, пока вы убедитесь, что флажок «Триггер, даже если сборка нестабильна» не указана в определении зависимости в нисходящей сборке.

+0

Не могу сделать это, потому что моя работа по переходу является общей для длинного конвейера рабочих мест. То есть, задание A запускается, вызывается нисходящее задание, если нисходящий поток успешно выполняет задание B, вызывает работу по нисходящему потоку, если нисходящий поток завершает выполнение задания c. Работа «вниз по течению» является общей проверкой, используемой всем моим конвейером работы. В основном, «нисходящее» задание проверяет, выполнялось ли его родительское задание отдельно или как часть конвейера. Если индивидуально, то нисходящий поток выходит из строя (останавливает выполнение следующего дочернего задания), если в качестве части конвейера проходит нисходящий поток, инициируя следующее дочернее задание. Надеюсь, я объясню это хорошо! – johnoc

1

Как и в Gareth_bowles, я бы просто связал все задания (без соединения) и использовал Hudson Parameterized Trigger plugin, чтобы запустить зависимую работу, даже если текущее задание завершилось с ошибкой. Единственным недостатком является то, что у вас нет заданий, выполняемых параллельно.

С другой стороны, вы можете использовать Hudson Parameterized Trigger plugin для выполнения временного задания после тестового задания независимо от успеха тестового задания. Временное задание всегда будет успешным (потому что оно фактически ничего не значит для запуска задания на соединение. Таким образом, ваше тестовое задание (из представления задания на соединение) всегда будет успешным, и только задание по нисходящей линии определяет, выполняется ли задание объединения.

Редактировать

После понимания того, что вы действительно хотите сделать, а именно запустить Test.N самостоятельно или как часть цепи, я бы с моим первым предложением. Это означает, что Test.N всегда Триггеры Вниз по течению. N, независимо от того, был ли Test.N успешным или неудачным.Еще нужно Hudson Parameterized Trigger plugin И сконфигурируйте два триггера. Первый запускает зависимое задание, когда тестовое задание выполнено успешно или нестабильно, а второй триггер также запускает отступ но только тогда, когда тестовое задание выходит из строя. Не забудьте передать свои параметры, и все готово. Не очень сложно.

+0

Ваша вторая мысль очень близка к тому, что я пытался объяснить в своем первоначальном посте. За исключением того, что иногда я хочу, чтобы временная работа (я назвал ее моей нисходящей работой) терпеть неудачу. И когда это происходит, я хочу остановить трубопровод. Но ТОЛЬКО, когда нисходящая работа не работает, я хочу, чтобы конвейер остановился. Если исходное тестовое задание не работает, я хочу, чтобы конвейер продолжался. – johnoc

+0

Я согласен с вами (johnoc) в том, что он близок, однако я все еще включаю плагин join. Это дает преимущество в том, что задание объединения выполняется после того, как выполняются (зависимая работа и тестовое задание). Если бы он не нуждался в этой функции плагина соединения, он, вероятно, не использовал бы ее для начала. Если вы не используете соединение, а задание сборки запускает нисходящие и тестовые задания, но только задание нисходящего потока запускает задание соединения, работа по объединению может выполняться, даже если тестовое задание не закончено. –

+0

Вот пример конвейера того, что я хочу сделать: (Test.1, DownstreamCheck, join Test.2) (Test.2, DownstreamCheck, join Test.3) Все задания заданы параметром TRUE/FALSE. Если DownstreamCheck получает параметр FALSE, то он не работает. И это должно остановить работу соединения. Это единственная причина, по которой остановить работу Test.N. Но когда я пытаюсь реализовать это в Hudson, у меня есть две проблемы: 1. Конфигурация соединения не позволяет параметр. 2. Задача соединения Test.N не будет выполняться, если сбой в работе ни по нисходящей проверке, ни по заданию test.N. Я только хочу, чтобы он остановился, если DownstreamCheck завершился с ошибкой. – johnoc

Смежные вопросы