Как запланировать работу с Дженкинсом

Введение Планирование работы в Jenkins очень полезно, когда дело доходит до разработки отличного продукта. Представьте себе, какое огромное преимущество - превратить трудоемкую задачу в автоматизированную работу. Он не требует никакого надзора, и пока в рабочем процессе нет ошибок, вам не о чем беспокоиться. В сегодняшней статье мы создадим задание, которое будет запускаться каждые пять минут и будет иметь следующий результат: Hello, World! Сегодняшние: &lt;<date> &gt; Вот текущее время: &lt;<time> &gt; Дополнительно мы бу

Вступление

Планирование работы в Jenkins очень полезно, когда дело доходит до разработки отличного продукта. Представьте себе, какое огромное преимущество - превратить трудоемкую задачу в автоматизированную работу. Он не требует никакого надзора, и пока в рабочем процессе нет ошибок, вам не о чем беспокоиться.

В сегодняшней статье мы создадим задание, которое будет выполняться каждые пять минут и будет иметь следующий результат:

 Hello, World! 
 Today's: 
 <<date>> 
 Here's the current time: 
 <<time>> 

Кроме того, мы создадим задание, которое отслеживает другой проект и, в зависимости от его статуса, распечатывает автоматическую выписку.

Примеры использования для автоматизации с Jenkins

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

Такие продукты, как Amazon Echo и Alexa, можно настроить для вызова заданий Jenkins, которые выполняют различные действия. Вы можете относительно легко интегрировать его в свой умный дом:

  1. Скажите: «Алекса, запри двери» (это будет триггером , то есть Дженкинс будет слушать это событие).
  2. Навык Алекса активирует работу Дженкинса.
  3. Работа Дженкинса будет использовать скрипт для вызова API системы блокировки умных дверей.
  4. Алекса ждет, пока работа Дженкинса будет завершена, и расскажет, как она прошла: «Дверь успешно заперта» , «Двери уже заперты» или «Двери не могут быть заперты» .

Конечно, это не работа CI / CD, но она находится в пределах возможностей существующей технологии с Jenkins.

Требования

  • Сервер Jenkins - в этом руководстве мы будем использовать официальный образ Docker для настройки сервера Jenkins.
  • Работа, которую вы хотели бы автоматизировать

Создание работы Jenkins

Войдите в свое приложение Jenkins и нажмите « Создать работу» . Тип работы не имеет значения. Это может быть Freestyle , Maven и т. Д. Все, что имеет значение, - это то, как мы настраиваем планировщик.

В этой статье мы будем использовать Pipeline . Выберите имя для своего проекта и сохраните его:

создать проектДженкинса{.ezlazyload}

Теперь, прежде чем мы займемся частью планирования, давайте настроим сценарий Pipeline Groovy, который будет печатать сообщение из введения.

Прокрутите вниз до конвейера и добавьте следующий скрипт:

 pipeline { 
 agent any 
 
 stages { 
 stage('Write Greetings') { 
 steps { 
 echo 'Hello, World!' 
 } 
 } 
 
 stage('Write Date') { 
 steps { 
 print 'Today\'s ' 
 print new Date().format("dd-MM-yyyy", TimeZone.getTimeZone("UTC")) 
 } 
 } 
 
 stage('Write Hour') { 
 steps { 
 print 'Here\'s the current time ' 
 print new Date().format("HH:mm:ss", TimeZone.getTimeZone("UTC")) 
 } 
 } 
 } 
 } 

Сценарий состоит из трех этапов: написание приветствия , дата записи и час записи . Мы используем этапы, чтобы лучше определить и структурировать наш сценарий. Также этапы можно просмотреть в пользовательском интерфейсе Jenkins.

Если один из них выйдет из строя, вы узнаете, какой из них:

КонвейерныйGroovy-скрипт{.ezlazyload}

Выполнение работы

Наша работа готова к запуску! Нажмите на Build Now и проверим вывод:

Постройте работуДженкинса{.ezlazyload}

 Started by user Alex 
 Running in Durability level: MAX_SURVIVABILITY 
 Running on Jenkins in /var/jenkins_home/workspace/Scheduled Pipeline 
 Hello, World! 
 Today's: 
 24-12-2020 
 Here's the current time: 
 16:00:38 
 Finished: SUCCESS 

Вы также можете увидеть на странице вакансии среднее время для каждого этапа:

Детали этапа работыДженкинса{.ezlazyload}

Есть много способов запустить задание Jenkins: вручную (конечно) , с помощью выражения Cron, хуков, просмотра других проектов и т. Д.

Планирование заданий Дженкинса с помощью Cron

Начнем с запуска задания через утилиту Cron. Мы будем выбирать периодическую сборку, а для поля «Расписание» используем следующее выражение:

 H/5 * * * * 

Запланировать работуДженкинса{.ezlazyload}

Это выражение означает, что задание будет выполняться каждые 5 минут. Вот несколько полезных примеров других шаблонов:

  • 0 0 13 1/1 * ? * â € «каждый час, начиная с 13:00;
  • 0 0 17 ? * MON-FRI * - каждый рабочий день, в 17:00;

Если вы не хотите изучать этот тип форматирования для планирования своей работы, вы можете использовать генератор выражений Cron, например CronMaker .

Посмотрим на результат. Для этого нам придется подождать. Через 10 минут вы должны увидеть, что 2 задания были запущены автоматически:

Результаты работыДженкинса{.ezlazyload}

Обратите внимание, что первое задание было выполнено в 21:12, затем в 21:17 и последнее - в 21:22. Итак, правило сработало! У нас есть работа, которая выполняется каждые 5 минут.

Планирование работы Дженкинса путем просмотра других проектов

Теперь, когда мы увидели, как можно периодически планировать задание, давайте создадим еще одно, которое запускается каждый раз, когда первое было успешным. Создайте еще один проект конвейера и добавьте следующий код:

 pipeline { 
 agent any 
 
 stages { 
 stage('It worked') { 
 steps { 
 echo 'The other job worked!' 
 } 
 } 
 } 
 } 

У нас есть сценарий конвейера, давайте его запланируем. На вкладке «Триггеры сборки » выберите « Сборка после сборки других проектов» .

Войдите в проект, за которым нужно смотреть, и выберите случаи, когда он должен запускаться:

Смотретьпроекты{.ezlazyload}

Сохраните и подождем немного. Вы должны видеть, что новое задание запускается каждый раз, когда первое успешно выполняется. Вы можете увидеть подробную информацию о первом запуске этого второго задания, которое было инициировано ранее созданным заданием:

Сведения о вакансииДженкинса{.ezlazyload}

Вот результат:

 Started by upstream project "Scheduled Pipeline" build number 7 
 originally caused by: 
 Started by timer 
 Running in Durability level: MAX_SURVIVABILITY 
 Running on Jenkins in /var/jenkins_home/workspace/The other job worked 
 The other job worked! 
 Finished: SUCCESS 

Заключение

Автоматизация очень полезна и является одной из ключевых вещей, которые приносят нам технологии, независимо от процесса, который вы хотите автоматизировать.

В этой статье мы рассмотрели, как запланировать задание в Jenkins для периодического запуска с использованием шаблона Cron, а также для запуска при построении других проектов.

comments powered by Disqus