1

I was watching this video to learn about how to use Docker and Jenkins.

This guy immediately started talking about concepts I never heard before (well, I'm still in college), which really caught my attention.

I found that a Build Server is basically a CI server, which I know about. I couldn't find much about build farm and build team, but here go my guesses and questions about this concepts:

  • Build Server: a server running a CI application such as Jenkins.
  • Build Farm: a bunch of build servers?
  • Build Team: I feel this is the important part.
    • Build teams take care and configure build servers for developers?
    • What are they configuring? Jenkins? Why can't developers do it?
    • What does it mean that a Dev team asked the Build team to create a build environment so they can work?
    • Is configuring a build environment kinda like creating a container that has python, so developers can run Jenkins Jobs related to python on it?
    • Why is a specific team needed for this?
      • Because of the limited resources needed?
      • Because the build environment has to be deployed to specific servers and only the build team has access to those in order to save resources from abusive devs?
      • Because it is too hard to deploy a build environment on a docker container to a server remotely?

Any idea what's right and wrong about those guesses? Anything else to add here? I don't need every question to be answered. I just need some contextualization on the topic, nothing too deep.

4

Build Server: a server running a CI application such as Jenkins.

This is the server actually running the build. The build slave. Jenkins and other CI products don't always run the coordination software (Jenkins UI) on the same server, so I think there is a distinction

Build Farm: a bunch of build servers?

Yes

Build teams take care and configure build servers for developers?

Yes. They're creating an environment that can repeatedly and automatedly build the software and run tests. Testing is arguably the more difficult part because often tests have external dependencies that must be available. This can become fairly complex especially if using primitive tools, so it's natural for a large organization to create a team of "build engineers" dedicated to keeping the builds maintained across all their products.

What are they configuring? Jenkins? Why can't developers do it?

If Jenkins is being used, then they'll likely be responsible for configuring it, but it's also all the other details of the build and the automated tests that they'll need to architect, implement, and maintain. Many developers probably can do it, and in small organizations they probably will do it, but theoretically a build engineer is more experienced with builds then your average software developer and likely has devops and sysadmin experience.

What does it mean that a Dev team asked the Build team to create a build environment so they can work.

Developers may end up using the same build environment to build their software during development. I use the same docker images to deploy my software and test it locally that CI uses to build and run automated tests. Additionally the software process relies upon CI to work before a release can go out. The process is impeded if the build isn't working, so it makes sense that developers depend on the build team.

Is configuring a build environment kinda like creating a container that has python, so developers can run Jenkins Jobs related to python on it?

For containerized builds, that would be one component of the build, but you may need a whole stack of dependencies that are needed to run the automated tests (e.g. database, search engine, other services, cache, frontend, selenium, load-testing service, etc).

Why is a specific team needed for this?

In larger organizations, they have teams for a lot of things that developers could probably do reasonably well themselves (e.g. installers, documentation, UI, operations), but by organizing a team dedicated to builds you gain (ideally):

  • Standardization/uniformity across builds
  • Shared knowledge
  • Best practices
  • Wealth of experience
  • Better build uptime
  • Smoother development process
  • Amazing, thank you so much. I just have one doubt left. Let's say I'm a developer and I asked the build team for an environment. What do they give me? An Ip and a password to access the container/VM/Server? – AFP_555 Jul 28 '17 at 4:58
  • 2
    It really depends on their deployment strategy and what you intend by "environment". If you're asking for an environment for you to run the software locally they may give you docker images or a docker compose stack or a VM image or credentials to a server you can use. If you're asking for them to create a build environment for CI, they probably won't give you anything, but they'll show you how you can run the build in CI and check its status and stuff. – Samuel Jul 29 '17 at 1:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.