Skip to content

Repository files navigation

2026-01-07.17-41-27.mp4

Что это

Простой репортер о новых issue в репозитории. Присылает уведомление в Telegram, если создан новый issue.

Планировалось использование в проектном практикуме.

Уведомление будет отправлено если:

  • у issue есть ответственные (исполнители)
  • у issue автор и ответственный не совпадают - смысла о таком уведомлять нет

Пример уведомления:

yakovlev05 создал задачу "github-project-reporter #3 Сборка на native image" и назначил ответственного - username

Запуск

Запуск локально:

docker compose up -d

файл docker-compose-prod.yaml используется для деплоя на прод.

Переменные окружения

Тут только описание тех переменных окружения, которые могут быть не понятны

  • GITHUB_TOKEN - токен от гитхаба, обязательно право на repo
  • NEW_ISSUES_REPORTER_TASK_DELAY - время между проверками новых issue, в секундах
  • TIME_WINDOW_TO_NOTIFY - насколько старым по дате создания может быть issue, чтобы о нем уведомить, в сеекундах
  • TELEGRAM_BOT_TOKEN - токен от бота в телеграм
  • TELEGRAM_CHAT_ID - chat id для отправки сообщений
  • APP_IS_PRODUCTION - false включает показ sql запросов в консоли

Native image 📝

Так же пытался в этом проекте сделать aot компиляцию, чтобы на продакшн сервере это все занимало меньше памяти. У меня уже был опыт, где я делал вполне успешную aot компиляцию для телеграм бота на джава.

Использовал graalVM. Что делал:

  1. Настроил, что при профиле native maven собирает бинарник. Для этого в мавен добавлены соответствующие плагины. Хочу заметить, что для aot важен параметр -march=x86-64-v2 (В моем случае), так как у меня на сервере некро проц, который не поддерживает некоторые инструкции.
  2. Проблема, как всегда, объявилась в использовании reflection api. Она в принципе решается сбором метадаты. Для этого нужно запустить приложение с агентом, который эту метадату и соберет. Для этого нужно добавить к java vm параметр: -agentlib:native-image-agent=config-merge-dir="ВАШ ПУТЬ далее/github-project-reporter/src/main/resources/META-INF/native-image". К сожалению в этом случае это мне не помогло, а виновником стал хибер. Не особо вникал в тему, но в общем он генерит в рантайме код через библиотеку bytebuddy.

Вывод: не использовать хибернейт 🙂. Ну или найти все-таки способ, я искал и у меня не получилось. Может это повод попробовать jooq? 🤨

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages