But if you did need > 2k minutes, it sounds like a good idea to spin up a $5 / month DO server to be a dedicated runner. That sure beats paying $50+ / month for most other CI services for their most basic paid plans, especially if you're just a solo developer or small team who wants a nice coding experience.
I actually just use Appveyor if I can for my personal stuff.
If you want free CI, CircleCI is the place to be.
It seemed like if you wanted to self-host your own CI builder with their agent, it was still limited to 1 parallel build on their free plan?
Is that true?
With Gitlab, if you bring your own runner, there's no limitation like that AFAIK (I've never done this yet because I never surpassed 2k build minutes a month) but I glanced their docs.
Primarily, each pipeline stage can directly reference other public Github repos, with no additional code on your part. This taps in to that community that only exists on Github; for example, to build a project in Language-of-Choice, you just need to find a public implementation of the build pipeline stage for that language, then reference the URL in the action you build.
Its also very docker native, actually to the point of being totally unobvious that everything starts with a docker container. The documentation and hints about how to use it are still pretty sparse since its in beta.
Pricing still hasn't been announced. We'll see. But it feels very promising, especially if a community developers around it focused on providing pipeline stages.
Until then, I'm sticking with Gitlab for private repos because I don't want to wake up one day with Github actions to find out that I need to start paying to regain access to CI.
I don't mind if it's premium only when it's released, but they should be clear about this up front. It kind of worries me that they didn't mention it'll be a free feature in the docs. That seems like something you would want to say up front if it were true. It would be really lame if they open it to everyone to beta test it and then switch it to paid for the general release without mentioning that.
I am a happy user of Gitlab for 3 years now, I have been using it for all of my private stuff and using it actively for around 10 projects at the moment, and I have seen the product change over time both visually and functionally. There are multiple things that I don't like about it, such as the way it handles registry images, but overall my experience for these 3 years has been terrific.
First and foremost, Gitlab CI is the best experience I have ever had, and I can compare it with Travis and Codeship; Gitlab is way ahead of every platform in terms of convenience and its free-tier limits. They have their own shared runners, which means you can run as many parallel jobs as there are runners available at the moment, so no concurrency limit there. They also allow you to run the free stuff for 2000 minutes per month, which is more then enough for most of the side projects. Also, you can use your own runners with the free tier as well, which means just pick a 5$ VM from DO, install the gitlab-runner using the package manager of the OS, such as apt or yum, and register its address on Gitlab UI. The whole runner stuff takes around 10-15 minutes to setup, and you are good to go. You can have as many runners as you like and you can run as many jobs as you like on them as well. There are also options to setup gitlab-runner in such way that it spans new VMs for jobs, which means you don't even need to have full-time runners, they can be created on demand. Also, CI is completely configured via a `.gitlab-ci.yml` file, which is version controlled and has a clear syntax, I have found it the easiest to use among the other options. It syncs with issues, merge requests and the project tree, which means you can reach to the corresponding pipeline from the MR; it also allows you to generate artifacts and store them for a certain amount of time available for download. Overall, I am a huge fan of Gitlab CI, I couldn't have imagined it would be this convenient to use the same product for Git-hosting and continuous integration, it is a real pleasure.
They also have their own Docker registry, which is pretty convenient to use with CI builds. I use it to push my images with commit hashes as tags to this registry from CI. Unfortunately, there is a lot of room for improvement for registry interface, currently it is pretty basic, meaning it only lists the image tags. If you are pushing the images per commit basis, you are gonna have a lot of images and cleaning up the repository is impossible from the interface, which is sad. I really hope they improve the registry integration. They also have some Kubernetes and monitoring integration which allows you to monitor your cluster and deployments from Gitlab interface directly, but I haven't used it yet, so no comments there.
Apart from the feature set, the most important reason I choose Gitlab over Github is clear communication they maintain. Downtimes happen, engineering teams can have bad times, but they are always open about these problems. They inform everyone from a Twitter account, they are responsive to everyone, and you can see them being very clear and direct about the problems they are having. I expect downtimes to happen, Git-hosting is not a crucial system for me that I cannot live with an hour of downtime, maybe it is because of the scale of the projects I am working with, but having an open conversation about issues like this is the actual value for me. As long as they keep this level of communication, I am fine with occasional downtimes. Not that they have downtimes all the time, but it is true that I have seen more downtimes on Gitlab than on Github.
Overall, the reason I'd not migrate my private projects to Github is not Gitlab having free private repositories, but their huge feature set and level of communication. I see Github as a giant corporation, and Gitlab as some guys like myself, I feel closer to them and I'll be their user & customer as longs as I feel that way. I have no association with Gitlab at all, I am just a happy user and I wanted to explain why I like Gitlab, I think a lot of people would choose Gitlab over Github if publicity is not a concern.
Also wanted to share this feature we are currently working on, it allows you to remove unused tags from Container Registry, and we hope it will land with release 11.7 https://gitlab.com/gitlab-org/gitlab-ce/issues/55978
It's on their pricing page at https://about.gitlab.com/pricing/.
Gitlab CI however offers 2,000 build minutes a month with their integrated CI service.
Even if your whole set up takes 10 minutes to build on CI, that's 200 builds a month which is plenty for an individual project that's on a private repo.
In other words, I think Gitlab's free private repos + CI is still a better choice for a solo developer who wants private repos since CI is such a useful tool and other external CI services have much more limited free plans (to use with Github instead). Having everything in the same UI is also really useful, which is another win for Gitlab.
I prefer Github's UI for overall repo exploration and issues, etc.. but I'm not sure if I'll move my private repos over to Github now that's it free, because the repo itself is only 1 piece of the puzzle.
Microsoft also has a deep connection with Docker. It's kind of no surprise that Docker only has automated build support for GitHub and Bitbucket. Kind of a bummer, but with Gitlab CI you can get the same effect in the end.