Struchkov Mark
828f826c36
All checks were successful
continuous-integration/drone/push Build is passing
|
||
---|---|---|
.github | ||
bot-context | ||
bot-core | ||
bot-data | ||
documentation | ||
gitlab-app | ||
gitlab-sdk | ||
telegram-bot | ||
.drone.yml | ||
.gitignore | ||
docker-compose-dev.yml | ||
docker-compose.yml | ||
Dockerfile | ||
Dockerfile-develop | ||
LICENSE | ||
pom.xml | ||
README.md |
Уведомления GitLab в Telegram
Этот проект позволяет оперативно получать и настраивать персональные уведомления о событиях из GitLab.
Статья о проекте: https://struchkov.dev/blog/gitlab-telegram-bot/
Канал в Telegram, в который публикуется информация о разработке: https://t.me/gitlab_notification
⚠️На данный момент вся разработка ведется в моем Gitea: https://git.struchkov.dev/Telegram-Bots/gitlab-notification GitHub остается для удобства пользователей проекта, чтобы иметь возможность давать обратную связь по багам и предложениям.
⚠️Идет активная подготовка к выпуску версии 2.0.0, в котором будут исправлены все существующие баги, а также добавлена поддержка уведомлений Issue. На данный момент лучше использовать тег develop, вместо latest.
Основные возможности
- Уведомление о новых Merge Request.
- Уведомление о возникновении конфликта в MergeRequest.
- Уведомление о появлении нового проекта.
- Уведомление о смене статуса вашего MergeRequest.
- Уведомление о комментариях, в которых вас упоминают в формате @nickname.
- Уведомит о новом комментарии-треде в вашем MR.
- Уведомит о закрытии вашего треда в чужом MR.
- Уведомление о результате сборки.
Как запустить
- Для начала нужно создать бота, который будет посылать вам уведомления. Делается это в специальном боте
- После создания вы получите токен, сохраните его. Пример:
34534050345:FlfrleflerferfRE-ergerFLREF9ERF-NGjM
- Теперь необходимо получить персональный токен в вашем gitlab. Достаточно токена на чтение.
- Можно приступать к запуску используя один из способов ниже.
Переменные среды
TELEGRAM_BOT_TOKEN
-- токен, который вы получили при создание бота.TELEGRAM_BOT_USERNAME
-- название, которое вы дали боту. Пример my_gitlab_bot.GITLAB_PERSONAL_TOKEN
-- ваш персональный токен из GitLab.TELEGRAM_PERSON_ID
-- ваш id в телеграм, можно узнать у этого ботаGITLAB_URL
-- можно указать https://gitlab.com или url на ваш локальный/корпоративный GitLab строго в таком формате http://localhost:7990.DATASOURCE_URL
-- ссылка на базу данных Postgres, в следующем формате: jdbc:postgresql://localhost:5432/gitlab_botDATASOURCE_USERNAME
-- пользовать базы данныхDATASOURCE_PASSWORD
-- пароль пользователя базы данных
Запуск
Есть несколько способов запуска. Для удобства я собрал проект в Docker образ, а также подготовил Docker Compose.
Docker
Подойдет, если вы не хотите поднимать отдельный контейнер с базой данных
sudo docker run --name gitlab-notify \
--env TELEGRAM_BOT_TOKEN=value \
--env TELEGRAM_BOT_USERNAME=value \
--env GITLAB_PERSONAL_TOKEN=value \
--env TELEGRAM_PERSON_ID=value \
--env GITLAB_URL=value \
--env DATASOURCE_URL=jdbc:postgresql://localhost:5432/gitlab_bot \
--env DATASOURCE_USERNAME=postgres \
--env DATASOURCE_PASSWORD=value \
--network="host" upagge/gitlab-telegram-notify:latest
Docker Compose
Самый простой способ запуска.
docker-compose.yml
version: '3.8'
services:
gitlab-bot-database:
image: postgres:15.1-alpine
restart: always
hostname: gitlab-bot-database
container_name: gitlab-bot-database
networks:
gitlab-bot:
environment:
POSTGRES_DB: "gitlab_bot"
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: ${DATASOURCE_PASSWORD}
volumes:
- gitlab-bot-database:/var/lib/postgresql/data/
gitlab-bot:
image: upagge/gitlab-telegram-notify:latest
hostname: gitlab-bot
container_name: gitlab-bot
privileged: true
networks:
gitlab-bot:
depends_on:
- gitlab-bot-database
environment:
TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
TELEGRAM_BOT_USERNAME: ${TELEGRAM_BOT_USERNAME}
GITLAB_PERSONAL_TOKEN: ${GITLAB_PERSONAL_TOKEN}
TELEGRAM_PERSON_ID: ${TELEGRAM_PERSON_ID}
GITLAB_URL: ${GITLAB_URL}
DATASOURCE_URL: "jdbc:postgresql://gitlab-bot-database:5432/gitlab_bot"
DATASOURCE_USERNAME: ${DATASOURCE_USERNAME}
DATASOURCE_PASSWORD: ${DATASOURCE_PASSWORD}
volumes:
gitlab-bot-database:
networks:
gitlab-bot:
.env
TELEGRAM_BOT_TOKEN=
TELEGRAM_BOT_USERNAME=
GITLAB_PERSONAL_TOKEN=
TELEGRAM_PERSON_ID=
GITLAB_URL=
DATASOURCE_USERNAME=
DATASOURCE_PASSWORD=
После запуска необходимо отправить боту сообщение, чтобы пройти первичную настройку.