
AuTA
AuTA is your Automatic TA: it analyzes, grades and gives feedback on programming projects.
It is suitable for both small, single-file submissions and large-scale software systems like AuTA itself. Supported languages include Java, C, C++, Python and even x86-64 assembly. The supported metrics range from simple file counts to complex metrics like the Maintainability Index. Feedback is entirely customizable and for complete control over how the submission is processed, there is also support for running Docker images.
Runtime requirements
Core
AuTA's core requires a Java 11 runtime and MongoDB running on localhost.
Furthermore, the path /srv/auta
must be readable and writable by the user AuTA runs as.
Worker
Like the core, the worker requires a Java 11 runtime.
Optionally Graphviz can be installed to enable UML generation.
Usage
Core
Jar
Start the core as follows:
java -jar core.jar
Docker
docker run f00f/auta-core
The following environment variables can be passed:
Environment variable | Description | Required |
---|---|---|
JAVA_ARGS | Arbitrary command line arguments to pass to the Java process | no |
AUTA_ARGS | Arbitrary command line arguments to pass to the AuTA process | no |
The server allows for set-up using username admin
and password admin
. Configure the server
as needed and restart the process.
Worker
Workers can be started with the worker jar or the worker docker image:
Jar:
java -jar worker.jar name=$NAME host=$HOST api-token=$APITOKEN api-protocol=$PROTOCOL api-port=$PORT
A table of arguments and their description:
Argument | Description | Required | Default |
---|---|---|---|
api-token | Worker API token | yes | - |
name | The name of this worker | no | Generated |
host | The host on which to reach the core | no | localhost |
api-protocol | Protocol to use for the API (http/https) | no | https |
api-port | The api port | no | |
docker-api | The URI to the Docker API | no | unix:///var/run/docker.sock |
Docker:
docker run -e {environment variables} f00f/auta-worker
As opposed to running the worker with the jar, all regular environment variables are mandatory.
A table of environment variables that can be passed to the container:
Environment variable | Description | Required |
---|---|---|
COREADDRESS | Address to reach the core on | yes |
APIKEY | Worker API token | yes |
APIPORT | Port to reach the API on | yes |
APIPROTOCOL | Protocol to use for the API (http/https) | yes |
JAVA_ARGS | Arbitrary command line arguments to pass to the Java process | no |
AUTA_ARGS | Arbitrary command line arguments to pass to the AuTA process | no |
Devops
AuTA can be integrated in GitLab's Auto DevOps using Trampoline.