by jstoja on 1/25/17, 9:49 AM with 30 comments
What are you using? What criterias did drive this choice? Would you do it differently?
by rabbitfang48 on 1/25/17, 4:19 PM
GitLab's CI has a pipeline design, so (like Jenkins) you can have some jobs wait for other jobs to complete and use their build artifacts (e.g. have a single build job that downloads deps and compiles everything so later jobs don't need duplicate that work), and you can have jobs only be triggered manually instead of on every push.
It's not perfect, though. For instance, unlike TravisCI, you don't have a build matrix, but you can use YAML tricks to define template jobs (see GitLab's own CI file [0] and a resulting pipeline [1]). If you use GitLab.com, you should be aware that they have downtime a few times each month, both planned and unplanned. For their planned downtime, it is often during the work day in the US timezones, and usually lasts between 10-30 minutes (though it has been longer before). GitLab.com is also used as a "testing in production" environment for their monthly releases, so you will occasionally run into bugs (usually nothing showstopping though; mostly minor annoyances).
I think that what you choose greatly depends on what you need. GitLab CI is a little opinionated, but it is still pretty flexible and usable for a large number of work cases. If you need a ton of customizability, Jenkins could be a better option (with plugins). GitLab CI is a lot easier to setup, however.
GitLab CI also has CD features that you can look into (I don't use them myself). They are also constantly (i.e. every 22nd of the month) releasing new versions, and most of their features are open source.
[0]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/.gitlab-...
[1]: https://gitlab.com/gitlab-org/gitlab-ce/pipelines/6014043
by gitlabfan on 1/25/17, 4:55 PM
by hhandoko on 1/26/17, 5:02 AM
I chose Codeship since it was the only one (at the time) that had BitBucket integration. The free tier (100 builds / mo) was more than enough for my side projects. In addition, it supports a lot of deployment targets (e.g. ElasticBeanstalk and Heroku).
I use Travis CI for open source projects initially since it is what everyone uses :) However, one feature that I find really useful is the test matrix. I used it to test my project against different Java version and Cassandra distribution versions [4].
I use AppVeyor on one of my side project (which lies dormant now) since needing to test against both *nix and Windows build (a .NET / Mono web application).
[1] - https://codeship.com/
[2] - https://travis-ci.org/
by johnnycarcin on 1/25/17, 11:50 PM
You don't have to use TFS as the backend as git is supported and all of your build and release stuff is under the same roof. They have added a lot of "tasks" for most of the popular languages but worst case is you can always run shell commands to do stuff.
The UI leaves a bit to be desired (I think) but for the most part I can live with it.
Full disclosure, I work at MSFT but have been a Linux/Open Source/non-ms person for most of my career.
EDIT: With all of that being said I do like Gitlab because it offers many of the same features (code repo, builds, etc) and am using Gitea/Gogs on my own VM for repo mirroring from Github.
by hackerboos on 1/25/17, 6:41 PM
by Cpoll on 1/25/17, 4:42 PM
Biggest lesson for us: Avoid putting all your logic into Jenkins templates. You're not capturing your CI/deployment logic in version control, and this can cause problems down the road (we backed up Jenkins regularly, but versioning was a weak point).
Instead, do as much as you can in scripts, and use Jenkins as a glorified crontab (+webhooks).
by Philomath on 1/25/17, 11:25 PM
They might be slower than others, but imo all development is made locally so I don't mind if sometimes it takes more than 5 minutes (used to take longer but they have improved a lot!).
I've only waited for like 30 minutes once. I would definitely recommend it.
by SaltyVagrant on 1/25/17, 5:39 PM
Jenkins is okay but you have to really stay on top of the build environment (not just a specified in Jenkins itself but also the OS and tooling on the Jenkins server and build machines).
I'm in the process of building a new CI/CD pipeline and this time I'm using Concourse. This is a good fit because the target system is largely containerised (not that Concourse can't be used elsewhere, it can, but it's just a coincidental fit). Additionally, Concourse addresses the problem identified by Cpoll as, unlike Jenkins et al, Concourse pipeline, build plans, and tasks are 100% available for version control.
That all said, I can't comment on Concourse's foibles as I've not used it long enough to uncover them :)
by cauterized on 1/26/17, 10:09 PM
We ended up going with a service called Buildkite, which is almost a drop-in replacement. They even had docs specifically about migrating from Bamboo, and in general their documentation has been excellent.
We really like having full control over the test execution environment despite not being ready to start using Docker, and we've been pretty happy with the service itself as well as the tech support we've received. I might choose something else for a different company, but this is a very good fit for us.
by atsaloli on 1/27/17, 4:52 AM
I have to polish it yet but my notes for teaching GitLab CI (one-day course on the basics of it) are available at https://gitlab.com/atsaloli/gitlab-ci-tutorial and may help one get started with it.
by accraze on 1/26/17, 3:48 PM
by hitsurume on 1/25/17, 5:45 PM
by monty5811 on 1/26/17, 9:42 AM
by taqwasd1 on 1/25/17, 10:55 PM
I'm considering GitLab for the built in CI, as long as it works painlessly with Heroku.