Continuous Integration Toolbox
Branch: master
Clone or download
Pull request Compare This branch is 170 commits ahead of gajdamaka:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmf
matrix
scripts
vagrant
.gitignore
.gitmodules
LICENSE
README.md
cibox
config.yml
inventory

README.md

Continuous Integration Box

CIBox - is Ansible based system for deployment environment for web application development. With this tool you able to deploy local web-server based on Vagrant and/or remote one.

The power of the system - simplicity. All provisioning is the same for local and remote machines, except logic for installing additional software on remote (Jenkins, for example), but it quite simple too (just when: not vagrant as condition for Ansible tasks).

Currently based on Ubuntu 14.04 LTS (64bit).

  ██████╗ ██╗     ██████╗   ██████╗  ██╗  ██╗
 ██╔════╝ ██║     ██╔══██╗ ██╔═══██╗ ╚██╗██╔╝
 ██║      ██║     ██████╔╝ ██║   ██║  ╚███╔╝
 ██║      ██║     ██╔══██╗ ██║   ██║  ██╔██╗
 ╚██████╗ ██║     ██████╔╝ ╚██████╔╝ ██╔╝ ██╗
  ╚═════╝ ╚═╝     ╚═════╝   ╚═════╝  ╚═╝  ╚═╝

Main possibilities

  • Create matrix of virtual servers (droplets).
  • Automated builds for every commit in a pull request on GitHub (private repositories supported).
  • Multi CMS/CMF support. To add support of a new one, you just need to put pre-configurations to cmf/<NAME>/<MAJOR_VERSION> and ensure that core files can be downloaded via Git.
  • Opportunity to keep multiple projects on the same CI server.
  • Triggering builds via comments in pull requests.
  • Midnight server cleaning :)

Quick Start

  • Add your host credentials to the inventory file.
  • ./cibox repository --project=<NAME> [--cmf=drupal] [--version=7.41] [--host=https://github.com] [--vendor=drupal]
  • ./cibox provision --project=<NAME> [--limit=<HOST>]

Examples

Drupal 7 (standard system):

./cibox repository --project=test

WordPress 4 (supported system):

./cibox repository --project=test --cmf=wordpress --version=4.3.1

WIKI

https://github.com/propeoplemd/cibox/wiki

TIP

Don't forget to setup all http://ci_hostname:8080/configure settings with CHANGE_ME placeholders to be able meet project requirements. Also you should change all CHANGE_ME for all Jenkins jobs.

Variations

Currently provision.yml playbook powered with tags, so you can run only part of it.

./cibox provision --tags=TAGNAME
  • php-stack
  • solr
  • jenkins
  • composer
  • pear
  • drush
  • xhprof
  • sniffers
  • apache
  • mysql
  • swap
  • ssl-config

For provisioning Vagrant you also able to specify tags:

ANSIBLE_ARGS="--tags=TAGNAME" vagrant provision

As you see, any set of arguments can be passed for ansible-playbook command.

The power of cibox utility

Run with custom inventory file:

ANSIBLE_INVENTORY="/path/to/inventory" ./cibox

Run with custom set of arguments:

ANSIBLE_ARGS="-vvvv" ./cibox

By default, cibox - is a global utility which looks for a project in /var/www/. But, if you specify a playbook outside of this directory, then working folder will be the path of this playbook.

Dependencies

On your host machine you should have the following software:

Name Version
Vagrant 1.7+
Ansible 2.0+
VirtualBox 4.0+