The CI Chain Reaction That Builds Flickr Downloadr
Update (6/11/2015) - Due to the recent news about malware on installers downloaded from SourceForge, I have decided to stay completely away from it. This is the reason for the move to GitHub releases for archiving the releases.
As written on the last entry in this blog, I finally got to write something on points 1) and 2) there - the CI (continuous integration) builds that are running in parallel on AppVeyor, Travis CI and Wercker and the multi-platform installers they create and publish to the website. I wrote this up as documentation on the main GitHub repository but decided to cross-post here on the blog too.
Automated Build Process
Every commit to the master
branch on the source code repository kicks off CI builds (that builds and runs all the unit tests) in three different CI services:
Any commit that has the string [deploy]
in the commit message will also build the installers for all three supported platforms, using BitRock InstallBuilder.
The installers will be committed separately from the CI builds to a new branch named deploy-v<VERSION>
(as an example, for the versionv1.0.2.1
, the new branch will be deploy-v1.0.2.1
) on the flickr-downloadr/flickr-downloadr.github.io
repository.
A custom webhook on the flickr-downloadr/flickr-downloadr.github.io
repo that runs on Heroku ensures that installers for all three platforms have been built successfully and then makes a commit with the name of the new branch, updated into the branch
file on the flickr-downloadr/releases
repository (deploy-v1.0.2.1
, in the example above) and sends an email a deployment will be ready to be pushed to the website soon [see here].
In the event that any of the CI builds fail to create the installer, after at least one installer gets successfully built and committed, the custom webhook waits for 30 minutes from the first installer getting committed and sends an email notifying of a build failure [see here].
Yet another webhook on the flickr-downloadr/releases
repo kicks off another build on Wercker to merge the new branch with all three installers (deploy-v1.0.2.1
branch) into the source
branch on flickr-downloadr/flickr-downloadr.github.io
to make it ready for push into the master
branch that runs the main website. This CI job does a few other things like archiving this version to SourceForgeGitHub releases etc., as can be seen here.
The final push to the website is manual and can be done by running grunt deploy
on the latest, merged version of the source
branch and this will make the latest version installers current on the website.