1 Jun 20206 min read

Continuous Integration and Delivery

I remember a few years ago when I was just starting my career as an iOS developer it was a normal thing to build applications on a local machine. It was even funnier when tester needed to test new features or check for bug fixes - building and installing it through USB was the only way to provide an app for QA. It was really time-consuming, especially if the project was big enough that it could like good 10-20 minutes to build... machines weren’t that good either back then. The time was the least of the problem anyway, the riskiest thing was that each developer might have a different configuration (Xcode, macOS and other tools version) and depending on who built the app, it might have worked properly or not. I once had an issue that minor Xcode version caused a small bug and it was quite hard to find out what is the reason since for some developers it worked fine while for others it didn’t. That’s why making test and release builds from the controlled environment so important - so we can exactly know when and what caused the issue - it might be a tools version upgrade, some config changes, or simply a bug in the code.


Continuous Integration has become one of the essential tools we use on a daily basis.


Well known CI tools

There is plenty of Continuous Integration tools so it’s a tough decision to pick one that will suit your project the most. Most of them got paid plans with a trial available as well so you can give them a try before getting a plan. You are in a much better situation if you are looking for a CI for an open-source project since usually open source projects are often allowed to use CI for free with no time limit (or just enough for most projects).

Jenkins

It was the first CI I have been ever using and it did its job. Although it looks like it's getting outdated - there is a lot of plugins that are no longer being updated and there are just too many issues with it. There is Jenkins X under the work as far as I know but I am not sure if it will keep up with all other CIs that just offer a way more for Swift apps development. On the other hand, Jenkins can be hosted on our server so it might be a good option for people that are paranoid about their privacy.

Travis

Was (as I do not think it is anymore) quite popular for open source projects as it was easy to integrate it with a project hosted on GitHub. It still might be good for some small/medium open source projects that do not need much customization. Personally, I do not see any advantages besides that.

CircleCI

One of the best CI/CDs tools out there used by a lot of projects. I use CircleCI in some of my projects myself as well. It got pretty much everything you need and it's really hard to say anything negative about their service. It just for some reason doesn't feel like "the tool I want to use and never look back". The new website they introduced recently feels a little bit better but still seems clunky 😩

Bitrise

Bitrise has already been on the market for a while but to be honest, never tried it until recently. And I must say I like it. CircleCI might be more popular and might have more features but for sure Bitrise has the best community and the most important - their contribution to the open-source software. They help freelancers and contribute to the community. And just because of that I think it's worth giving them a try, it feels like a home 🏡. Also, I like their website, they are fast with updating Xcode (even beta versions) and it's really easy to start with which is convenient for beginners - just a few clicks needed to configure your first project to use Bitrise. It integrates with GitHub Pull Requests quite nicely as well.

GitLab CI

It used to be my favorite CI some time ago since a lot of my projects were hosted on GitLab. If you work in a company with lots of machines you can quite easily add your runners (machines) and run builds there. That allows you for more configuration and that can speed up the whole build process by a lot. Also, it's fully integrated with a GitLab (pull requests status, etc.) so if you host your projects there and like to deep even further into machines configuration - it's a great tool in my opinion.

GitHub Actions

Completely free for open source projects ❤️ Tried it for a few projects but didn't like it for some reason. Had some weird issues myself and from what I have seen on Twitter, I wasn't the only that had some troubles using GitHub Actions. I am not sure what to think about those Actions that can be installed from the Github's Marketplace - hard to judge the quality of those so probably you will end up writing your actions unless more companies/people decide to give it a try. It has a potential to become one of the best CI/CD tools though.

ADVERTISEMENT
Sponsor Ordinary Coding
Sponsor Ordinary Coding

If you are interested in advertising your application or service on my blog, get in touch with me by email ordinary.coding@protonmail.com. If you are an indie developer you can have your app advertised completely for free!

Conclusion

I have tried quite a few CI tools and my current best pick for all my projects will be Bitrise (referral link). I like the way they support the whole IT community and on top of that their tool is really great and easy to start with. Also, I believe they are the one of the first who add support to new Xcode versions so it can help a lot if you like to always be up to date.

Thanks for reading and until next time!