"it depends"? What do you want to achieve? where do you host your code? do you want simpler or more convoluted but more powerful thing? Do you have resources to maintain something?
I'm leaning towards KISS so if you use github then use github actions :)
We use buildkite at work. Reason we switched from GitHub actions is around CI visibility. It was hard to tell at a glance how our CI was performing in GHA.
Buildkite also has some nice instrumentation for test suite analysis but it’s $$$
Im appreciating the shift towards the separation of pipeline definition and pipeline execution that comes with projects like https://dagger.io
Using the native workflow definitions of the SaaS solutions sucks because the development loop on them is slow. You have to push to validate any changes.
Dagger brings development of pipelines back onto my machine. Then any of these solutions (GHA / Jenkins etc) become dumb runners and I care a lot less which one I use (almost - GHA is just obscenely convenient having already brought into GH).
Im being a bit reductive there though, because I am missing the value add of dagger / buildkits cache, which does need some cooperation from the runner.
Pulling a whole dagger cache on every build does remove the added benefit. You really need that cache maintained between runs.
I think given they all do CICD, and the list of trade-offs will be different for different folks dep on skills, resources, isn't "better at what" mostly subjective?
I cut my teeth on Jenkins back in the day but use GH Actions mostly these days- free, simple setup, low maint.
GitHub actions wins on just about every metric. Throw GitLab into the mix and it still does. It’s not even a close comparison unless you get GitLab into the mix. Azure DevOps is very clunky and Jenkins is for dinosaurs.
For Cloud definitely GitHub Actions. Since MS bought GitHub, they have Actions as strategical choice. For regular on-premise setup GitLab is a mainstream. For k8s / openshift - tekton & argocd.
To be clear, I've used Jenkins in several roles, and it can clearly do the job well, but it never quite felt like a natural way of working to me. Hard to say why, as features wise it includes everything from a CI/CD protective, so I guess it's just down to how my brain is wired.
Despite not developing in the MS ecosystem for years, I've always loved Azure DevOps, which also includes a dev focused Jira equivalent, docs, artifact storage etc. Free for up to five users, then only $5/month.
Hard to imagine MS not merging DevOps and GitHub eventually.
Comments
I’ve found it infuriating. I push a change, wait for 5 minutes for a build, only to have it complain about invalid YAML with an obtuse error message.
I'm leaning towards KISS so if you use github then use github actions :)
Buildkite also has some nice instrumentation for test suite analysis but it’s $$$
Using the native workflow definitions of the SaaS solutions sucks because the development loop on them is slow. You have to push to validate any changes.
Pulling a whole dagger cache on every build does remove the added benefit. You really need that cache maintained between runs.
Depot is making that possible on GHA with minimal effort.
The combination GHA + Depot + Dagger is a real compelling story for me.
I haven't had the pleasure of adding the Depot part yet. But I know a lot of wondeful folks are there building something awesome.
I cut my teeth on Jenkins back in the day but use GH Actions mostly these days- free, simple setup, low maint.
But GitLab is the best and it's a real pain to use others.
Hard to imagine MS not merging DevOps and GitHub eventually.
Never warmed to Jenkins.
GitHub and Azure are ok. For the new project I'd most likely go with GitHub.
I think I prefer Jenkins for work/team projects.