Поиск по сайту:

Как интегрировать GitHub со Slack с помощью Slack API


Отслеживайте активность репозитория GitHub в режиме реального времени в Slack с помощью этого API.

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

Более того, интеграция GitHub со Slack позволяет настраивать уведомления в соответствии с уникальным рабочим процессом вашей команды. Это сводит к минимуму отвлекающие факторы и позволяет сосредоточиться на том, что действительно важно. Такой индивидуальный подход к общению позволяет вашей команде принимать обоснованные решения и предпринимать своевременные действия, обеспечивая высочайшее качество результатов.

Шаг 1. Создайте новое приложение Slack

Для этого вам должно быть удобно пользоваться платформой Slack. Вы также должны быть знакомы с GitHub.

Первым шагом интеграции является создание нового приложения Slack. Это приложение будет отвечать за публикацию сообщений на выбранном канале Slack при возникновении события в репозитории. Чтобы создать новое приложение, перейдите на веб-сайт Slack и войдите в свою учетную запись. Затем создайте новое рабочее пространство. Вы будете использовать это рабочее пространство для тестирования своего приложения перед его установкой в рабочее пространство вашей команды.

Перейдите на веб-сайт Slack API в новой вкладке браузера.

Нажмите кнопку Ваши приложения. На появившейся странице нажмите кнопку Создать новое приложение.

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

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

Шаг 2. Настройте входящий веб-хук Slack

Slack Incoming Webhook позволяет отправлять сообщения из внешних источников в ваше рабочее пространство Slack. Чтобы настроить веб-перехватчик, выберите функцию Входящие веб-перехватчики. Обязательно включите кнопку Активировать входящие веб-перехватчики.

Прокрутите страницу вниз до раздела URL-адреса веб-перехватчиков для вашей рабочей области . Нажмите кнопку Добавить новый вебхук в рабочую область.

Slack попросит вас выбрать канал, на котором ваше приложение будет публиковать сообщения. Выберите канал и нажмите кнопку Разрешить.

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

Теперь вы закончили настройку стороны Slack.

Шаг 3. Настройте репозиторий GitHub

Перейдите на сайт GitHub и войдите в свою учетную запись. Перейдите в репозиторий, из которого вы хотите получать уведомления о событиях. Вы также можете создать новый репозиторий. Нажмите вкладку Действия под названием репозитория.

Затем нажмите ссылку настроить рабочий процесс самостоятельно. На следующей появившейся странице вам потребуется создать файл YAML в каталоге рабочих процессов GitHub. Этот файл определяет рабочий процесс GitHub Actions, отвечающий за отправку уведомлений в ваше рабочее пространство Slack.

Вы будете писать код YAML во встроенном редакторе. Этот код интегрирует GitHub со Slack, отправляя уведомления на канал Slack, когда в репозитории происходят определенные события.

Полный исходный код, используемый в этой статье, доступен в репозитории GitHub.

Шаг 4. Напишите код YAML для интеграции GitHub со Slack

Назовите свой рабочий процесс. Смело выбирайте имя по своему вкусу.

name: Slack Notification

Укажите события, которые будут запускать рабочий процесс. Здесь вы выбираете события, о которых хотите уведомлять свою команду. Добавляйте или удаляйте события в соответствии с вашими требованиями.

on:
 push:
 pull_request:
 issues:
   types:
     - opened
     - closed
     - reopened
     - edited
     - deleted
     - pinned
     - unpinned
     - assigned
     - unassigned
     - labeled
     - unlabeled
     - milestoned
     - demilestoned
 issue_comment:
   types: [created, edited, deleted]
 create:
 delete:

Настройте свое задание и выберите виртуальную среду, в которой оно будет выполняться. notify_slack — имя задания. Вы можете изменить его по своему вкусу.

jobs:
 notify_slack:
   runs-on: ubuntu-latest

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

steps:
   - name: Send Slack notification

Определите переменную среды с именем SLACK_WEBHOOK_URL. Он будет хранить URL-адрес веб-перехватчика Slack. Позже вы добавите URL-адрес в секреты репозитория GitHub.

env:
       SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

Настройте действие action-slack GitHub. Это стороннее действие, которое управляет базовой логикой взаимодействия с API Slack. Это позволяет вам сосредоточиться на настройке сообщений и событий, которые вызывают уведомления. Это значительно упрощает процесс отправки уведомлений в Slack.

     uses: 8398a7/action-slack@v3

Этот код использует действие 8398a7/action-slack@v3 .

Настройте действие 8398a7/action-slack@v3 с помощью специальных параметров. Параметр status устанавливает статус сообщения пользовательский. Это позволит вам определить содержимое сообщения Slack, используя пользовательскую полезную нагрузку. Параметр fields перечисляет поля, которые нужно включить в сообщение Slack.

with:
       status: custom
       fields: repo,commit,event,action,workflow,ref,URL

Создайте custom_payload, который настроит внешний вид сообщения Slack в соответствии с вашими предпочтениями.

custom_payload: |
 {
   "attachments": [
     {
       "color": "${{ job.status }}",
       "title": >-
         ${{ github.actor }} ${{ github.event.pull_request && github.event.pull_request.merged == true && 'merged a pull request' || github.event.pull_request && 'opened a pull request' || github.event_name == 'push' && 'pushed new changes' || github.event_name == 'create' && 'created a new branch or tag' || github.event_name == 'delete' && 'deleted a branch or tag' || github.event_name == 'issues' && github.event.action || 'triggered an event' }},
       "text": >-
         :tada: Event details:
        
         - Repository: ${{ github.repository }}
         - Branch: ${{ github.ref }}
         - Message: ${{ github.event_name == 'push' && github.event.head_commit.message || github.event_name == 'issues' && github.event.issue.title || github.event_name == 'pull_request' && github.event.pull_request.title || '' }}
         - :globe_with_meridians: Link: ${{ github.event.pull_request.html_url || github.event.issue.html_url || github.event.repository.html_url }}
     }
    
   ]
 }

Вы можете обратиться к индивидуальному варианту использования 8398a7/action-slack@v3, чтобы найти все поддерживаемые настройки. Зафиксируйте файл YAML для создания нового рабочего процесса.

Последний шаг интеграции GitHub со Slack — добавление нового секрета репозитория. Секрет в этом случае — это URL-адрес Slack Webhook , который вы скопировали из Slack. Держите этот URL-адрес в секрете, поскольку любой, у кого есть к нему доступ, может отправлять сообщения в ваше рабочее пространство.

Перейдите к настройкам вашего репозитория. Нажмите на секреты и переменные в разделе безопасность. Выберите параметр Действия.

Нажмите Новый секрет репозитория. Добавьте имя секрета как SLACK_WEBHOOK_URL. Затем вставьте Slack URL в поле «Секрет». Наконец, нажмите кнопку Добавить секрет, чтобы сохранить новый секрет.

Вы завершили интеграцию GitHub со Slack. Каждый раз, когда в вашем репозитории происходит событие, на вашем канале будет отображаться сообщение. Попробуйте создать новый запрос на включение. Это вызовет событие push.

На снимке экрана ниже показаны примеры сообщений в Slack, показывающие события, произошедшие в репозитории.

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

Повысьте свою производительность с помощью интеграции со Slack

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

Статьи по данной тематике: