DEV Community

Cover image for The ultimate (free) CI/CD for your open-source projects

The ultimate (free) CI/CD for your open-source projects

Yohan Lasorsa on August 16, 2019

I spend a good part of my free time working on open-source software (OSS) on GitHub, and I do it (mostly) for fun and learning new things. But one ...
Collapse
 
jeastham1993 profile image
James Eastham

Love this! I've recently found Azure pipelines and migrated all our company repo's over to Azure Dev Ops repos to make the most of it.

Going to connect some of my personal GitHub projects to it as well, it really is a fantastic tool though.

Collapse
 
marceliwac profile image
Marceli-Wac

That's all great and the article is very comprehensive! However, with a lot of experience in CI/CD using Gitlab's toolchain I feel like omitting Gitlab in this piece is quite ominous. Especially given that it's not only free but also supports free hosting, operations support etc.

Collapse
 
sinedied profile image
Yohan Lasorsa

You are right as Gitlab is a good alternative to GitHub, but please see my previous answer regarding Gitlab hosted CI: as good as it is, its hosted runners are limited to Linux so it's not an option for cross-platform OSS projects. Though, you can still use Gitlab hosting with Azure Pipeline, maybe I should mention it in the article? 😉
I admit I only focused on solutions for GitHub since most OSS projects are hosted there. When I will update the article regarding GitHub actions it will be a good time to put Gitlab in the comparison, thanks for the feedback.

Collapse
 
marceliwac profile image
Marceli-Wac

I've read your comment before and agree with the limitations, just thought it still deserves a mention :D

Collapse
 
codercatdev profile image
Alex Patterson

So I use Azure pipelines at work and love how easy they are to setup using the interface. However for my personal stuff I still love using GCloud. Maybe it is just because I like to stick within the GCloud/Firebase system as a whole.

Collapse
 
sinedied profile image
Yohan Lasorsa

I never quite looked at Cloud Build because from seeing the docs it seems limited to 120min a day for its free tier, which would not fit my needs. Also the docs only mention Linux and Docker, so no MacOS/Windows support. I might try it though in place of Travis for simple projects for comparison 😉

Collapse
 
anoff profile image
Andreas Offenhaeuser

Given the alternatives you provided I agree with pipelines being the best.
However I think gitlab or drone have way better (simpler) UX for running simple jobs that can be done in docker.

One thing I really dislike about pipelines is the fact that it does not have real scheduled jobs. Yes you can configure them in yaml but it's not guaranteed that they run (once per login)

Collapse
 
sinedied profile image
Yohan Lasorsa

I'm not sure I understand what issues you had with scheduled builds, can you give me more details? You can use the always: true setting to force scheduled builds to run, otherwise if any build (manual, commit or PR) is started within the timeframe of the schedule, the scheduled build will be ignored.

Collapse
 
anoff profile image
Andreas Offenhaeuser

I tried to benchmark runtime with a 2 hourly job that didn't run over night.

twitter.com/acanthamoeba/status/11...

There are so many things in pipelines that work non intuitive that I actually prefer the other services I mentioned.

Thread Thread
 
sinedied profile image
Yohan Lasorsa

Wow I was not aware of that, it's really a weird behavior 😕
Thanks for sharing this, I will push it to the team in charge of it and see what I can do.
It's easy to find a workaround (like with a scheduled Azure function call or even with a simple curl scheduled by Travis 😄) but it kinda defeats the point of having it simply exposed in the YAML... I hope GitHub actions will be better in this regard.

Collapse
 
punkdata profile image
Angel Rivera

Full disclosure I'm a dev advocate for CircleCI. I'm interested in learning more about why you view it as "more complex" than the other options?
Also CircleCI now supports Linux, Docker, macOS/IOS & Windows based executors which provides cross platform support. CircleCI is also very supportive of open source projects and provide very generous free CI/CD resources. Check them out.
circleci.com/open-source/

Collapse
 
sinedied profile image
Yohan Lasorsa

IIRC when we put up our CircleCI setup it took us almost 2 whole days to have it working completely (including the setup of the custom docker image to build for Android though). I only helped with few parts, but compared to Travis/AppVeyor/Azure Pipelines the syntax feels weird in some points, like the alias stuff (looks like C++ 😄). I also remember we had some difficulties when trying to get the cache and workflow working properly.
But to be honest, one excellent thing though is that we never had to update the config once it was working (only the Docker image) which is a very good point!
As for OSS projects, unless I'm wrong only Linux workers are provided by default. You have to ask for a limited access to MacOS workers and I could not find anything about Windows, which is not the best if you quickly want to spin up some tests to see if it fit your needs IMHO.

Collapse
 
paulasantamaria profile image
Paula Santamaría

Great post! Can't wait to read about CD in azure pipelines 👍

Collapse
 
mokenyon profile image
Morgan Kenyon

Great article! I need to implement setup a pipeline. Thanks for putting this together!!!

Collapse
 
chrisachard profile image
Chris Achard

Interesting! Do you have any details about how this might change when Github CI comes out? I feel like that may really disrupt the current status quo.

Collapse
 
sinedied profile image
Yohan Lasorsa

I got my GitHub Actions invite yesterday so I will test it out thoroughly until its GA, and update the article if needed. What I can already say is that it's similar to Azure Pipelines feature wise, but being completely integrated with GitHub is a big advantage.

Collapse
 
chrisachard profile image
Chris Achard

Ah great. Thanks!

Collapse
 
gdledsan profile image
Edmundo Sanchez

I am looking at GCP Cloud build with 2500 re minutes per month, I would love your opinions on this

Collapse
 
dariusx profile image
Darius

I recently learnt that Gitlab has introduced Pipeline features.

Collapse
 
sinedied profile image
Yohan Lasorsa

I heard good things about it, though I found it mostly interesting for on-premise solutions as Gitlab hosted CI runners are limited to Linux. You need to bring your own MacOS/Windows agents if you need it, so it's not ideal for cross-platform OSS projects.