Данный репозиторий содержит исходный код песочницы, используемой в целях автоматической проверки программ студентов.
Убедитесь, что запущен образ сервера RabbitMQ. Создать его можно с помощью команды
docker run -d --hostname my-rabbit --name my-rabbit -p 8088:15672 -p 5672:5672 --net=mynet rabbitmq:management
Запуск сервера
docker start my-rabbit
Первы делом необходимо задать переменные окружения в файле .env в корневой папке проекта. Список параметров окружения приведен в таблице ниже:
Переменная | Описание |
---|---|
DOCKER_NETWORK | Наименование сети в docker. Тип: строка |
CODE_STORAGE_PATH | Путь к хранилищу решений на хосте. Тип: строка |
LANG_CONFIG_FILE_PATH | Путь к файлу конфигурации компиляторов на хосте. Тип: строка |
TASK_QUEUE | Наименование очереди решений в RabbitMQ. Тип: строка |
SUPPORT_QUEUE | Наименование очереди поддержки в RabbitMQ. Тип: строка |
QUEUE_EXCHANGE | Наименование exchange в RabbitMQ. Тип: строка |
RESULT_QUEUE | Наименование очереди результатов в RabbitMQ. Тип: строка |
AMQPS_SCHEME | AMQP/AMQPS URL в RabbitMQ. Тип: строка |
DOCKER_AMQPS_SCHEME | AMQP/AMQPS URL в RabbitMQ в контейнере. Тип: строка |
DOCKER_NETWORK_ID | ID сети DOCKER_NETWORK в docker. Тип: строка |
TARGET_FILE_STORAGE_PATH | Путь к хранилищу решений в контейнере. Тип: строка |
RABBIT_HOST_NAME | Наименование хоста контейнера RabbitMQ. Тип: строка |
TASK_STORAGE_URL | URL хранилища тасков, где taskID есть $taskID. Тип: строка |
DOCKER_URL_OF_TASK_STORAGE | URL хранилища тасков, где taskID есть $taskID для контейнера. На not-Linux машинах для доступа к localhost хоста необходимо прописывать как docker.host.internal. Тип: строка |
IS_CONTAINER_STARTED | true или false. По умолчанию false. Тип: строка |
Для работы программы необходимо построить образы для каждого из языков программирования. Опишите свои языки в массивах "Images" файлов "prepare-images.sh" и "config.go". В случае необходимости для поддержки новых языков программирования добавьте свои файлы Dockerfile в соответствующую папку по образцу.
Команда запуска скрипта
./prepare-images.sh
В случае возникновения ошибки "Permission denied" сперва выполните команду
sudo chmod +x prepare-images.sh
Описание кодов возврата программы
Код возрата | Описание |
---|---|
524 | Timeout expired. Сработка ограничения по времени |
137 | Memory expired. Сработка ограничения по времени |
200 | Success. Успешный запуск решения и прохождение всех тестов |
409 | Conflict. Успешный запуск решения. Провален один из тестов |
-1 | Compilation error/Runtime error. Ошибка компиляции или запуска решения |
1 | Ошибка работы системы. Сообщение отправлено в очередь поддержки |