The course works on top of a number of services and tools. What follows is a short description of the infrastructure.
The infrastructure of the Clojure course. Steps 1-4 are done by the student and steps 5-6 are automatically handled by us.
The life of a submission
It all starts when someone makes a fork of a chapter’s repository in Github. They then clone the fork and what they get is a Leiningen project with a test suite and a source file full of function stubs. When the stubs are filled and the test suite passes, it’s time to make a pull request.
We have enabled the Travis hook in our chapter repositories. This means that Travis is notified of every new pull request. Travis will run the test suite against the submission with a test runner that outputs the scores in JSON, based on meta data on the tests. Travis then calls a webhook on our scoreboard server.
Along with the writen material, Github also hosts the project repositories for every chapter. Anyone can fork a repository and start working on the exercises with just Leiningen installed.
Leiningen is the project manager for Clojure. It handles dependencies, runs test and even installs Clojure for you.
Travis is a continuous integration tool as a service. Submissions to the exercises are made as pull requests between the chapters repository and the submitters fork. Travis is responsible for running the test suite of the project for every such pull request.
Heroku is a cloud application platform, a hosting service for web applications. Our scoreboard server is currently deployed to Heroku.