Рубрики
Uncategorized

Автоматизация CI/CD с помощью WebHooks: NetLify развертывает с помощью Slack Bot

Я считаю, что все, что может быть автоматизировано, должно быть автоматизировано. Вот почему я решил использовать … С тегами Webhooks, DevOps, Tuperial, ShowDev.

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

Прочитав этот пост, вы научитесь:

  • Создайте Slack Bot & Configure Slack Webhooks
  • Настройка крючков для строительства netLify

Строительство Slack Bot Славкий бот имеет решающее значение для этой услуги. Как только пользователь в нашем рабочем пространстве упоминает бота, цель состоит в том, чтобы он запустил развертывание NetLify. Чтобы начать создание этой функции, перейдите к панели Dash API Slack и создайте новое приложение Slack, нажав кнопку «Создать пользовательское приложение» в верхней части страницы. Затем напишите название приложения во всплывающем меню, выберите рабочее пространство, с которым будет связан бот и сохранить. После создания приложения Slack пришло время зацепить Slack Webhooks, чтобы получить уведомления, когда ваш бот упоминается в канале Slack!

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

Ниже приводится реализация логики веб -сервера, которую Slack отправит в WebHook уведомления, написанные в Nodejs.

    const express = require("express");
    const bodyParser = require("body-parser");
    const app = express();

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));

    app.post("/", async (req, res) => {
        const challenge = req.body.challenge
        res.send(challenge).status(200)
    });

    app.listen(3000, () => console.log(`App is running on port 3000`));

Этот сервер может быть развернут с помощью локального инструмента туннелирования, например Ngrok или Hookdeck Cli. После развертывания вышеуказанного сервера вы можете продолжать настраивать бот Slack. На домашней странице приложения Slack, которую мы создали выше, перейдите на страницу подписки на события и переключите кнопку «Включить события». Введите URL -адрес сервера, созданного выше в качестве значения для поля URL -адреса запроса. Выберите app_mention из раскрывающегося меню под вкладкой «Подпишитесь на бот -события».

Последним шагом в настройке Slack является установка бота Slack, который мы только что настроили на наше рабочее пространство Slack. Нажмите на меню «Установка приложения» в левой стороне панели инструментов, и идите дальше и уполномочить бота получить доступ к вашей рабочей области.

Настройка NetLify

В предыдущем разделе мы настроили бот Slack для отправки уведомлений в наш URL в любое время, когда он упоминается в рабочем пространстве. В этом разделе вы узнаете, как настроить предложение NetLify Webhook, называемое «Build Hooks*. » *В приборной панели NetLify перейдите к ** Настройкам сайта> «Строительница и развертывание»> «Непрерывное развертывание»> «Строительные крючки» . Выберите «Добавить крюк для сборки», подходящее имя для крючка, а также ветвь GitHub, которая должна быть вызвана крючком. После создания крючка сборки вам будет предоставлен URL -адрес, который запустит сборку, как только он получит запрос.

Сделать все это вместе

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

    const TriggerDeploy = () => {
        const options = {
          method: "POST",
          url:
           "https://api.netlify.com/build_hooks/xxxxxxxxxxxx3b15ad",
          headers: {
           "Content-type": "application/json",
          }
        }
        request(options, function (error, response) {
          if (error) throw new Error(error);
          console.log(response.statusCode);
        });
    }

    const hasWord = (str, word) => str.split(/\s+/).includes(word);

    app.post("/", async (req, res) => {
        const body = req.body.event.text
        res.status(200)
        const shouldTrigger = hasWord(body, "deploy")

        if (shouldTrigger){
           TriggerDeploy()
        }
    });

Приведенный выше фрагмент содержит три части:

  1. TriggerDeploy Функция — эта функция просто делает запрос POST в URL NetLify Build Hook.
  2. hasword функция, которая проверяет, содержится ли слово в предложении, и возвращает логическое значение.
  3. Обработчик запроса. В рамках функции обработчика запроса мы извлекаем текст уведомления, отправленный Slack от тела запроса, вызовыте функцию HASWWORD и условно вызывает функцию TriggerDeploy (если слово «развертывание» присутствует в уведомлении, отправленном Slack).

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

Готовимся к производству

Перед тем, как развернуть производство, важно поднять ваш сервис. Вам нужно будет развернуть наш веб -сервер в соответствующую службу хостинга, такую как H Eroku. После этого настройте HookDeck, чтобы обработать приглашение и обработку ошибок подключений к веб -крючке. Это гарантирует, что вы не пропустите какие -либо уведомления WebHook. (Чтобы узнать, как настроить подключение к Webhook в Hookdeck, ознакомьтесь с этим руководством, которое мы написали). Наконец, обновите поле URL -адреса запроса с помощью нового URL Hookdeck.

В заключение

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

Интересно узнать больше? Следите за Хукдеком, где я поделюсь учебными пособиями и руководством о Webhooks! Попробуйте Hookdeck бесплатно Анкет Получить, контролировать и управлять всеми вашими веб -крючками из одного места. Мы справляемся с сложностью, чтобы вы могли сосредоточиться на создании своего продукта.

Оригинал: «https://dev.to/hookdeck/the-power-of-webhooks-automating-netlify-deploys-using-a-slack-bot-3178»