Skip to content

sprucedev/DockCI

Repository files navigation

Build StatusRequirements Status![Tickets in Release](https://badge.waffle.io/rickycook/dockci.svg?label=ready&title=This Release)

DockCI Core

DockCI is still alpha! It's certainly not feature complete. It's heading towards MVP.

What is DockCI?

DockCI aims to be one of the missing links in a full Docker CI/CD pipeline. Currently, most people are testing and deploying containers via build tools like Jenkins and Bamboo, but these tools were not made for your containerized new world. The idea of build agents with all your build tools is outdated, the idea of build steps in your CI config is outdated!

Builds are getting more and more complex, and the old way of approaching CI is not keeping up. This is what DockCI aims to solve. DockCI's goals are:

  1. Configured only via project git repo
  2. Minimal custom CI interface
  3. Allow effortless, on-demand provisioning of dependant services

Lofty goals! Some might say. But, the tools are already out there. All DockCI does is pull together some ideas and technologies to help us out.

Sounds great, right? And it will be! But it's not ready yet! Soooooo read on ;D

Requirements

  • Docker 1.6.0 (others may work)
  • Python 3.4 (may work with 3.x, but untested)
  • PostgreSQL
  • Redis
  • RabbitMQ

Setup

Registry steps are optional. If you do not want to use a registry at all, you may disable registry support in the config page when DockCI is running.

  1. Install git
  2. Install the Docker Toolbox
  3. Create a new Docker machine (or reuse an existing one): docker-machine create default
    • For insecure private registry support, add --engine-insecure-registry http://localhost:5000
    • For VMWare Fusion, add --driver vmwarefusion
    • The full command for OSX is: docker-machine create --driver vmwarefusion --engine-insecure-registry http://localhost:5000 default
  4. Source the new machine configuration: eval "$(docker-machine env default)"
  5. Clone the DockCI repo: git clone https://github.com/sprucedev/DockCI.git
  6. Change directory to the DockCI directory, and use compose to bring up the stack: docker-compose up
  7. You can get the URL to your new installation with: echo http://$(docker-machine ip default):5001
  8. You can reset all your data at any time with: docker-compose rm

Notes for non-dev setups

  • You can specify a Postgresql database with the DOCKCI_DB_URI environment variable
  • You can specify a Redis host with the REDIS_PORT_6379_ADDR environment variable
  • You can specify a RabbitMQ host with the RABBITMQ_PORT_5672_TCP_ADDR environment variable
  • You can specify a RabbitMQ user/password for the front end (public), and back end (private) with the RABBITMQ_ENV_FRONTEND_USER, RABBITMQ_ENV_FRONTEND_PASSWORD, RABBITMQ_ENV_BACKEND_USER and RABBITMQ_ENV_FRONTEND_PASSWORD environment variables (the default for all is guest)
  • The manage.py script is used to execute commands on the DockCI install
  • Example full run command: DOCKCI_DB_URI=postgres://dockciuser:dockcipass@localhost:5432/dbname ./manage.py run --db-migrate --timeout 15 --bind 0.0.0.0:5000

Contributing

If you want to help DockCI see the light of day, pull requests are certainly accepted! You can probably find something that you can work on in the GitHub issues. There's also a waffle.io project board with issues ranked (approximately) highest to lowest priority. Just choose something that isn't already labeled as in progress, or already has someone assigned to it (here's a filter).

The main code base is also really hastily written, so anything that you'd like to refactor, got nuts! It really needs to be done!

All pull requests must completely pass PEP8 and 10/10 with the pylint config given. You can check this with make test (that's what Travis does too). No green CI, no merge!

Make sure you update the CHANGELOG.md with any changes you make, including the pull request number so that we can easily track changes between versions. You'll obviously need to create the pull request, then update the changelog to add the PR number.

If you want to have a talk about ideas, project priorities, etc feel free to drop me an email at mail[at]thatpanda.com.

Useful issues filters