Эта статья представляет собой краткое руководство после борьбы с Google Cloud Build о том, как отправлять уведомления в случае сбоя или успешной сборки. Поскольку я не хотел использовать Slack и тяжелый клиент, я попробую в этом посте Telegram и открою для себя волшебный мир чат-ботов .
Вам также может понравиться: Serverless — это новый сервер сборки: Google CloudBuild (Контейнерный конструктор) через NodeJS
Google Cloud Build
Cloud Build — это сервис, который выполняет ваши сборки в инфраструктуре Google Cloud Platform. Cloud Build может импортировать исходный код из Google Cloud Storage, облачных исходных репозиториев, GitHub или Bitbucket, выполнять сборку в соответствии с вашими спецификациями и создавать артефакты.
Google Cloud Сложение является дешевой альтернативой Дженкинс, Travis- Ci и Circle CI , если у вас есть частные проекты. В то время как другие решения требуют довольно дорогой подписки, вы платите GCB в соответствии с использованным временем сборки. Если вы не делаете частые коммиты или сборка — это короткая задача, это справедливое решение. И бонус, первые 120 минут сборки бесплатны.
Там нет встроенного процесса, поэтому я должен был построить свой собственный. GCB рекомендует Slack, но мой выбор в пользу мобильных push-сообщений с Telegram.
телеграмма
Telegram — это облачная служба обмена мгновенными сообщениями и передачи голоса по IP. Пользователи могут отправлять сообщения и обмениваться фотографиями, видео, стикерами, аудио и файлами любого типа. Сообщения по умолчанию и мультимедиа в Telegram шифруются при хранении на его серверах.
Telegram Bots
Боты — это сторонние приложения, которые запускаются внутри Telegram. Пользователи могут взаимодействовать с ботами, отправляя им сообщения, команды и встроенные запросы . Вы управляете своими ботами, используя HTTPS-запросы к нашему API ботов .
Что может сделать БОТ (взято с сайта Telegram):
-
Получайте индивидуальные уведомления и новости.
-
Интеграция с другими сервисами.
-
Принимайте платежи от пользователей Telegram .
-
Создавайте пользовательские инструменты.
-
Создавайте одиночные и многопользовательские игры.
-
Построить социальные сервисы.
Как отправлять уведомления с помощью GCB
Вот схема, чтобы объяснить, как реализовать такой бот уведомления.
Создать работу с GCB
Первый шаг — определить GIT-репозиторий, который вы хотите использовать в качестве демонстрационного проекта.
Затем перейдите в раздел Google Cloud Build:
Проверьте наличие предмета
У вас должна быть тема, созданная GCB, указывающая, что сообщения сборки отправляются в выделенную очередь.
Создать Telegram BOT
Теперь пришло время для забавной части урока.
Сначала вам нужно будет установить приложение Telegram на свой мобильный телефон и следовать этому руководству, чтобы создать свой BOT. Просто поговорите с BotFather .
После создания BOT сохраните в вашем менеджере паролей Telegram TOKEN.
Создать функцию облака
На этом шаге мы, наконец, создадим наш чат-чат уведомлений Telegram. Программа будет закодирована в Node.js и развернута как облачная функция в Google Cloud.
Почему функция облака ? Потому что мы не хотим выделять штатную виртуальную машину для обработки только нескольких секунд сообщений Google Build.
Код доступен там, и объяснение довольно простое: https://github.com/sleroy/gcb-telegram-build .
Развертывание облачной функции
Для развертывания функции Cloud вам необходимо использовать gcloud .
Облачная функция публикуется только в одном GROUP_ID .
Чтобы получить идентификатор Telegram GROUP, вам нужно добавить бота Telegram, пригласив его в группу. Затем вам нужно запросить специальную конечную точку, чтобы получить список всех подписок для этого бота.
Вот Q / A об этом: https://stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id .
Инструкция по развертыванию для продвижения функции облака. Если все в порядке, функция облака будет развернута.
Простой текст
1
gcloud functions deploy subscribeTelegram --trigger-topic cloud-builds --runtime nodejs10 --set-env-vars "TELEGRAM_TOKEN=token1,GROUP_ID=groupID"
Результат
То, что вы должны получить, это вывод, похожий на этот
Простой текст
xxxxxxxxxx
1
Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 entryPoint: subscribeTelegram environmentVariables: GROUP_ID: 'xxxxxxxxxx' TELEGRAM_TOKEN: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz eventTrigger: eventType: google.pubsub.topic.publish failurePolicy: {} resource: projects/xxxxxxxx/topics/cloud-builds service: pubsub.googleapis.com labels: deployment-tool: cli-gcloud name: projects/xxxxxxxxx/locations/us-central1/functions/subscribeTelegram runtime: nodejs10 serviceAccountEmail: xxxxxxxxxx .gserviceaccount.com sourceUploadUrl: https://storage.googleapis.com/gcf-upload-us-central1- status: ACTIVE timeout: 60s updateTime: '2019-12-10T21:44:59Z' versionId: '14' The Telegram notification program
Заключение и дальнейшие улучшения
Этот бот действительно прост и легок в выполнении, но ему не хватает основной функции — отвечать на команды. Вот список интересных команд, которые я хотел бы добавить:
- Получить список n-х последних коммитов.
- Запустить сборку.
- Показать журналы сборки (или последние n-ые строки).
Для этого вам нужно внедрить бот-сервер (например, в node.js). В интернете множество примеров, и, вероятно, это будет тема другой статьи.
Дальнейшее чтение
Автоматическая сборка у вас под рукой с GCP Cloud Build
Как получить метрики для предварительного оповещения, чтобы предотвратить проблемы