Created: 2017-09-16 11:37
Updated: 2019-03-06 07:45
License: gpl-3.0

License: GPL v3 CircleCI Dependencies Status

Built with Spacemacs Join the chat at

Bob the Builder

This is what CI/CD should've been.

Why Bob

🚧 This is a proof of concept and isn't fully functional yet. 🚧

Build requirements

  • Any OS supporting Java and Docker
  • JDK 8+ (latest preferred for optimal performance)
  • Boot 2.7+

Running requirements

  • Any OS supporting Java and Docker
  • JRE 8+ (latest preferred for optimal performance)
  • Docker (latest preferred for optimal performance)

Testing, building and running

  • Clone this repository.
  • Install the Build requirements.
  • Following steps need Docker:
    • Run boot kaocha to run tests.
    • Run boot build to get the standalone JAR.
    • Run java -jar ./target/bob-standalone.jar to start the server on port 7777.

Running Bob in Docker

Bob uses Docker as its engine to execute builds, but its now possible to run Bob himself inside Docker using dind.

To use the latest pre-built image:

  • docker pull bobcd/bob:latest

To build locally, in the root of this repo, run:

  • docker build -t bobcd/bob:latest .

Then run the container:

  • docker run --rm -it -p 7777:7777 --privileged bobcd/bob:latest

Bob will be up on the forwarded host port 7777 and can run normally. The --privileged flag is crucial as Bob uses system calls that are not usually allowed on Docker.

Running integration tests:

Docker needs to be installed for this

In the integration-tests dir, run:

docker-compose up --abort-on-container-exit integration-test

For Cursive users:

This project is built using the Boot build tool which is unsupported on Cursive at the moment.

To get it running on Cursive using leiningen:

  • Install Boot 2.7+.
  • Install Leiningen 2.8+.
  • Run boot -d onetom/boot-lein-generate generate to generate a project.clj.
  • Open up this directory in Cursive and it should work.
  • Happy development!

Extensive Usage + API docs

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more