Automated quiz and code grader.
To run dredd
, you can do the following:
$ python3 dredd --logging=debug
This will start the dredd server with debug level logging.
Internally, dredd
uses docker to execute submitted code in an isolated
container. The precise docker image is defined in the scripts/sandbox.sh
script (ie. IMAGE
).
Provided in this repository are two Dockerfiles
:
-
Dockerfile.submit
: This provides an example of a simple docker container that can be used to submit quizzes and code todredd
. -
Dockerfile.code
: This provides an example of a simple docker container that will be used to execute code in isolation. As such, it should contain the interpreters and compilers required bydredd
and thescripts/run.py
script.
Build:
$ docker build -t pbui/dredd:20170814 - < Dockerfile.submit # GitLab CI
$ docker build -t pbui/dredd-code:20170825 - < Dockerfile.code # Code run.py
Push:
$ docker push pbui/dredd:20170814
$ docker push pbui/dredd-code:20170825
To add support for a programming language, you must do the following:
-
Update
Dockerfile.code
to include the interpreter or compiler. -
Update
scripts/run.py
to include a rule for the programming language. For instance, to supportC
andPython
, you need to specify the following:Language('C', # Language 'gcc -std=gnu99 -o {executable} {source} -lm', # Compilation './{executable}', # Execution ('.c',) # Extension ), Language('Python', # Language '', # Compilation 'python3 {source}', # Execution ('.py',) # Extension
-
Update
tests/test_code_echo.sh
to include a simple echo test for that language (ie. the program reads in the input and echos it back).