There have been two new versions of TinyCI released since launch. 0.2.0 added hooks/callbacks, and 0.3.0 added a handy
compact script to compress old build directories.
In this post I’ll provide some details on the new functionality.
0.2.0 - hooks
This release adds hooks to TinyCI. These are just scripts that are called at various points in the execution sequence.
Let us quote the order of execution from the README:
* clean * export before_build * build after_build_success after_build_failure after_build before_test * test after_test_success after_test_failure after_test
* indicates an actual phase of TinyCI’s execution, the rest are hooks. We have
after_x for both the build and test phases.
As you might imagine, the
after hooks always fire, and the
failure hooks are called only under the relevant condition.
before hooks will halt processing of the commit if they fail (return an exit status > 0.) The other hooks will not stop execution.
Hooks are enabled by adding a section to
.tinyci.yml like so:
hooker: class: ScriptHooker config: before_test: ./before_test.sh
These hooks could be used for a variety of purposes, from simple ones like sending email or slack notifications on successful/failed testing of builds, to more complex uses like automated continuous deployment.
Some of these possibilities are explored in the newly updated tinyci-example project.
0.3.0 - the
Version 0.3.0 added the
tinyci compact command:
$ tinyci compact --help Usage: compact [options] -n, --num-builds-to-leave <NUM> number of builds to leave in place, starting from the most recent -b, --builds-to-leave <BUILDS> specific build directories to leave in place, comma-separated -q, --[no-]quiet quietly run
The compactor is a script that compresses old build directories into
.tar.gz files. “Old” is defined according to the options as described in the help there. For a full discussion, see the aforementioned example project.
Both of these features are in their infancy, and there are improvements to be made:
A fuller set of hooks could be added, although the ones currently provided should be enough to cover the majority of use cases.
Information about the execution should be passed to the hooks via environment variables. This is sort of an essential feature, especially for notification hooks, but some data can be obtained currently by parsing the log file.
The compactor should have more ways to specify which directories to compress, for example some kind of date filtering, or filtering based on build/test success.
The compactor should have the ability to delete builds without keeping a compressed copy.
Watch this space!