Simple CI
The simplest pseudo-Continuous Integration tool I could conceive
This does not have a web UI This does not have error reporting This does not require docker
This is just a script which is intended to be run by cron, or some other mechanism, and it will just check a git repository, update if there's a change, and then run a command within this directory.
This can be a deployment command (making this a CD, not CI) or it can be kicking off a test suite, or it can be whatever you want.
The reason
I have a small VPS, I wanted it to deploy a static site when I pushed a change to a live branch. I could have used a post-receive hook on the server, but the repository is currently within a docker container, something I intend to change at some point. I am sure I could change it, but I just wanted a solution. I couldn't find anything that just did the bare minimum I wanted without bells and whistles, so I wrote one.
Configuration
Within simpleci.sh there are two variables:
* JOB_DIR
- sets the location for jobs
* WORKSPACE_DIR
- sets the location that simpleci will use for local
copies
These default to being 'jobs' and 'workspaces' within the simpleci directory, but can be changed.
Jobs
Jobs are names of projects which can be run. These are stored within
JOB_DIR
. These are a simple file with up to three pieces of
information:
* REPO
- the repository to monitor
* BRANCH
- the branch to monitor [live]
* COMMAND
- the command to run within the directory [make publish]
Running
It is possible to run simpleci manually
/path/to/simpleci.sh
- this will check for any updates in any of the
jobs, and run them where required
/path/to/simpleci.sh JOB1 [JOB1 [JOB3 ..]].
- this will force-run
specific jobs, regardless if there is an update or not.
The job names are the filenames within JOB_DIR
.
eg
/path/to/simpleci.sh example
It is also possible to add to cron to run it periodically.
eg
*/30 * * * * /path/to/simpleci.sh >> /path/to/simpleci.log 2>&1