Перейти к основному содержимому

Интеграция Jenkins Slack

· 5 мин. чтения

1. Обзор

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

В этом руководстве мы увидим, как настроить две популярные платформы, Jenkins и Slack, для совместной работы, и расскажем, что происходит во время работы наших конвейеров CI/CD.

2. Настройка Slack

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

В Slack мы создадим приложение и сгенерируем токен OAuth:

  • Посетите https://api.slack.com
  • Войдите в желаемую рабочую область
  • Нажмите кнопку « Начать сборку»
  • Назовите приложение Jenkins и нажмите « Создать приложение ».
  • Нажмите OAuth и разрешения.
  • В разделе Bot Token Scopes добавьте область chat :write.
  • Нажмите кнопку « Установить приложение в рабочую область ».
  • Нажмите кнопку « Принять »

Когда это будет сделано, мы увидим итоговый экран:

./6c452afe186244bb267bac8f40075997.jpg

Теперь нам нужно принять к сведению токен OAuth — он понадобится нам позже, когда мы настроим Jenkins. Мы должны относиться к ним как к конфиденциальным учетным данным и хранить их в безопасности.

Чтобы завершить настройку Slack, мы должны пригласить нового пользователя Jenkins на каналы, которые мы хотим использовать. Один из простых способов сделать это — упомянуть нового пользователя с помощью символа @ внутри каждого канала.

3. Настройка Дженкинса

Чтобы настроить Jenkins, нам понадобится учетная запись администратора .

Во-первых, давайте начнем с входа в Jenkins и перехода к Manage Jenkins > Plugin Manager .

Затем на вкладке « Доступно » мы будем искать Slack :

./d3f3da3aec3e6c6b48e406b2a5cafe71.jpg

Ставим галочку Slack Notification и нажимаем Установить без перезагрузки .

Теперь нам нужно настроить новые учетные данные. Перейдем к Jenkins > Credentials > System > Global Credentials и добавим новые секретные текстовые учетные данные:

./adf8c10c1773836bb3bc1419e88d3b23.jpg

В поле Secret поместим токен OAuth из Slack . Мы также должны дать этим учетным данным значимый идентификатор и описание, чтобы их было легче идентифицировать позже. Хранилище учетных данных Jenkins — безопасное место для хранения этого токена.

Как только мы сохраним учетные данные, нужно установить еще одну глобальную конфигурацию. В разделе Jenkins > Manage Jenkins > Configure System нам нужно установить флажок Custom slack app bot user в разделе Slack :

./ef8e18b9df76a6ca2698c14fec191871.jpg

Теперь, когда мы завершили настройку Jenkins, давайте посмотрим, как настроить задания и конвейеры Jenkins для отправки сообщений Slack.

4. Настройка традиционной работы Jenkins

Традиционные задания Jenkins обычно выполняют одно или несколько действий для достижения своих целей. Они настраиваются через пользовательский интерфейс Jenkins.

Чтобы интегрировать традиционную работу со Slack, мы будем использовать действие после сборки .

Давайте выберем любую работу или создадим новую. Когда мы раскрываемся в меню « Добавить действие после сборки », мы находим Slack Notifications :

./8804565a5811ecdf7dbce68ad45cec27.jpg

После выбора появляется множество доступных входных данных для действия Slack Notification. Как правило, большинства значений по умолчанию достаточно. Тем не менее, есть несколько обязательных частей информации:

  • Для каких этапов сборки отправлять сообщения (начало, успех, неудача и т. д.)
  • Имя учетных данных для использования — те, которые мы добавили ранее
  • Имя канала Slack или идентификатор участника для отправки сообщений.

При желании мы также можем указать дополнительные поля, такие как информация о коммите, используемая для задания Jenkins, настраиваемые сообщения, настраиваемые значки ботов и многое другое:

./cd59d840cee1e1b05c97620b7aaa1920.jpg

При настройке через пользовательский интерфейс мы можем использовать кнопку « Проверить соединение» , чтобы убедиться, что Дженкинс может получить доступ к Slack. В случае успеха мы увидим тестовое сообщение в канале Slack от пользователя Jenkins:

./b6323d8f76892a0adb448f22df84d988.png

Если сообщение не отображается, файлы журнала Jenkins полезны для устранения неполадок. Как правило, нам нужно дважды проверить, что в действии после сборки есть все обязательные поля , что токен OAuth был скопирован правильно и что токену были предоставлены правильные области действия при настройке Slack.

5. Настройка конвейера Jenkins

Jenkins Pipelines отличается от традиционных рабочих мест. Они используют один сценарий Groovy, разбитый на этапы, для определения сборки. У них также нет действий после сборки, поэтому для отправки сообщений Slack мы используем сам скрипт пайплайна . **

**

Следующий фрагмент отправляет сообщение в Slack из конвейера Jenkins:

slackSend botUser: true, 
channel: 'builds',
color: '#00ff00',
message: 'Testing Jekins with Slack',
tokenCredentialId: 'slack-token'

Как и в случае с традиционной настройкой задания Jenkins, мы должны указать имя канала и имя используемых учетных данных.

Через конвейер Jenkins мы также можем использовать различные дополнительные функции Slack, такие как загрузка файлов, потоки сообщений и многое другое.

Одним из недостатков использования конвейеров Jenkins является отсутствие кнопки тестирования. Чтобы протестировать интеграцию со Slack, нам нужно выполнить весь конвейер.

При первой настройке мы можем создать новый конвейер, который содержит только команду Slack, пока все работает.

6. Дополнительные соображения

Теперь, когда мы подключили Jenkins и Slack, есть некоторые дополнительные соображения.

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

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

Наконец, хотя мы рассмотрели один из наиболее популярных плагинов Slack для Jenkins, который обеспечивает точный контроль над тем, что отправлять, существует ряд других плагинов, которые служат другим целям. Например, если мы хотим, чтобы каждое задание Jenkins отправляло одно и то же уведомление, для этого может лучше подойти плагин Global Slack Notifier .

7. Заключение

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

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