/bakhirev_assayo-crawler

Visualization and analysis of your git repository data.

Primary LanguageJavaScript

Визуализация и анализ данных вашего git-репозитория (демо).

В этом репозитории находится модуль для автоматического сбора и обьединения логов для списка репозиториев.

Общий алгоритм работы
  1. Ожидание триггера запуска (таймер, запрос, событие);
  2. Обход списка репозиториев;
  3. Получение лог файла для каждого репозитория;
  4. Обьединение логов в общие файлы;
  5. См. пункт 1;
Ресурсы необходимые приложению

В ходе работы скрипт загружает репозиторий для его обработки. Репозиторий может иметь большой вес.

  • Мы можем хранить эти репозитории между вызовами. Тогда мы будем расходывать много дискового пространства, но увеличим скорость обхода списка задач. Так же снизим сетевые расходы для получения изменений в репозитории.
  • Мы можем удалять репозиторий сразу после получения лога. Тогда мы снизим необходимый обьем жеского диска, но должны будем заново скачать весь репозиторий. Это увеличит время обработки списка и обьем сетевого трафика.

Общие настройки

Настройки могут быть получены сразу из нескольких источников. Приоритет выбора окончательного значения:

  1. Из внешнего источника;
  2. Из переменной окружения;
  3. Из локального файла;
Локальный файл в папке /configs/app.json
свойство тип значения значение по умолчание описание
loadConfigFromUrl JSON Нужно запросить настройки из внешнего источника?
loadConfigFromUrl.url string URL-адрес запроса.
loadConfigFromUrl.method string Метод запроса.
loadConfigFromUrl.headers JSON Заголовки запроса в виде json объекта.
loadConfigFromUrl.body any Тело запроса.
loadTasksFromUrl JSON Нужно запросить список задач из внешнего источника?
loadTasksFromUrl.url string URL-адрес запроса.
loadTasksFromUrl.method string Метод запроса.
loadTasksFromUrl.headers JSON Заголовки запроса в виде json объекта.
loadTasksFromUrl.body any Тело запроса.
output.folder string "logs" Папка, в которую будут складываться логи репозиториев после обработки.
output.needCreateAfterInit boleean true Нужно создать эту папку в момент инициализации приложения.
input.folder string "repositories" Папка, в которую будут загружаться репизитории указанные в списке задач.
input.needCreateAfterInit boleean true Нужно создать эту папку в момент инициализации приложения.
input.needClearAfterUse boleean false Нужно очищать эту папку каждый раз после завершения сбора логов.
Переменные окружения при запуске контейнера
свойство тип значения значение по умолчание описание
PORT number 3007 Порт запуска приложения.
LOAD_CONFIG_URL string URL-адрес для запроса для настроек приложения.
LOAD_CONFIG_METHOD string Метод запроса.
LOAD_CONFIG_HEADERS JSON like string Заголовки запроса в виде json объекта.
LOAD_CONFIG_BODY any Тело запроса.
LOAD_TASKS_URL string URL-адрес для запроса списка задач.
LOAD_TASKS_METHOD string Метод запроса.
LOAD_TASKS_HEADERS JSON like string Заголовки запроса в виде json объекта.
LOAD_TASKS_BODY any Тело запроса.
OUTPUT_FOLDER string "logs" Папка, в которую будут складываться логи репозиториев после обработки.
OUTPUT_NEED_CREATE_AFTER_INIT boleean true Нужно создать эту папку в момент инициализации приложения.
INPUT_FOLDER string "repositories" Папка, в которую будут загружаться репизитории указанные в списке задач.
INPUT_NEED_CREATE_AFTER_INIT boleean true Нужно создать эту папку в момент инициализации приложения.
INPUT_NEED_CLEAR_AFTER_USE boleean false Нужно очищать эту папку каждый раз после завершения сбора логов.

Настройки списка задач

Список задач может быть получен сразу из нескольких источников. Приоритет выбора окончательного значения:

  1. Из внешнего источника;
  2. Из локального файла;
Локальный файл в папке /configs/tasks.json
Свойство Тип значения Обязательный описание
code string да Уникальный индентификатор. Используется в качестве названия итогового файла.
folder string нет Дочерняя папка, в которую нужно поместить итоговый файл. По умолчанию файл помещается в папку указанную в общих настройках (output.folder)
repositories[] object[] да Список репозиториев для обработки.
repositories[].url string да URL-адрес для загрузки репозитория.
repositories[].folder string нет Дочерняя папка, в которую нужно поместить репозиторий.
repositories[].needClearAfterUse boleean нет Нужно очищать эту папку каждый раз после завершения сбора логов.

Пожелания, предложения, замечания