2016-10-27 3 views
4

Я хочу подражать оригинальному поведению Дженкинса делать вещи (например, отправлять уведомления), когда сборки становятся неустойчивыми/терпят неудачу или снова становятся успешными.Получить предыдущий результат сборки

Для этого мне нужно запросить предыдущее состояние сборки, которое может быть сделано, как это:

currentBuild.rawBuild.getPreviousBuild()?.getResult().toString() 

Однако rawBuild, как предполагается, является «опасным» объект и таким образом, как в черный список и cannot be executed inside the Groovy sandbox.

Теперь, поскольку я загружаю сценарии Jenkins из SCM, мне не удастся отключить песочницу Groovy на уровне каждого проекта, но только для всего экземпляра Jenkins (то есть through this), и это конечно, не то, что я хочу.

Есть ли другой способ определения последнего статуса сборки задания, который соответствует принципам песочницы (и не включает хаки, такие как запрос статуса через REST API Jenkins), которые я пропустил?

ответ

1

Нет необходимости доступа rawBuild, вместо этого вы можете сделать следующее без каких-либо специальных разрешений:

currentBuild.getPreviousBuild().result 

Это позволит вам увидеть результат предыдущей сборки без необходимости иметь какие-либо особые привилегии, устанавливаемые Дженкинс. Он должен быть доступен в любом месте.

Pipeline ссылка API: https://qa.nuxeo.org/jenkins/pipeline-syntax/globals#currentBuild

Дополнительная информация: https://support.cloudbees.com/hc/en-us/articles/217591038-How-to-Iterate-Through-the-Last-Successful-Builds-in-Pipeline-Job

+0

Что это делать? Как он отвечает на вопрос? Не просто выкидывать код. Когда ваша связь сходит, ваш ответ становится бесполезным. Объяснись! https://stackoverflow.com/help/how-to-answer – Rob

+0

@Rob отредактирован, чтобы добавить некоторый контекст. Не знаете, почему downvote? – Nick

+0

Я не делал ни слова и предпочитаю комментировать. Каждый день задается от 8000 до 10000 вопросов. Может быть, кто-то, кроме моей проблемы с вашим ответом, заключался в том, что не было объяснения того, что он сделал. Как указано в [The Tour] (https://stackoverflow.com/tour), Stack Overflow хочет быть «библиотекой ** подробных ответов ** на каждый вопрос о программировании». – Rob

4

Если вы одобряете метод getRawBuild из Управления Дженкинс>В процессе утверждения сценария после того, как вы получите RejectedAccessException на сборке, вы можете использовать метод из следующего сборки даже в заводной песочнице.

Кроме getRawBuild, вы должны один за другим утверждать getPreviousBuild и getResult после получения исключения против каждого метода для вашего скрипта.

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