robinmessage / pottery-backend

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pottery-backend provides an API for testing submissions to programming exercises. Internally it uses git repositories to store tasks and code submissions which are tested within docker containers.

It is currently under development and so you should expect things to be broken and for API changes to occur.

Building instructions

Build with maven. Most dependencies are available directly from maven central and so will be pulled automatically.

Development dependencies

Some dependencies are not in maven central and so should be built locally and installed into your local maven repository.

For each of the above you need to:

git clone [repository-url]
cd [project-name]
mvn clean compile package install

Compiling pottery-backend

cd [project-name]
mvn clean compile package

This will produce a WAR file in /target

Installation

Docker

You should install docker, and make sure that its listening on the port 2357. At the moment pottery requires only one image exists, this should be called 'template:java'. Create it with something like:

docker run -i -t ubuntu:16.04
apt-get update
apt-get upgrade -u
apt-get install software-properties-common
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer git maven vnc4server sudo
apt-get clean
[exit]
docker ps -a
docker commit [containername] template:java
docker rm [containername]

Postgres

You need a postgres user called 'pottery' with password 'pottery' and a database called 'pottery'. Configure your server to allow TCP connections as this user to the 'pottery' database (from localhost only).

Create the schema in the database:

psql -U pottery -h localhost -f docs/pg_schema.sql

Tomcat

Pottery has been tested with tomcat 8. Copy the pottery WAR file into the webapps directory of your tomcat installation and restart.

Testing

pottery-backend comes with a simple text interface. This should be accessible at http://localhost:8080/pottery-backend/index.html or similar depending on your installation, replace 'pottery-backend' with whatever the name of the WAR file is that you used.

About

License:GNU Affero General Public License v3.0


Languages

Language:Java 89.7%Language:JavaScript 7.7%Language:HTML 2.1%Language:CSS 0.5%