Взаимодействие с Jenkins

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

Использование инструмента Jenkins также облегчает работу с параллельным выполнением оценки этих критериев, так как управление параллельным выполнением задач занимается внутренняя система сборщиков.

В роли сервисов оценщиков выступали так называемые проекты (job) - сценарии процесса сборки. Для каждого существующего оценщика существует свой проект, который может быть запущен сервером оценки. Опишем общий сценарий каждого такого проекта:

  • · Принятие запроса на проверку;
  • · Скачивание файлов, необходимых для проверки;
  • · Проведение проверки;
  • · Запись результатов проверки в локальную папку «/grader_results»;
  • · Отправка обратного вызова с результатами проверки.

Перечисление всех такие проектов, их соответствие проверяемым критерием, а также более подробное описание их работы представлено в табл. 7.

Таблица 7 Соответствие проектов инструмента Jenkins и поддерживаемых критериев

Название проекта

Язык

Оцениваемый критерий

Описание работы

java-compile

Java 1.7

COMPILE

Исходные файлы работы студента, а также файлы проверки копируются в единую папку, имеющую структуру проекта Maven. Далее происходит компиляция проекта с помощью сборщика Maven путем выполнения стадии «compile». Затем результаты отправляются в сервер проверки.

java-unit-tests

Java 1.7

UNIT_TESTS

Скомпилированная программа и файлы проверки копируются в папку проекта, запускается скрипт на языке Groovy, осуществляющий запуск фреймворка юнит-тестирования. Затем результаты отправляются в сервер проверки.

java-run-console

Java 1.7

CONSOLE

Скомпилированная программа и файлы проверки копируются в папку проекта, запускается скрипт на языке Groovy, осуществляющий запуск программы с консольным вводом. Затем результаты отправляются в сервер проверки.

java-checkstyle

Java 1.7

CHECK_STYLE

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

python-unit-tests

Python 2.7.11

UNIT_TESTS

Исходные файлы работы студента, а также файлы проверки копируются в единую папку. Запускается файл исходного кода с точкой вызова фреймворка юнит-тестирования. Затем результаты отправляются в сервер проверки.

python-run-console

Python 2.7.11

CONSOLE

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

python-checkstyle

Python 2.7.11

CHECK_STYLE

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

Взаимодействие с инструментом Jenkins осуществляется с помощью REST интерфейса, что позволяет отправлять запросы автоматически. Каждый вызов сборки проекта (т.е. запуска оценщика) содержит следующие параметры:

  • · «student_files_url» - URL адрес для скачки файлов студента;
  • · «secret_files_url» - ссылка на файлы использующиеся для проверки;
  • · «callback_id» - уникальный идентификатор запроса;
  • · «callback_url» - адрес, по которому нужно отправить обратный вызов;
  • · «params» - параметры в формате JSON, специфичные для определенного оценщика.

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

В качестве языка программирования для скриптов был выбран язык программирования Groovy в связи с тем, что он является языком, выполняющимся с помощью Java Virtual Machine, что предоставляет спектр возможностей языка Java. Также в этот язык встроена поддержка использования инструмента Apache Ant, что является очень удобным при организации файлов для сборки. Приведем список используемых скриптов:

  • · copy-files.groovy - скрипт для осуществления копирования файлов из файлового хранилища в директорию текущего проекта;
  • · run-java-console.groovy - скрипт для запуска Java приложения через консольный ввод-вывод;
  • · run-java-unit-tests.groovy - скрипт для запуска юнит-тестов Java приложения;
  • · run-python-unit-tests.groovy - скрипт для запуска юнит-тестов Python приложения;
  • · run-python-console.groovy - скрипт для запуска Python приложения через консольный ввод вывод;
  • · send-callback.groovy - скрипт для отправки обратного вызова, содержащего результаты проверки.
 
< Пред   СОДЕРЖАНИЕ   Загрузить   След >