I tried using Gitlab's CI and was surprised at how limited it was. The Gitlab CI syntax was harder to follow, and my integration tests took 17m to run when they ran in almost 1/3 the time on Circle.
A big part of the problem was that CircleCI lets me use an instance with 8 CPUs / 16 GB RAM with just a config file change[0], whereas every Gitlab instance is 1 CPU / 3.75 GB RAM unless you host your own runners.[1] But if I'm paying a company to manage CI, I don't want to provision my own hardware infrastructure
[0] https://circleci.com/docs/configuration-reference#docker-exe...
[1] https://docs.gitlab.com/ee/ci/runners/saas/linux_saas_runner...
Really disappointing, as I've had to resort to using `az vm start` -> run -> `az vm deallocate` to use an on-demand powerful runner.
0: https://github.com/github/roadmap/issues/161
1: https://github.com/github/roadmap/issues/95 (note: added `ga` `ae` and removed `beta` `cloud` labels on Oct 13, 2020 ; the previous text: https://web.archive.org/web/20200731200411/https://github.co... )
BuildJet for GitHub Actions, plugs elegantly into GitHub Actions. With 1-line change in your config, you get 2x speed for half of GitHub's price.
Check it out @ https://buildjet.com/for-github-actions
This is in no way a deg against your project, its just a general question .
Or, I guess a more conciliatory stance is: wow, folks must be using some pretty hello-world pipelines if `gitlab-runner exec` works for you
I can see how "local" can have multiple meanings, but here I meant "as a developer on my laptop, can I have local docker run things the way GL is going to run things?"
I hear people say a lot "oh, I just use shell scripts, NBD" but as I said, I'm sure for hello-world setups which don't have any includes or take advantage of GLCI constructs that can work fine, but what rubs me the wrong way is that "gitlab-runner exec" doesn't say "just use shell scripts," it says "gitlab-runner exec - execute a build locally" and it for sure does not do that
But yes, your observation is my whole complaint: it is not _reasonable_ to ask a GLCI developer to run a local copy of GL, complete with any shared GLCI template repos, in a local docker container just to have local execution. Maybe I wouldn't complain about it so much had I not started with circleci so long ago and had such a "wow, this is amazing" followed by gitlab-runner's :troll_face: -- to say nothing of GitHub Actions just straight up ignoring that whole demographic and hoping https://github.com/nektos/act emulates enough to have people not notice the massive feature gap
My go to workflow for workflows (ha) is forking a repo as a private fork and toying on it until I'm happy with the results
Even if we had a local runner, if it takes a ton of time to start and complete every step, it'd be almost as painful to debug as a remote runner taking the same time. On the other hand, if the cloud runner is ridiculously fast, and completes steps on the order of single digit seconds, it would be fairly painless to debug.
When running remotely: edit file > commit > push > switch to browser > browse to pipeline > repeat
Vs locally: edit file > run pipeline > repeat.
I like to do gitlab-runner exec docker … locally, but it doesn’t work with includes and you need to set up your own variables.
Some features seem to work incorrectly (ex. some combinations of branch filter rules + file changes rules). Or I misread the docs. For a free service it gives excellent value.
Circleci also good product. But having 1 less "thing" wins over most other considerations for me.
I wonder if Circle is struggling to maintain market share.