Gitlab CE is just amazing. It's hard to fathom going back to GitHub (and I wrote a book for O'Reilly about the GitHub API). The tight integration with CI rather than using external services is amazing.
Are you suggesting gitlab ci isn't docker? All my pipelines are some docker variant. I'm not sure if you are just suggesting actions was done the right way with docker, but that's nothing special with gitlab ci. Can you clarify? You can even use your own docker repository with gitlab, though I'm unsure if that's something that only comes with EE (I haven't needed it yet, I just keep all my extras in the gitlab ci yaml file).
Sorry, I'm honestly not familiar with Gitlab CI. I was just originally mentioning how the use of Docker in Github Actions allowed for amazing flexibility, which I thought was cool.
What makes Gitlab CI a better or more polished API than Github Actions? At first glance they look very similar
Gitlab has a few different modes for its runner. One of them uses docker to run your script in a container. But you can also have shell executors which is more like Jenkins, for example. That can actually be better if what you're doing is building a lot of Docker images.
It's also slow and difficult to cache build artifacts which makes it immensely painful to debug if you have anything of moderate complexity.
Allegedly there's a way to cache image layers and artifacts on Github. I've taken to pushing them to S3 buckets so my CI runs can be incremental where possible.
Agreed, it's much better than Travis. But the GP is right, it's more "hack blocks together", where each action does its own thing and acts on the files independently, and there isn't much control over the whole process. Heck, they don't even fully support the entire YAML spec (I'd give citations on that but I'm writing from my phone, and don't have the time to pull it up).
I haven't used GitLab for a while because most of the projects I'm working on are on GitHub, so I can't comment on GitLab CI.
It's much better than Travis in every way except one: GitHub Actions pull request checks are against the PR branch, while Travis pull request checks are against a merged tree.
The most common case where this matters is if someone pushes a failing commit to master, and then all PRs based on that commit will also fail, and then a fix is pushed to master. With Travis, you just need to re-run checks, but with GitHub actions, all those PRs need to be rebased on the new master.
Yeah, that's interesting. Being able to run the runner on my own instance on Google cloud is so easy to troubleshoot. I've not played with actions but when I need to shell into my runner and check something, having root and owning the machine makes that really fast.
I just went through the process of setting up GH Actions to replace Circle CI for a Rails app. It was depressingly inflexible, considering that GH is a Rails app, and I would have expected it to be straightforward.
I have done elaborate pipelines in Gitlab, and echo the thoughts of it being lightyears ahead.
I don't think there is any reason to believe that github itself uses github actions for its ci/cd process. They must have had something in place before actions came on the scene, and even if they are migrating to actions it would likely be a long process.
I would just expect that if they want it to be a major feature, to dogfood it themselves. If it would be a long process to migrate, then how could they expect anyone else to migrate with the state of the feature?
I am not sure on how Bitbucket compares because I haven't tried GitLab in a while, but we use Bitbucket at work.
Bitbucket works well and the Pipelines functionality is a life saver for us. I wish I started my projects differently though. After bringing on my first employee it takes a lot of reorganizing of the projects to get them access to it. That's not an issue with Bitbucket though... just a cautionary tale.