TL;DR
Плагин Telegram Uploader для системы автоматизации сборочным процессом Jenkins CI, позволяет публиковать результаты сборки проекта в облачном хранилище Telegram.
Зачем это нужно?
Если вы используете Jenkins для сборки Android-приложений и вам не хватает возможности сразу же отправить собранный APK-файл в чат тестеров, откуда они могут напрямую скачать и установить приложение на свои устройства - этот плагин для вас. :)
Установка
Скачайте hpi-пакет и установите его через менеджер плагинов Jenkins (Manage Jenkins->Manage Plugins->Advanced->Upload Plugin).
Предупреждение: для работы плагина нужна Java 1.8.
Настройка
После установки плагина необходимо прописать токен бота в глобальных настройках Jenkins (Manage Jenkins->Configure System->Telegram Uploader):
После этого нужно сконфигурировать в нужной задаче (Job) послесборочное действие (post-build action) под названием "Upload artifacts to Telegram":
Параметры:
- Chat ID - идентификатор чата, в который необходимо загружать артефакты сборки, положительное число для приватных чатов, отрицательное для групп, строка
@channelname
для каналов. Обратите внимание, что Bot API не разрешает боту посылать сообщения первым, также нельзя отправлять сообщения в группы и каналы, членом которых бот не является. - Caption - заголовок, длиной от 0 до 200 символов. Возможно использование переменных окружения Jenkins.
- Filter - Ant-шаблон фильтра имен загружаемых артефактов, может быть пустым, что эквивалентно выражению
**
(все файлы во всех поддиректориях). - Disable notification - включает режим беззвучного уведомления о загруженных файлах.
- Fail build if upload is failed - определяет, отмечать или нет билд как неуспешный в случае возникновения проблем с загрузкой файлов.
Подводные камни
- Плагин находится в альфа-стадии. Это значит, что при его работе возможны (и будут) ошибки. Пишите о них в GitHub Issues.
- Артефакты для загрузки должны быть архивированы плагином Archive the artifacts. Как следствие, Telegram Uploader должен находиться в списке Post-build Actions после вышеупомянутого плагина.
- К сожалению, мне неизвестен простой способ узнать ID чата в Telegram. Из известных мне способов самым простым является написать в чате боту и потом посмотреть поле
id
в результате вывода командыcurl -i -X GET https://api.telegram.org/bot<inser_token_here>/getUpdates
. - Плагин использует интерфейс Telegram Bot API, который на данный момент имеет ограничение на размер загружаемых документов в 50 мегабайт.
- Ссылки в поле Caption на Android-клиенте некликабельны.
Пока это всё. Пожелания и замечания по плагину можно писать в комментариях.
Комментарии
Можно ли использовать этот плагин, если сборка прервана из-за того, что слишком долго выполнялась? (jenkins у меня для запуска тестов) Сделала все по инструкции но в бот ничего не приходит
"No files are matched by given filter found for upload to the Telegram" Always this message/ Also with empty field
Sergey Romanchikov make sure "Upload artifacts to Telegram" post-build action is set up after "Archive the artifacts" post-build action in your Jenkins job.
То есть плагин загружает не любые файлы из сборочной директории, а только те, что были архивированы на post-build шаге "Archive the artifacts".
You must archive the artifacts before this task