DEV Community

Discussion on: Which tools are you using for CI and why?

intricatecloud profile image
Danny Perez

I've used Jenkins at 2 companies now. One jenkins instance was managed by a systems engineering team, and was supporting about 5 product teams with about ~250 jobs on it. All the jobs were configured manually, and the build agents were some desktop machines running out of the back closet. These built Android, Java, Ruby, JS apps.

At my current company we have a few different patterns. One is a Jenkins master with auto-scaled build agents running on EC2 managed by an internal tools team. Its got about 400 jobs building and testing containers, chef cookbooks, js, ruby. This supports about 8-10 teams.

The build agents are a generic AMI with multiple languages and runtimes installed on them. We then started relying on the automated tool installer plugins since they integrated neatly with Jenkinsfile. Jenkinsfile has been getting a lot more use as a pipeline-as-code tool, and the ability to run jobs inside of docker containers simplifies your build agent configuration so much. It generally doesn't do any deployments to production, so permissions are lax and the dev team is trusted to install whatever plugins you need. Sometimes things break, but its never that bad.

Theres one team with a Jenkins master hosted on EC2 with a Mac mini as a build agent for building/signing iOS apps. There's a another group of teams that each manage their own Jenkins master instance hosted on EC2 (~5-10). Theres another group of teams using AWS CodePipeline and CodeBuild for terraform and lambda builds/deployments. The open source stuff uses Travis.