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- токен от гитхаба, обязательно право на repoNEW_ISSUES_REPORTER_TASK_DELAY- время между проверками новых issue, в секундахTIME_WINDOW_TO_NOTIFY- насколько старым по дате создания может быть issue, чтобы о нем уведомить, в сеекундахTELEGRAM_BOT_TOKEN- токен от бота в телеграмTELEGRAM_CHAT_ID- chat id для отправки сообщенийAPP_IS_PRODUCTION- false включает показ sql запросов в консоли
Так же пытался в этом проекте сделать aot компиляцию, чтобы на продакшн сервере это все занимало меньше памяти. У меня уже был опыт, где я делал вполне успешную aot компиляцию для телеграм бота на джава.
Использовал graalVM. Что делал:
- Настроил, что при профиле native maven собирает бинарник. Для этого в мавен добавлены соответствующие плагины.
Хочу заметить, что для aot важен параметр
-march=x86-64-v2(В моем случае), так как у меня на сервере некро проц, который не поддерживает некоторые инструкции. - Проблема, как всегда, объявилась в использовании reflection api. Она в принципе решается сбором метадаты. Для этого
нужно запустить приложение с агентом, который эту метадату и соберет. Для этого нужно добавить к java vm параметр:
-agentlib:native-image-agent=config-merge-dir="ВАШ ПУТЬ далее/github-project-reporter/src/main/resources/META-INF/native-image". К сожалению в этом случае это мне не помогло, а виновником стал хибер. Не особо вникал в тему, но в общем он генерит в рантайме код через библиотеку bytebuddy.
Вывод: не использовать хибернейт 🙂. Ну или найти все-таки способ, я искал и у меня не получилось. Может это повод попробовать jooq? 🤨