Документация

Задача

Разработайте приложение, помогающие решать задачи для аналитики результатов запуска задач в рамках окружения непрерывной интеграции, continuous integration, CI.

Допустим, что в рамках CI у нас выполняется набор задач. Каждая задача описывается названием, параметрами запуска и набором шагов, которые выполняются.

Выполненные запуски задач отличаются друг от друга значением параметров, списком выполненых шагов. Параметры можно описать как пары строк ключ-значение.

Для каждого выполненого шага известна следующая информация:

  • Название шага.
  • Время выполнения шага.
  • Текст, содержащий вывод задачи.
  • Свойство, описывающее результат: успех, провал, ошибка.

Подзадача №1

Создайте Entity Relation (ER) диаграмму, описывающую схему базы данных, позволяющую оперировать данными, указанными выше. Для описания ER-диаграммы можно использовать либо текстовую нотацию, либо графическую. В качестве инструмента для формирования диаграммы можно воспользоваться:

Подзадача №2

Сформируйте набор миграций, который будет создавать таблицы в базе данных. На каждую таблицу должна приходиться 1 миграция.

Примените миграции для базы данных sqlite. Для этого вам потребуется установить следующие джемы:

Для решения можно либо написать скрипты, либо воспользоваться специализированной подсистемой. Описание подсистемы миграций доступна по ссылке sequel migration.

Установка sqlite3 под Windows

  1. Запустите консоль mingw64, которая находится в каталоге с интерпретатором Ruby (обычно C:\ruby-2.6.5).
    • Откройте каталог с установкой Ruby.
    • Перейдите в подкаталог msys64.
    • Запустите приложение mingw64.
  2. Получите ссылку на последний выпуск SQLite3
    • Откройте сайт https://www.sqlite.org/download.html
    • Скопируйте ссылку на последний выпуск. Необходимо скопировать ссылку на файл с расширением .tar.gz.
  3. Получите исходные коды
    • В консоли mingw64 введите команду wget --no-certificate-check URL. Вместо URL введите полученный на предыдущем шаге URL.
    • У вас должен скачаться файл вида sqlite-snapshot-11111111111-.tar.gz. Используйте команду ls для просмотра содержимого директории.
    • Распакуйте данный файл с помощью команды tar xf FILE. Вместо FILE укажите путь к скачанному файлу.
    • После распаковки у вас должен появиться каталог. Перейдите в него с помощью команды cd DIRECTORY.
  4. Скомпилируйте и установите sqlite

    ./configure
    make
    make install
    
  5. Закройте консоль msys64.
  6. Установите джем sqlite3.

Подзадача №3

Сформируйте класс, предоставляющий методы для взаимодействия с базой данных. Данный класс должен предоставлять методы:

  • Для наполнения каждой из таблиц случайными данными. Необходимо добавить как минимум по 500 записей в таблицы-листья и по 20 записей в центральные таблицы.
  • Для наполнения тестовыми данными всех таблиц. Метод должен выполнять добавление информации только если все таблицы пустые.

Выполните код данных методов, проверьте состояние базы путём выполнения запросов и с помощью инструмента SQLiteBrowser.

Подзадача №4

Добавьте в созданный на этапе №3 классу методы, которые позволят решать следующие задачи:

  • Добавлять новую задачу.
  • Добавлять информацию о конкретном запуске задачи.
  • Для заданного запуска задачи находить: завершился ли он успешно или с ошибками. С помощью данного запроса отобразите сводную таблицу для всех запусков конкретной задачи.
  • Для заданного запуска задачи находить общее время его работы. Расширьте вывод таблицы, добавив туда общее время работы.
  • Для данной задачи иметь возможность вывести следующую таблицу по каждому из запусков. Для каждого запуска должна быть возможность указать:
    • Названия параметров для вывода. В выводе пользователю должно быть понятно какому параметру соответствует какое значение.
    • Названия шагов для вывода. В выводе шага надо указывать успешно или с ошибкой он завершился.
  • Расширьте вариант предыдущего запроса. Для вывода не показывать такие шаги, которые для всех запусков завершились с успехом.