Continuous Integration Kit
CIKit - Ansible-based system for deploying development environments or clusters of them. With this tool everyone is able to create virtual machine (based on Vagrant using VirtualBox provider) for particular team member, matrix of continuous integration servers or single CI server for project(s).
Currently based on Ubuntu 16.04 LTS (64 bit).
██████╗ ██╗ ██╗ ██╗ ██╗ ████████╗ ██╔════╝ ██║ ██║ ██╔╝ ██║ ╚══██╔══╝ ██║ ██║ █████╔╝ ██║ ██║ ██║ ██║ ██╔═██╗ ██║ ██║ ╚██████╗ ██║ ██║ ██╗ ██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
- Create matrix of virtual servers (droplets).
- Automated builds for each commit in a pull request on GitHub (private repositories are supported).
- Multi CMS/CMF support (
WordPressat the moment). To introduce a new one, you just have to add pre-configurations to
cmf/<NAME>/<MAJOR_VERSION>and make sure that system is downloadable as an archive.
- Opportunity to keep multiple projects on the same CI server.
- Triggering builds via comments in pull requests.
- Applying sniffers to control code quality.
- Possibility to choose software versions.
- Midnight server cleaning :)
Global project documentation available here.
All communications are available in our Slack account at https://cikit.slack.com
Get the CIKit.
git clone --recursive https://github.com/BR0kEN-/cikit.git cd cikit
Create CIKit-based project.
./cikit repository --project=<NAME> [--cmf=drupal|wordpress] [--version=7.54|8.3.x-dev|4.7.5] [--without-sources] git init git add . git commit -m 'Init of CIKit project'
--without-sourcesoption for project creation task affects CMF sources downloading. Use it if you want to create an empty project (CIKit-structured package with empty
docrootdirectory, where you have to store the source code of Drupal/WordPress/whatever).
Build virtual machine for local development.
vagrant up --provision
Build website inside of ready VM (will be accessible at
vagrant ssh cikit reinstall
Add your host credentials to the inventory file (not needed to continue without remote CI server).
Provision remote CI server.
cd <NAME> ./cikit .cikit/provision --limit=<HOST>
Last two steps are not mandatory. You can omit them and use CIKit as local environment for development.
Provision - is an operation that configure CI server or virtual machine and install necessary software there to convert it to unit for development.
Initially (at the very first time) you are required to run full provisioning to build the environment correctly. After that you may decide to reinstall or reset configuration of some part of it. This is feasible thanks to separation of the provisioning.
Get the list of components to provision:
./cikit .cikit/provision --list-tags
Run provisioning of specific component (CI server):
ANSIBLE_ARGS="--tags=COMPONENT" ./cikit .cikit/provision
Run provisioning of specific component (virtual machine):
ANSIBLE_ARGS="--tags=COMPONENT" vagrant provision
The power of
Run with custom inventory file:
Run with custom set of arguments:
cikit - is a global utility (only inside of VM) 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.
You should have the following software on your host machine: