Hacker News new | past | comments | ask | show | jobs | submit login

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.



Have you tried Github Actions? (I haven't, just want to calibrate).


Github actions is nowhere near as polished/mature ad gitlab ci. Github actions feels more like a "hack blocks together" than a true pipeline.


Github actions is confusing and has a steep learning curve, but the flexibility of using Docker makes it fast and reliable to hack together workflows.


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).


> "Are you suggesting gitlab ci isn't docker?"

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.


It's fairly easy to cache folders in Github actions, we use it for node_modules, the refreshed when the package.json file changes.

See [1] actions/cache for more details.

[1] https://github.com/actions/cache


How does this work for build artifacts generated by a docker image? I looked at it awhile back but it didn't fit my use cases.


I used Docker with Jenkins to do the same thing. Of course it's flexible, but it's not nice (and I wouldn't call it fast either).


Do you mind to elaborate? We have migrated from Travis to Github Actions and love it so far.


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.


> GitHub Actions pull request checks are against the PR branch, while Travis pull request checks are against a merged tree

Actually, actions/checkout will check out the merged tree by default.


Indeed, the documentation reflects this. So why isn't it happening on my repo? Weird...


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?


Does anyone know how Bitbucket's offering compares to these?


GitLab has a page comparing it to Atlassian Bitbucket: https://about.gitlab.com/devops-tools/bitbucket-vs-gitlab.ht... There are also other comparison pages with other DevOps tools linked from this list: https://about.gitlab.com/devops-tools/ Even though that content is managed and served by GitLab, if you feel there are inaccuracies or a tool missing, you can propose edits through various channels.


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: