В wehkamp мы верим в то, что команды могут автоматизировать свою работу. В последнее время мы экспериментировали с проектом Hubot на GitHub, чтобы создать чат-ботов для Slack. Это была настоящая поездка! Что мы построили? Много! Боты взяли под свой контроль нашу систему заданий и наше планирование $ universe. Мы можем просматривать панели управления Grafana и расписания PagerDuty или создавать каналы инцидентов прямо из наших каналов Slack. И это только начало…

Чтобы дать командам быстрый старт, мы создали проект с открытым исходным кодом bot-zero. Это решает некоторые проблемы с настройкой и разработкой. В этом блоге я покажу, как начать работу за считанные минуты, и расскажу о некоторых сделанных нами решениях.

Первая настройка

Настройка проста. Hubot написан на Node.js, поэтому убедитесь, что он установлен в вашей системе. Вам также понадобится редактор для кодирования скриптов. Я использую Visual Studio Code (бот настроен на отладку с помощью этой IDE, но подойдет любая IDE). Если у вас есть редактор и установлен Node.js, выполните следующие действия:

  1. Форк проекта bot-zero.
  2. Клонируйте свой разветвленный проект на свой компьютер.
  3. Перейдите к http://slackapi.github.io/hubot-slack/#getting-a-slack-token, чтобы узнать, как получить токен Slack для своего бота.
  4. Добавьте токен в свой .env файл
  5. Откройте терминал и перейдите в каталог с ботами.
  6. Введите npm install, чтобы установить пакеты NodeJs.
  7. Запустите бота с помощью npm start.

Легкий. Пизи.

Улучшение местного развития

Мы добавили несколько функций, чтобы упростить локальную разработку. Первое улучшение - это файл конфигурации .env. Многие пакеты Hubot требуют добавления переменных среды для настройки параметров. В предыдущих версиях мы сталкивались с проблемой их настройки в разных системах (Mac, Linux и Windows). Вот почему мы добавили файл .env. Проект загрузит настройки автоматически, когда вы запустите своего бота. Примечание: вы не должны передавать файл на GitHub, поскольку он содержит ваши личные настройки.

Не хотите использовать регулярные выражения, чтобы Hubot слушал? Мы вас позаботимся! Мы добавили Hubot Command Mapper, чтобы вы могли сопоставлять команды с помощью API и вместо этих ужасных регулярных выражений. Это также помогает ускорить разработку ваших скриптов, предоставляя команду перезагрузки, поэтому вам не нужно перезапускать бота.

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

Разработать новые сценарии так же просто, как добавить новый сценарий в каталог / scripts /.

Удалены примеры кофе, добавлены примеры ES6

Мы любим кофе… напиток, который есть! Установка бота Slack по умолчанию включает в себя множество (не очень полезных) примеров кофейных скриптов. Мы удалили их все и добавили 3 примера JavaScript / ES6. Бот по-прежнему будет загружать все файлы .coffee и .js, которые он найдет в каталоге скриптов.

Первый пример - это список ToDo (scripts / todo.js) - он показывает как использовать Hubot Command Mapper с параметрами.

Второй пример - Норрис (scripts / norris.js) - он показывает, как использовать Axios для запросов веб-сервисов. Клиент Axios возвращает ES6 Promise, упрощая асинхронные операции. Мы думаем, что клиент Axios предоставляет лучший API, чем HTTP-клиент Hubot, особенно потому, что клиент Hubot оптимизирован для кофейного скрипта.

Третий пример сценария - это сообщение о ходе выполнения (scripts / progress.js) - он использует Slack API для обновления одного сообщения. Он превращает ваше сообщение в Slack в мощный индикатор прогресса.

Тестирование

Так как насчет тестирования ваших скриптов? Мы наткнулись на пакет Hubot Pretend, который решает эту проблему. Он будет имитировать Hubot и использовать ES6 Promise для взаимодействия с результатами. Мы используем комбинацию Mocka и Chai для фактического тестирования. Чтобы упростить понимание и реализацию, мы добавили тесты для примеров скриптов в каталог / tests /.

Одним из преимуществ использования разработки через тестирование является то, что у вас более короткий цикл - вам не нужно запускать Hubot и вручную запрашивать его через Slack.

Это все

Итак, это все. Клонировать. Добавить токен. Бег. Код. Перезагрузить и повторить. Наслаждаться!

Первоначально опубликовано на keestalkstech.com 16 августа 2018 г.