CircleCI Announces Support for Gitlab
circleci.com
circleci.com
I tried out CircleCI's Gitlab integration a few weeks ago during the public beta, and it felt like CircleCI was really phoning it in.
The instructions led me down paths where the product would just break. It told me to connect CircleCI to Gitlab through OAuth, and then my first build immediately died asking for a personal access token.[0] I generated a PAT instead, and then CircleCI failed my build because it was provisioning an empty SSH private key.[1]
They had a channel for reporting bugs with the integration, but it doesn't create a real support ticket. Their feedback channel was just their public Canny feature request board. I submitted my feedback anyway, and they didn't respond for over two weeks, at which point the response was basically just, "Oh, we fixed a lot of bugs, so maybe we fixed yours. Can you delete everything and try again?"
[0] https://twitter.com/deliberatecoder/status/15430630495982714...
[1] https://circleci.canny.io/gitlab-vcs-experience-feedback/p/n...
I'm given badges, and other gamification crap.
Then again, when I publish my projects I tend to post them either here or on Reddit.
Maybe Microsoft, with some justice, wants a cut of the traffic?
Supporting GitLab on those reasons alone, and choosing to pay for GitLab Enterprise Edition because they offer the Community Edition, is "philosophically aligned"
Eg: GitLab has an open-core product and GitHub is owned by (evil?) Microsoft.
I strongly dislike some of the things that Github does: suck up open-source code and re-sell it through Copilot, stifle competition by offering free services that their non-MS-owned competitors can't afford to offer.
I don't think either one is purely good or purely evil. Overall, I like both companies better than average, but I'd rather support Gitlab.
Their way to promote remote work is, ironically, hurtful to my prospects as a remote worker.
(I'm a remote worker outside of the US and my personal interest would be to be paid more, but I don't believe it would be the general interest)
It seems counter-intuitive but I imagine that not doing CoL adjustments actually lowers total payroll.
That's not the problem that forty was talking about. The issue is that when you drop a ton of employees in an area whose wages are well beyond the norm you create larger societal problems.
In fact, concentrating developers in one place like SF is pretty clearly the far greater social evil than ~evenly dispersing them around the country and letting them live in states/cities that perhaps desperately need the benefits of highly trained skilled workers who will pay a ton of taxes.
I would say that packing most developers into SF and California is far worse for America than letting educated and productive workers find communities around the country, potentially growing tech industries all over. Likely far better for equity, diversity, tax outcomes, and social good. I really can't see any argument for packing them all in California and letting all the other states rot.
Those doctors and lawyers aren't getting paid big city salaries.
But most developers aren't making that either. I get that there are some few who are making $400k to millions, but the median developer pay in every software field according to the stack overflow survey is ~80k.
Your average small town doctor is likely out-earning your average developer, so I think it's a good comparison.
We're talking about flyover country. The kind of place that rich Parisians would only ever fly over and would never for any reason consider actually going to.
We're also talking about having so much space that the idea that developers could mess up local housing markets is crazy! In the US, packing developers together ruins housing markets (see the SF housing market ruined by tech companies) and spreading them out across the other 49 states and ~thousand+ rural locations prevents most out-sized effects, except in a few prestigious places known for elite vacations.
The pandemic made a lot of people realize they can hire remotely and be fine. Why should I share the surplus with the company? I am a good developer and I will negotiate to get a better pay. Why wouldn’t I?
The whole premise of being employed is that you make more money for the company than they're paying you.
> I am a good developer and I will negotiate to get a better pay. Why wouldn’t I?
So why would you rule out companies that pay location-adjusted salaries? If they're the best offer on the table then you're shooting yourself in the foot.
I rule out precisely because they never were the best offer in the table for me. There are companies that do not pay location-adjusted salaries that pay better. I was able to get a job in those the last two times I switched jobs.
They're not taking a chance on location. Location is irrelevant to the job.
The timezone alone may rule out a location.
Culture is closely aligned with location, and every company cares about "cultural fit" (while pledging to support diversity, of course) for better or worse.
Misaligned holidays, internet connection quality, even power supply disruptions... and so many things are directly affected by location.
How can someone think location is irrelevant?!?!
I agree it "looks" like nonsense... but it's not. It's reality. Different countries, even neighbouring countries, can have completely different salaries while doing the same thing... and things can cost completely differently too... Just check the border between the USA and Mexico.
If they don't align with your philosophy, that's cool too. You get to choose how that affects your choice of VCS/CI provider.
That’s just silly
I don't really agree with the concern that they "stifle competition by offering free services that their non-MS-owned competitors can't afford to offer". GitLab is clearly able to differentiate with with their terms of service, as evidenced by your and others' comments here. I don't fault the vast majority of FOSS developers, especially those using permissive MIT-style licenses, for favoring cost-efficiency over control. It's good to have both options.
Before, it was freshmeat and, for collaboration, arbitrary mailing lists each enforcing their same "standards" to send in patches. I can only assume the process was sometimes smooth, sometimes terrible. In any case: I never did it.
In the GitHub era, I have regularly made pull requests. Small ones on a maybe weekly basis, larger ones twice a year or so.
I feel confident in the estimate that the number of contributors has grown by at least an order of magnitude, and that GitHub was a significant factor in this development.
Gitlab, meanwhile, started out as so obvious a clone their CSS still had classes named "gh-large-..." months after launch. Then, they would frequently have the audacity to complain when GitHub copied some minor feature they had first implemented.
Social media in the workplace is not as great, ask anyone using facebooks communication platform: https://www.workplace.com
I much prefer working with gitlab as a product 9hours a day on internal systems.
I use github every day and the only time I interact with people I don't know is if I'm submitting a patch to another project I use. Comparing it to facebook workplace is weird.
This is quite absurd complaint, is it not?
Why would you need CircleCI?
Gitlab can work as a full CICD platform.
Obviously something like Dagger[1] solves this, but I don't know how widely used that is at this point.
If you provision your own gitlab-runner, you don’t pay gitlab anymore for runner minutes. You can also split workloads between runners through tags.
I wonder if Circle is struggling to maintain market share.
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 .
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.
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.
This might strike some as a weird event (Gitlab already has CI/CD!), but it _was_ highly requested and is (probably) of other similar things coming to fruition!
(high-five!)
The main tradeoff (if the cost difference is insignificant) between this and a third party service like e.g. CircleCI appears to be between:
a) security (another service that can be comprised - with the implicit capability to instantly deploy something that owns your service)
and
b) latency/performance (CircleCI consistently starts builds within a few seconds)
How do you think about these things?
Made worse by: ok, fine, you magically have `eval $(git set-env-from-commit HEAD)`, now how do you report those run results back to the upstream UI, since there is for sure no standard for that
- To avoid polling, you want to be able to register a webhook to be notified when pushes happen. You're going to need Git-servicet-specific parsing of the webhook payload, and you probably want to be able to speak a Git-host-specific API to automatically register that webhook to make it easy for users. (Falling back to polling would be good, but few do.)
- If you're a paid product, you definitely need to support private repos. You probably want to be able to speak a Git-service-specific API to set up the credentials to be able to do that `clone`; in GitHub parlance use the API to create a "deploy key", rather than requiring users to manually mint an SSH key, set up a bot account on the Git-service, add the SSH key to that account, and upload the SSH key to the CI-service. (Falling back to being able to provide a raw Git URL and credentials would be good, but few do.)
- To avoid confusing user-account permission mismatches, you probably want to piggy-back on the Git-service's user system; supporting "sign-on with X" and using the Git-service's "is admin of this Git repo" for allowing access to your the CI-service's admin interface for that repo.
- You want to be able to post statuses back to the Git-host. This takes a Git-service-specific API. (Falling back to letting the user provide their own script for posting statuses would be good, but few do.)
Git can set up a post receive hook, which could do the triggering.
SSH key auth is a thing as part of Git+SSH.
Sure I couldn't set this with e.g. GitLab without them supporting GitLab, but if I'm self-hosting a git service, this seems like a fine solution.
But for some companies paying extra to be able to blame someone is crucial.
Also it was to show that some ppl dont understand the offering of products they use.
Bespoke CI/CD solutions are great, especially if you're the author and tailor it to the business, for a certain size and class of use case.
As a business though, it's hardly ever worth the investment/maintenance and ongoing operational cost vs. just externalizing it and dealing with the consequences unless it is your business or a fundamental part of how your business is delivered. Thus, generic (but extensible) solutions are the happy medium.
And im not even talking about their traffic costs. In the times when traffic gets cheaper and cheaper they charge a fortune and even increase the price.
https://circleci.com/docs/using-arm
I know it's not as convenient as being able to use a docker executor directly, but it seems straightforward to work around.
Sadly we adopted CircleCI early on and make heavy use of their support for multiple containers - if you specify a list of containers in a Docker job, it will execute the tests in the first container and connect the other containers as "data" containers (think redis, mysql et c) for use in tests.