Как интегрировать 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, которую вы можете добавить в свое рабочее пространство. Существует множество интеграций, которые вы можете использовать для повышения производительности вашей команды и улучшения их общения. Знакомство с этими интеграциями поможет вам оптимизировать рабочий процесс вашей команды и держать всех в курсе событий.