Hi, my name is Philip Woods, and I am here today to talk about Hannah.
First of all, what is Hannah?
To put it simply, Hannah provides Continuous Integration and Continuous Deployment.
It simplifies deploying a connected application, and it is simply simpler to use than other systems.
Let me show you how it works.
First, a developer pushes code to their remote repository.
This is all a person needs to do; Hannah handles the rest.
Next, the host (in this case Bitbucket) notifies Hannah, via webhook, that new code has been added to a repository.
Hannah then checks that said code is on a branch that Hannah is supposed to monitor.
If so, Hannah checks out the new code and runs any unit tests (or other commands its been configured to run).
Then, Hannah builds a Docker image of the app, ships it and finally runs it on every host it has been configured to support.
If any point in this process fails, Hannah immediately stops and writes an error message to a log file.
Developers can monitor the status of a deployment from their browsers.
Hannah requires that Docker and git are already installed.
After that you can execute the listed commands to complete the installation.
Finally, you need to add the generated SSH key to your Bitbucket account to ensure Hannah can access your project.
I have written a script to automatically create a deb package suitable for installing on Ubuntu 14.04.
Hannah reads the file /etc/hannahci.yaml for its configuration.
Here is an example config file that has one repository provider (i.e. Bitbucket), and one repository with two different branches – the first deploys to one host; the second deploys to two.
Each repository listed in the config file must have AT LEAST one branch listed under it.
The pre_commands variable details the commands to execute before trying to build a Docker image.
The hosts variable contains data on the hosts running the application.
NOTE: You can run an application on the same system as Hannah, but you still need to configure SSH.
After adding a repository to the config file, you must manually clone it by executing the listed command.
Hannah provides a script for configuring systems that will host your apps.
You execute the script on the machine Hannah was installed on.
It does require that the host’s SSH server allow key-based authentication.
Change always takes some time to get used to, but consider the possibilities!