8 ms·
Disclaimer: I'm pretty biased towards Gitlab -- write about the things you can do it from time to time and they gave me some free swag once. Best CI I've ever
by hardwaresofton 8y ago
Disclaimer: I'm pretty biased towards Gitlab -- write about the things you can do it from time to time and they gave me some free swag once.
Best CI I've ever used is Gitlab CI[0]. The runner is completely open source[1] and you can use your own runner with your gitlab.com (or local instance) projects -- set it up in an autoscaling group[2] for savings.
I run https://runnerrental.club https://runnerrental.club but Gitlab also recently released the ability to pay for minutes in 11.8 [3], so my product is more-or-less dead in the water but I don't mind since Gitlab is such an excellent tool, I'm glad to see them fill the need.
But back to Gitlab CI -- the YAML configuration documentation[4] is pretty fantastic -- Most easy things are easy and hard things are possible. I suspect that one could run an entire startup like circleci/travis/drone based on just the software that Gitlab has open sourced and made available already.
[0]: https://docs.gitlab.com/ee/ci/ https://docs.gitlab.com/ee/ci/
[1]: https://gitlab.com/gitlab-org/gitlab-runner https://gitlab.com/gitlab-org/gitlab-runner
[2]: https://docs.gitlab.com/runner/configuration/runner_autoscale_aws https://docs.gitlab.com/runner/configuration/runner_autoscal...
[3]: https://about.gitlab.com/2019/04/22/gitlab-11-10-released/#purchase-add-on-ci-runner-minutes https://about.gitlab.com/2019/04/22/gitlab-11-10-released/#p...
[4]: https://docs.gitlab.com/ee/ci/yaml/ https://docs.gitlab.com/ee/ci/yaml/
- StavrosK 8y agoI will second this, Gitlab has the best CI I've ever used, and I don't know what it is. The UI is just so clean, it does what I need to and is easy to configure. I put all my projects on Gitlab mostly because of the CI, but also because of the other great features.
- jl-gitlab 8y agoGitLab product director for CI/CD here - thanks so much for the feedback, everyone. It's really great to read how much you're getting value out of what we built. We have an overall CI/CD direction page up at https://about.gitlab.com/direction/cicd https://about.gitlab.com/direction/cicd which you can drill down into the individual stages plans from. Feedback is always welcome, we love building things in partnership with real users. You can reach me at jason@gitlab.com any time.
- kuschku 8y agoHave you started working on providing a UI for the XML test result artifacts produced in CI runs? They are displayed in merge requests but not anywhere in the normal CI pipeline UI and I'd live to be able to see those and see what works and what doesn't.
- boleary-gl 8y agoGitLab Product Manager for Verify (CI) here (who works for the Director above ). Yes - that's something we want to get to this year. We call it "CI Views" right now but we want to expose better all the types of test results that get collected by GitLab. Today for XML (JUnit) results, you can see what fails in the merge request with https://docs.gitlab.com/ee/ci/junit_test_reports.html https://docs.gitlab.com/ee/ci/junit_test_reports.html. But we want to make the XML, JSON or HTML output of _any_ type of test first class with CI Views: https://gitlab.com/gitlab-org/gitlab-ce/issues/35379 https://gitlab.com/gitlab-org/gitlab-ce/issues/35379
- kuschku 8y agoYes, but that only works for the merge request view so far, are there plans to add a view of these to each CI job, so even if something on master fails, I can see the results?
- boleary-gl 8y agoNot sure if it will make the first iteration (as merge request centric workflow will be "first")...but I agree the vision should include the ability to see the tests on any pipeline.
- Yhippa 8y agoI haven't checked out Gitlab in a long time. My, they've come a long way! I love a lot of what I'm seeing including the Web IDE and their bias towards making CI/CD a priority.
- hardwaresofton 8y agoInclusion of the free docker registry was also pretty visionary, and it's been a while since they added that -- it's crucial for just about all my new projects.
- tr-gitlab 8y agoI'm the GitLab product manager for the Package, which includes the container registry. Thanks for the feedback! You can see the updated vision and direction for the container registry here: https://about.gitlab.com/direction/package/container_registry/ https://about.gitlab.com/direction/package/container_registr... If you have any questions or feedback, you can email me at at trizzi@gitlab.com. I'd love to hear more about how you are using the docker registry today and any improvements you'd like to see made to the product.
- hardwaresofton 8y agoJust saw this, thanks for the link to the vision! I can't say I have any great recommendations for the container registry but hopefully someone that does sees this.
- snorremd 8y agoIf you know a bit about GitLab and Docker, GitLab CI is pretty easy to grok. I really enjoy that you can run your CI jobs inside any old Docker container (with a shell). GitLab CI is built up from very simple concepts and functionalities, but still enables some powerful use-cases. The artifacts feature is great and some artifacts, like unit test report files, can be interpreted by GitLab and used in various parts of the GitLab web UI. A lot of this just works and most of the CI features are available in the GitLab community edition which is open source. I have not used Jenkins actively since before the Jenkins pipeline file format was common. So for me Jenkins always appeared to be this game of checking the right checkboxes and clicking the right buttons in the Jenkins UI. The new pipeline feature is probably much nicer. However, now that I use GitLab I don't really see any reason to switch back to Jenkins.
- michaelneale 8y ago(Disclaimer: CloudBees cofounder here) Our hope to simplify away the checkboxing and plugins is ready to go distro (free of course): https://www.cloudbees.com/products/cloudbees-jenkins-distribution https://www.cloudbees.com/products/cloudbees-jenkins-distrib... You mention docker and it is super great for CI: it’s probably one of the widest used feature of Jenkinsfiles (you can specify what image or dockerfile you want a stage to run in - simple but powerful, as you probably know)
- Fewthp 8y agoGood to hear CloudBees seems on top of this issue. Seen multiple posts of you guys here :)
- chinhodado 8y agoLast I checked, there were a lot of little things that made it not possible to move to GitLab CI. E.g.: - Can't customize your git checkout process (e.g. shallow clone with depth, or merging source branch with target branch with certain strategy) - Can't make job run/not run based on filter on source branch/target branch/etc. of a merge request - Can't dynamically make certain jobs only run on certain agent machines So I'm still stuck with Jenkins for now. I know we love bashing Jenkins but I have yet to come across anything that offers the same amount of flexibility.
- yRetsyM 8y agoYou can definitely do all of your requirements, but likely as a result of recent features 1) you can customise the git checkout depth and style: https://docs.gitlab.com/ee/ci/yaml/#shallow-cloning https://docs.gitlab.com/ee/ci/yaml/#shallow-cloning https://docs.gitlab.com/ee/ci/yaml/#git-strategy https://docs.gitlab.com/ee/ci/yaml/#git-strategy 2) https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic 3) https://docs.gitlab.com/ee/ci/yaml/#tags https://docs.gitlab.com/ee/ci/yaml/#tags I'm not associated with gitlab at all but happy to give pointers if anyone wants to contact me direct
- saidmasoud 8y ago2) was released in October, about six months ago [0]. I'd also like to add: as a user of GitLab for about a year now, their steady rate of feature releases has bene pretty pleasant, even if I can't take advantage of some right away. [0] https://about.gitlab.com/2018/10/22/gitlab-11-4-released/#run-jobs-codeonlycodecodeexceptcode-for-modifications-on-a-path-or-file https://about.gitlab.com/2018/10/22/gitlab-11-4-released/#ru...
- chinhodado 8y agoI'm not sure that's what I needed. For example, I wanted to trigger a job only for a merge request, and only if the target branch of the merge request is e.g. master. Is that possible? Trigger a job only for a MR is possible, but I don't know how to further do the later branch filtering.
- paulcarroty 8y agoNO debug overs ssh, why I still use CircleCI.
- boleary-gl 8y agoGitLab Product Manager here I'm not super familiar with Circle CI's SSH debugging, but we do have a feature called "Interactive Web Terminals" https://docs.gitlab.com/ee/ci/interactive_web_terminal/ https://docs.gitlab.com/ee/ci/interactive_web_terminal/. This allows you to connect to a terminal in the running job on GitLab CI for debugging. Would love to understand how this does or does not meet your use-case here.
- paulcarroty 8y agoGreat, seems it does the job. 'Cause sometimes 'test passed'/'test failed' isn't enough, you should go deeper. CircleCI supports SSH connection for max 2h, then shutdown the task.
- chupasaurus 8y agoMultirepo pipelines behind a paywall is a good reason to say "No, thanks".
- azdacha 8y agowhat is your alternative please ?
- chupasaurus 8y agoIn one of the previous jobs I've used Jenkins Pipelines (and oh boy it was PITA to set it up in 2016) to handle jobs of different projects. On current one we are using Teamcity (still cheaper than Gitlab Silver license for us) which has the support of this feature as long as branch names have a common variable in their naming convention. I.e. Project1 has branches in form feature/TICKET_NAME or fix/TICKET_NAME, Project2 uses only TICKET_NAME, TeamCity VCS settings are based upon masks of branch names so ticket 12345 would be branch 12345 in P2 but fix/12345 or feature/12345 of P1 if one exists (priorities could be tweaked too).
- majkinetor 8y agoTBH, its easily done in shell via REST API. We use custom pipeline runner from simple Powershell scripts that works even better for us then default style. We set all jobs to manual and then our script triggers them depending on commit message, person, moon phase etc. But really, this should be in core. Its very hard to do multirepository stuff. Its not that easy to do mono repo stuff too - I really need a pipeline withint sub-project, a mother pipeline, option to run whatever one I want etc... Gitlb pipelines could be a lot better.
- hardwaresofton 8y agoI find it very easy to make multi-repo stuff, I've also wrote about it: https://vadosware.io/post/fun-with-gitlab-ci https://vadosware.io/post/fun-with-gitlab-ci Also, running pipelines in different projects and whenever you want is accessible from the web interface... It could be cleaner, but IMO adding even more syntax to the YAML file can also be a rabbit hole -- CURL from the script section seems like not a bad middle ground. Am I misunderstanding what is being referenced?
- amai 8y agoIs Gitlab CI available as standalone solution? I don‘t need a source code solution, just an CI solution.
- grzesiekb 8y agoIf you prefer to host your code on GitHub, it is fine! You can use GitLab CI/CD the way that you host your code on GitHub, but build, test and deploy from GitLab. Take a look at https://about.gitlab.com/solutions/github/ https://about.gitlab.com/solutions/github/! This is not a full standalone mode, because GitLab CI is a built-in solution that can not be easily separated, but might work for you.