What is the point of a “Build Server”? [closed]

2019-01-16 01:49发布

I haven't worked for very large organizations and I've never worked for a company that had a "Build Server".

What is their purpose? Why aren't the developers building the project on their local machines, or are they? Are some projects so large that more powerful machines are needed to build it in a reasonable amount of time?

The only place I see a Build Server being useful is for continuous integration with the build server constantly building what is committed to the repository. Is it I have just not worked on projects large enough?

Someone, please enlighten me: What is the purpose of a build server?

18条回答
smile是对你的礼貌
2楼-- · 2019-01-16 02:20

The reason given is actually a huge benefit. Builds that go to QA should only ever come from a system that builds only from the repository. This way build packages are reproducible and traceable. Developers manually building code for anything except their own testing is dangerous. Too much risk of stuff not getting checked in, being out of date with other people's changes, etc. etc.

Joel Spolsky on this matter.

查看更多
混吃等死
3楼-- · 2019-01-16 02:20

The build server is used to build everyone's code when it is checked in. Your code may compile locally, but you most likely won't have all the change made by everyone else all the time.

查看更多
Root(大扎)
4楼-- · 2019-01-16 02:20

A build server is used to schedule compile tasks (e.g. nightly builds) of usually large projects located in a repository that can sometimes take more than a couple of hours.

查看更多
仙女界的扛把子
5楼-- · 2019-01-16 02:21

I agree with the answers so far in regards to stability, tracability, and reproducability. (Lots of 'ity's, right?). Having ONLY ever worked for large companies (Health Care, Finance) with MANY build servers, I would add that it's also about security. Ever seen the movie Office Space? If a disgruntled developer builds a banking application on his local machine and no one else looks at it or tests it... BOOM. Superman III.

查看更多
萌系小妹纸
6楼-- · 2019-01-16 02:22

We use one so that we know that the production/test boxes have the same libraries and versions of those libraries installed as what is available on the build server.

查看更多
我欲成王,谁敢阻挡
7楼-- · 2019-01-16 02:24

What is their purpose?
Take load of developer machines, provide a stable, reproducible environment for builds.

Why aren't the developers building the project on their local machines, or are they?
Because with complex software, amazingly many things can go wrong when just "compiling through". problems I have actually encountered:

  • incomplete dependency checks of different kinds, resulting in binaries not being updated.
  • Publish commands failing silently, the error message in the log ignored.
  • Build including local sources not yet commited to source control (fortunately, no "damn customers" message boxes yet..).
  • When trying to avoid above problem by building from another folder, some files picked from the wrong folder.
  • Target folder where binaries are aggregated contains additional stale developer files that shoulkd not be included in release

We've got an amazing stability increase since all public releases start with a get from source control onto an empty folder. Before, there were lots of "funny problems" that "went away when Joe gave me a new DLL".

Are some projects so large that more powerful machines are needed to build it in a reasonable amount of time?

What's "reasonable"? If I run a batch build on my local machine, there are many things I can't do. Rather than pay developers for builds to complete, pay IT to buy a real build machine already.

Is it I have just not worked on projects large enough?

Size is certainly one factor, but not the only one.

查看更多
登录 后发表回答