ALR-updater
Описание
Языки
- Go93,4%
- Shell3,3%
- Makefile1,9%
- HCL1,4%
ALR-Updater
Автоматизированный бот для проверки обновлений пакетов и их отправки в репозиторий alr-repo.
Описание
ALR-Updater — это модульный бот, предназначенный для автоматического отслеживания обновлений программного обеспечения и автоматического обновления пакетов в репозитории ALR. Система основана на плагинах написанных на языке Starlark, что обеспечивает гибкость и расширяемость.
Принцип работы
Бот использует систему плагинов для мониторинга различных источников обновлений:
- GitHub API — для отслеживания релизов проектов на GitHub
- API разработчиков — для проверки обновлений через официальные API
- Веб-хуки — для мгновенного получения уведомлений о новых версиях
- RSS/Atom ленты — для мониторинга блогов и сайтов проектов
Каждый плагин может:
- Запускаться по расписанию (например, каждый час или день)
- Обрабатывать входящие веб-хуки
- Использовать постоянное хранилище ключ-значение для отслеживания состояния
- Автоматически обновлять файлы
в репозиторииalr.sh
Примеры работы
Discord-bin: Плагин каждый час опрашивает API Discord для получения ссылки на последнюю версию. При обнаружении изменений он извлекает номер версии из URL и обновляет скрипт сборки.
NodeJS: Плагин отслеживает релизы на GitHub через API, проверяет доступность новых версий и автоматически обновляет зависимости и ссылки на исходный код.
Установка
Требования
- Go 1.20 или новее
- Git
- Доступ к репозиторию alr-repo
Сборка из исходного кода
Настройка
1. Конфигурационный файл
Создайте конфигурационный файл на основе примера:
Отредактируйте :
2. Генерация хеша пароля для веб-хуков
3. Создание директории для плагинов
Создание плагинов
Структура плагина
Плагины представляют собой файлы с кодом на языке Starlark. Пример базового плагина:
Плагин для GitHub пакетов
Плагин для Python пакетов
Логирование
ALR-Updater поддерживает логирование как в консоль (stderr), так и в файл с автоматической ротацией:
Настройка логирования в файл
В файле :
Особенности:
- При достижении максимального размера файл автоматически ротируется
- Старый файл сохраняется с временной меткой (например,
)alr-updater.log.20250125-143022 - Хранится до 5 резервных копий логов
- Логи пишутся одновременно в stderr и файл
Просмотр логов:
Запуск
Ручной запуск
Systemd сервис
Создайте файл :
Создайте пользователя и запустите сервис:
Docker
Настройка веб-хуков
GitHub веб-хуки
- Перейдите в настройки репозитория → Webhooks
- Добавьте новый веб-хук:
- URL: http://your-server:8080/webhook/github
- Content type: application/json
- Events: Releases
- URL:
- Добавьте секрет, соответствующий паролю в конфигурации
Обработка веб-хуков в плагине
Мониторинг и логирование
Просмотр логов
Уведомления в Telegram
Расширенные возможности
Переменные окружения
Вы можете использовать переменные окружения вместо файла конфигурации:
Тестирование плагинов
Troubleshooting
Частые проблемы
1. Ошибка аутентификации Git
Error: authentication required
Решение: Проверьте правильность токена доступа и имени пользователя в конфигурации.
2. Плагин не выполняется
Error executing starlark file
Решение: Проверьте синтаксис Starlark кода, включите отладочный режим ().
3. Не удается получить файл пакета
Error: no such file or directory
Решение: Убедитесь, что репозиторий успешно клонирован и пакет существует.
Отладка
Участие в разработке
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Создайте Pull Request
Структура проекта
ALR-updater/
├── main.go # Основной файл приложения
├── internal/
│ ├── builtins/ # Встроенные функции для Starlark
│ ├── config/ # Конфигурация
│ └── convert/ # Утилиты конвертации
├── alr-updater.example.toml # Пример конфигурации
└── README.md # Эта документация
Лицензия
Этот проект распространяется под лицензией GPL v3. См. файл LICENSE для подробностей.