Android CI & CD with GitLab, Docker and HockeyApp


Recently IBM took over the mobile applications for one of the largest supermarket chains in Netherlands and I was assigned to the Android application which was created in 2013, a lifetime ago given the pace Android ecosystem been evolving.

Thanks to recent advancements in the development tools like Instant run, IntelliJ-based IDE, SSDs and the x86 emulators, development is much less painful than 5 years ago, but this project was missing a few important things like unit tests, automated tests (mocked & e2e), coding standard checking, code quality analyser and continuous deployment.

This list is a bit of a mouthful, so in this step, I’ll only look at the CI & CD part. while I’ve implemented this many times in other disciplines, I’ve never done this before in Android land. So I decided to blog about it to keep me motivated and to hopefully get some feedback from other developers.

1. Continuous integration with GitLab CI.
2. Build android apk in Docker.
3. Deploy to HockeyApp.
Continue reading

Automated regression testing of JIRA stories



When a story is ‘done’ and ‘on the bus’, it’s expected to stay that way until go live. When working in a large team that share a code base, it’s common to break each others stuff.

Automated regression testing has long existed in most applications but for many web sites because it’s impossible to write tests to verify if a website was being displayed correctly. Today opensource tools like Wraith, Huxley, PhantomCSS, PhotoBox etc solve this issue using screencapture comparison techneques.

What will this post help me do?

Automate website regression testing for agile teams that use JIRA. This will prevent you from committing code that can undo previously completed stories.

JIRA stories are used to add test URLs. Every team member can view them which help increase test coverage.

Continue reading

How to start a new web project


Web development has long been an ad hoc process and the trend has been to clone or download various libraries/frameworks into folders depending on your programming background and never touch them again. Most don’t minify, lint or combine js/css file for the sake of readability and maintainability. Thanks to new developments in web technologies this doesn’t have to be a Friday night argument at the pub along with where to place the opening brackets and how many spaces/tabs should be used for indenting.
Continue reading