We hope to create tools and resources to make that pitch and migration easier. Out of curiosity, what tools are you currently using?
We think it'll be a piece by piece migration versus all at once. In a perfect world, we have a tool for an all at once migration but perhaps that will come with time.
The problem with that approach is that you're limited by the quality of your weakest tool. Code review might be a strength, but if your CI tool is weak, that's what you'll be judged on. Integrations are a way to allow you to focus on what you do best and effectively outsource the rest. Ideally, the integration hooks would be well integrated, but I don't see an upside in trying to make a monolithic app in this market.
GitLab allows you to integrate with your existing tools if you please or require. But if you're fine using our tools (which are awesome, if you'd ask me), setup and cost will be zero.
I agree. It is essentially the same vision like the old ALM tools had. They were beaten by better more specialized tools following the unix philosophy: do one thing and do it well.
Apart from GitLab, we're mostly on Atlassian, and pretty strongly committed to JIRA and Confluence.
The CI solution in GitLab is inadequate for our needs; we require the flexibility and extensibility of Jenkins.
The review tool in GitLab has some significant gaps compared with standalone tools like ReviewBoard, and even compared with the one built into Bitbucket. It also has some baffling UX decisions, like the thumb/emoji buttons and the approve/merge buttons which appear in the exact same location as each other. Seriously, just scrap what you have and copy Bitbucket's review interface.
I'm not a gitlab employee or anything, but I'm curious: How is gitlab CI not flexible enough for you?
I mean, it basically just runs arbitrary docker containers. From my mostly amateur (when it comes to this, i'm a professional developer but I don't manage our CI system directly) point of view it seems like the gitlab CI is more flexible than jenkins not less.
The strong coupling between repos and CI jobs is a huge obstacle— for a multi-repo codebase, you need to have triggers that are outside of "a new commit has been pushed".
The reporting is a big problem too— Jenkins has plugins which format and report on JUnit-style reports, including displaying images or other assets generated by tests.
Configuration. The config needing to be committed to the repo is an issue. For many use cases including ours, it's way better to have the CI configuration stored centrally somewhere, and deployed using Jenkins Job Builder (or the various other similar tools which exist for Jenkins).
Executor control. Jenkins lets you do things like put N slots on a buildslave and then have a job occupy M of them, as well as controlling what jobs can run where, and what the priority of different jobs is. This is critical for ensuring overall sanity and efficiency in the pipeline.
Jenkins isn't perfect, but it happens to be a better fit for our needs, and these four factors are all a big part of that.
We think storing the configuration in the repository makes it easier to collaborate on it (new branch is tested in the new way, master in the old way). Can you share your use case for this?
You can specify how many jobs you want GitLab Runner to run. It can even spin up more VMs automatically if you want that. You can bind jobs to runners with labels and specific runners https://docs.gitlab.com/ee/ci/runners/README.html
Our use-case is perhaps a bit unique, but ROS has a federated development model, meaning literally hundreds of repos. See the following file which maps repos to package names and versions:
It would be totally unrealistic to rev job configurations by making commits into the individual repos (and in the public open source case, actually impossible— the maintainers of that community build infrastructure don't have write access to many of the repos— it's equivalent to a Debian distro using DSC files to grab tarballs).
Thanks for the use case and the links. I must admit I never saw a 14234 line yaml configuration file before.
The jobs page is not loading for me right now.
I think that in general developers and the build engineers should both have commit access. But I see your dilemma and think we need to have a conversation to see what the possibilities are.
As one example, GitLab CI does not have a good story with handling unit test failures from e.g. gradle.
You can choose to keep the build output from a failed build, which you can download as a zip file, unpack locally, and look at the reports. This user experience makes test reports mostly useless.
At the same time, they have test coverage badges, where test output is parsed to provide coverage. To me, that's really weird: You don't get proper access to test failures, but lots of work into test coverage.
(I have no knowledge of this, but I suspect that being a Ruby-shop, they have little experience with working with java projects, and therefore don't really understand how the toolchain works. This is all guesswork, though).
In the end, we cannot give up Jenkins. We need to know the result of our tests, and see the test output!
Just running docker containers is basically a show stopper for certain use cases. Not every use case can even fit into a docker container. E.g. testing kernel modules.
We've just opted for GitLab EE, the True-Up Licensing Model won us over, but also the promise of a working Jira Integration. That's still very limited and a pita to setup, even harder when you use atlassians hosted Jira. I don't want to buy GitLab Licenses for non-developers, especially as our Jira is connected to Zendesk, something which doesn't make sense to connect directly to GitLab.
But I agree with your comment that we should extend the scope of the integration and make it work better with hosted JIRA. Our VP of Engineering is assigning someone to this task. Feel free to email stan@ company domain with a link to this comment and with what you need so we can have an engineer look into it.
Many companies use JIRA and it should work great with GitLab.
We're currently moving to the Atlassian stack, from Bitbucket to Jira to Confluence. I really want to switch over to Gitlab reading this but the sunk cost is too huge already...