Don't worry, this is not one of those camouflaged "Surprise! I'm actually promoting a product" posts 😄
If you're following the software/tech bubble and browse here, on LinkedIn, medium or similar sites you'll find that continuous integration and continuous delivery seems to have become pretty much a de-facto standard practice in the industry (or at least that's what I've perceived)
While that may be true in some places or tech-first companies, at least where I'm from, not every developer is blessed with the ability to commit changes and seeing them live in a couple of minutes.
How the topic came to mind
I'm currently taking a masters degree and I've had the chance to share experiences with other classmates/colleagues working as software engineers in the industry, from different sectors (banking, insurance, supply chain, etc.). I have not been particularly active in meetups or groups before (though I'm trying to change that), so these kinds of interactions have been very interesting and productive.
My getaway from discussing the topic of CI/CD with my colleagues as part of class or as overall chit-chat is that if a tech product is not your main source of business, or if what you've got works well, you're generally going to be skeptical of adopting or investing in these kinds of practices and their related tools.
This is emphasized if you work in a company with a mission critical system that has worked forever and is very hard to change the known-to-work software engineering processes and culture. This could be the case of the banking industry, for instance. The case of companies that adopt agile practices is different for everyone of course and can't be generalized, but this is what I've observed.
While we as software engineers are aware of the benefit of CI/CD in the speed of development and testing of software, often the people with the decision power to make investments in these kinds of tools are not, and you're left having to practice your convincing skills.
This discussion left me with some questions:
- How can I make a CI/CD pipeline proof-of-concept with minimal or zero cost? Perhaps to convince someone or make a business case
- What can I do if I'm an entrepreneur and want to have a CI/CD pipeline?
- What if I just have a side-project that is getting some traction?
This questions led me to research (read: google) what I could get for free right now. I've found that surprisingly there are several options:
This list is obviously non-exhaustive and mostly focused on build/hosting services. Link to the pricing page is included to see any fine prints.
Free for OSS
- Now by zeit.co: Described in their own words as global serverless deployments for node.js and docker based projects, this service lets you host your projects. You can set application variables per environment and deploy from a CLI tool. The first non free tier plan is almost as cheap as a Netflix subscription.
- Travis CI: Another CI service for building and testing often used in conjunction with github and heroku.
Free as in free beer:
- Heroku: Allows you to host your app. Their free dynos tier puts your app to sleep if there is no traffic so this is excellent for trying things out.
- Bitbucket: Atlassian suite that includes git repositories, trello boards, and bitbucket pipelines, along with issue tracking and several other things (pull requests, environment variables, etc). The pipelines feature is very similar to circle-ci and allows you to commit a file in your project that configures a docker container to build your app in. 50 build minutes per month
- Circle CI: Similar to bitbucket pipelines (Builds your project inside a docker container, configured from a file). 1000 minutes free for 1 month and 1 container on linux.
- Azure Devops, previously known as VSTS or Visual Studio Team Services: Microsoft's offer includes git repositories, issue tracking, kanban boards, and builds among other things. Builds are configured from their web interface instead of using a file. The free tier has unlimited users and build time.
- Gitlab: Gitlab's suite free tier includes repository, issue boards and 2,000 CI pipeline minutes per month
I've had the chance to use bitbucket, heroku and VSTS in the past, and while there are some limitations, my experience has been great so far.
Has your company embraced devops, ci/cd pipelines or any of these practices? Do you know of any other free or partially free ci/cd services? What has been your experience with the free version of these tools or services?
This is my first post here (or anywhere for that matter) so I'm open to suggestions!