Подтвердить что ты не робот

Jenkins post build step и action - в чем разница

Может показаться, что это очень простой вопрос, но я не могу найти какую-либо статью, которая объясняет, почему Jenkins предоставляет шаг пост-сборки, а также действие.

В Jenkins - я вижу, что варианты отличаются в post build step vs. action, но

  • Каков порядок исполнения?
  • Когда мы должны использовать какой вариант?
  • Каковы наилучшие методы?
4b9b3361

Ответ 1

С первого взгляда, здесь рабочий процесс Jenkins (без дополнительных плагинов)

  • [При необходимости, если необходимо] Установите инструменты (например, JDK, Ant, Maven и т.д.).
  • [Необязательно] Выполните проверку SCM (например, SVN или Git).
  • Выполните этап сборки (например, проект Ant, код компиляции и т.д.).
  • [Дополнительно] Выполнять шаги после сборки (например, Архивировать артефакты, отправлять электронную почту и т.д.).

Существуют плагины, которые позволяют выполнять действия сразу после установки Инструменты, такие как Pre-SCM-step и EnvInject. Также есть плагины, которые добавляют намного больше возможных шагов сборки и этапа после сборки.

Разница между этапами Build и Post-build частично основана на логическом разделении, частично на конфигурации рабочего процесса.

С логической точки зрения, когда вы создаете/компилируете проект, это шаг "Сборка", тогда как при архивировании артефактов, поскольку это происходит после сборки, это шаг "После сборки".

Но также есть соображения конфигурации рабочего процесса, и это имеет все, что связано с:

  • " Когда выполняются сбои сборки" и
  • " Состояние сборки" (например, "Успех", "Нестабильный", "Сбой" )

Когда есть multiple "Build" шаги, Jenkins:

  • Выполняет первый шаг сборки
  • Проверяет код выхода первого шага сборки
    • Если код выхода 0 (успех), Дженкинс продолжает следующий шаг сборки (если есть)
    • Если код выхода не является 0 (сбой), то метки Jenkins строятся как FAILED и продолжают выполнять действия Post-build.
  • Jenkins выполняет шаги после сборки (независимо от того, была ли построена отметка FAILED или нет)

Итак, другими словами:

  • Если шаг сборки завершен, Jenkins может выполнить следующие шаги сборки (если есть).
  • Если шаг сборки завершился неудачно, Jenkins не выполнит следующие шаги сборки.
  • Если выполнить все шаги сборки, Дженкинс отметит build SUCCESS.
  • Если не удалось выполнить любой шаг сборки, Jenkins отметит build FAILED.
  • Шаги после сборки выполняются независимо от Состояние сборки (FAILED или нет).

Технически все шаги после сборки должны выполняться в любое время, однако на практике, если исключения этапа Post-build, задание никогда не завершается, что может привести к выполнению некоторых шагов после сборки.

Кроме того, как правило, шаги Post-build не изменяют Состояние сборки, но есть некоторые, которые специально предназначены для этого (например, при архивировании артефактов вы можете выбрать отметку build FAILED если не все артефакты найдены, даже если после всех шагов сборки строчка была отмечена SUCCESS)

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

EDIT:

Поскольку я продолжаю получать комментарии, вот скриншот совершенно новой чистой установки Jenkins (Windows) ver.1.634 (как упоминалось в комментариях).

На скриншоте обратите внимание на следующее:

  • Новый проект Freestyle.
  • Полоса прокрутки полностью вниз, на странице больше ничего нет.
  • Версия 1.634 (по запросу).
  • Сборка с Добавить шаг сборки.
  • Послестроить действия с помощью Добавить действие после сборки.

Итак, чтобы повторно повторить мой предыдущий комментарий:

Существует только одно сообщение "ничего"

хотите ли вы назвать его "шаг" или "действие" (Дженкинс изменил маркировку на протяжении многих лет).

Пользовательские плагины могут добавить много дополнительных функций, но для чистой установки основное задание выполняется так, как я описал.

введите описание изображения здесь

Ответ 2

Для элемента (задания), созданного в виде шагов сборки проекта Maven, не настраивается (для сборки доступны только цели maven), поэтому для настройки доступны две новые дополнительные категории: шаг предварительной сборки и шаг после сборки.

В моем опыте шаг pre/post-build используется для выполнения действий, которые могут влиять на результат сборки (например, анализ сонара), и действия post-build для действий, которые должны выполняться на основе результата сборки (например, почтовые уведомления).

Ответ 3

Разъяснение. Шаг построения Post может быть установлен только для выполнения, когда сборка имеет определенный статус. т.е. если не удалось что-то сделать (отправить журналы кому-то?), если они прошли или нестабильно что-то сделать. т.е. указать источник, чтобы его можно было продвигать для выпуска? Действие Post build выполняется ВСЕГДА. Там, где вы отправляете электронные письма, архивные артефакты, отправляете артефакты на мастер (при использовании подчиненных и имеющих плагин) и т.д. Я использую шаг сборки Post, чтобы пометить/пометить успешно созданный исходный код в моей рабочей области GIT. Для этого я использую небольшой script. Теперь я просто хочу, чтобы шаг Post Build был доступен в Freestyle, так как он является отличным вариантом только для того, чтобы отмечать успешные сборки.