Does "Continuous Integration" mean anything to your manager? That would be my suggestion as that is the primary reason for having a dedicated build machine, also it can hold the codebase for another use of a separate machine.
As an exercise ask the manager what machine would be suitable for being a build server? His machine? Another developer's machine? The cost of running that process on a developer's box would be bad.
For argument's sake, let's allow that a developer would run that on his/her machine. That is still probably a net positive over not having a build machine.
In a short time I suspect the manager and the team will realize a new machine is needed.
In spite of the Spolsky article referenced by someone else, the build machine does not have to be the fastest box... It can be a cast-off, second hand machine.
Once the team sees and experiences the benefits of a build server they will make the natural jump to a dedicated machine. (if they don't, then it is time to run)
Some specific reasons for it (As others have said)
Reproducibility and stability of the builds. It is imperative that the builds be consistent and repeatable. There is significantly more control over a build server than all the various developer machines. This allows developers to try Beta dev tools, etc without affecting a release/build.
Efficiency - using a dedicated build server frees up the CPUs of developer machines for developers.
I come from the mindset that servers should be designed to perform a specific task. An Active Directory Controller, for example, shouldn't double as a SQL sever.
From the prospective of resources available, it becomes difficult to balance the load between multiple server applications. A build server performing a build, for example, would affect performance of any other services on the box. It's likely that your build server will be used to build many different projects. Compilation and the plethora of tasks associated with a typical build (e.g., code analysis, unit testing, etc.) are expensive and CPU/disk intensive operations.
Additionally, have you ever noticed how your desktop becomes slower and less stable through time? This is often due to the of the number of applications that you install. Added dependencies and increased memory consumption will negatively impact the reliability of your servers.
Servers should be left clean and be designed to perform their specific task with as few interruptions as possible.
您希望构建尽可能快地运行,特别是当您正在进行持续集成或有大型构建过程时。 我们最近开始与 IT 部门发生争执,因为我们用于构建和测试的服务器变得太慢。 这主要是因为他们将它们全部作为虚拟机运行,并且每个主机上的虚拟机太多。 我们完整的构建过程(不是 CI 构建)现在需要半个多小时才能运行(其中大部分是部署,而不是编译),这让我们的 QA 人员很苦恼,因为他们必须等待构建太长时间。
You want your build to run as fast as possible, especially if you are doing continuous integration or if you have a large build process. We've recently started fighting with our IT department because the servers we use for building and testing are getting too slow. This is mostly because they have them all running as virtual machines and they've got too many virtual machines per host. Our complete build process (not CI build) is now taking over half an hour to run (most of this is deployment, not compile) and it's killing our QA staff as they have to wait entirely too long for a build.
Take the amount of time your build process takes to run (in hours), multiply that by the number of times per year it is run, then multiply that by the hourly rate of the people that sit waiting for the build to finish. In our organization that's in the tens of thousands of dollars. It certainly makes the case for spending a little on a build machine.
You can also include tests that run automatically after building, including unit tests and performance tests. The system can be configured to export a fully functional installer that can be made available on the intranet for other departments to download and use/test. This saves a lot of time and money if you have to do it every week or month.
Should you configure your build server to rebuild every time someone checks in a change, then you get the instant answer if everything actually builds or if something has been messed up.
For one its a reproducible environment, the phrase "But it works on my machine" will no longer be heard. It takes the load off the developer machines and ensures everyone is up to date and everything has been checked in.
Joel Spolskys article might be useful to you (a little past the middle where he talks about a daily build server).
Building is a CPU intensive process. The idea of a build server is that it sits there and builds after every checkin, to make sure nothing broke. If you put that on a computer with other resources, it's going to slow down everything else. Even if you virtualized it, it's probably going to be a problem.
The other thing is that you want a "clean" OS install so that other programs don't contaminate the computer by adding dependencies that client computers might not have.
If you only used it for nightly builds, I would think you'd be OK running a virtual machine to do it.
发布评论
评论(8)
“持续集成”对您的经理有什么意义吗? 这是我的建议,因为这是拥有专用构建机器的主要原因,而且它还可以保存代码库以供单独机器的其他用途。
Does "Continuous Integration" mean anything to your manager? That would be my suggestion as that is the primary reason for having a dedicated build machine, also it can hold the codebase for another use of a separate machine.
作为练习,询问经理什么机器适合作为构建服务器? 他的机器? 另一个开发者的机器? 在开发人员的机器上运行该流程的成本会很高。
为了争论起见,让我们允许开发人员在他/她的机器上运行它。 对于没有构建机器来说,这仍然可能是一个净积极因素。
我怀疑经理和团队很快就会意识到需要一台新机器。
尽管其他人引用了 Spolsky 的文章,但构建机器不一定是最快的盒子......它可以是废弃的二手机器。
一旦团队看到并体验到构建服务器的好处,他们就会自然地转向专用机器。 (如果他们不这样做,那么是时候运行了)
它的一些具体原因(正如其他人所说)
构建的可重复性和稳定性。 构建的一致性和可重复性至关重要。 与所有各种开发人员机器相比,对构建服务器的控制要多得多。 这允许开发人员尝试 Beta 开发工具等,而不会影响发布/构建。
效率 - 使用专用构建服务器可以为开发人员释放开发人员计算机的 CPU。
效率
As an exercise ask the manager what machine would be suitable for being a build server? His machine? Another developer's machine? The cost of running that process on a developer's box would be bad.
For argument's sake, let's allow that a developer would run that on his/her machine. That is still probably a net positive over not having a build machine.
In a short time I suspect the manager and the team will realize a new machine is needed.
In spite of the Spolsky article referenced by someone else, the build machine does not have to be the fastest box... It can be a cast-off, second hand machine.
Once the team sees and experiences the benefits of a build server they will make the natural jump to a dedicated machine. (if they don't, then it is time to run)
Some specific reasons for it (As others have said)
Reproducibility and stability of the builds. It is imperative that the builds be consistent and repeatable. There is significantly more control over a build server than all the various developer machines. This allows developers to try Beta dev tools, etc without affecting a release/build.
Efficiency - using a dedicated build server frees up the CPUs of developer machines for developers.
我的想法是服务器应该被设计来执行特定的任务。 例如,Active Directory 控制器不应兼作 SQL 服务器。
从可用资源的角度来看,平衡多个服务器应用程序之间的负载变得很困难。 例如,执行构建的构建服务器会影响机器上任何其他服务的性能。 您的构建服务器很可能将用于构建许多不同的项目。 编译和与典型构建相关的过多任务(例如,代码分析、单元测试等)是昂贵的并且是CPU/磁盘密集型操作。
此外,您是否注意到您的桌面随着时间的推移变得越来越慢且不稳定? 这通常是由于您安装的应用程序数量所致。 添加的依赖项和增加的内存消耗将对服务器的可靠性产生负面影响。
服务器应该保持干净,并被设计为在尽可能少的中断的情况下执行其特定任务。
I come from the mindset that servers should be designed to perform a specific task. An Active Directory Controller, for example, shouldn't double as a SQL sever.
From the prospective of resources available, it becomes difficult to balance the load between multiple server applications. A build server performing a build, for example, would affect performance of any other services on the box. It's likely that your build server will be used to build many different projects. Compilation and the plethora of tasks associated with a typical build (e.g., code analysis, unit testing, etc.) are expensive and CPU/disk intensive operations.
Additionally, have you ever noticed how your desktop becomes slower and less stable through time? This is often due to the of the number of applications that you install. Added dependencies and increased memory consumption will negatively impact the reliability of your servers.
Servers should be left clean and be designed to perform their specific task with as few interruptions as possible.
您希望构建尽可能快地运行,特别是当您正在进行持续集成或有大型构建过程时。 我们最近开始与 IT 部门发生争执,因为我们用于构建和测试的服务器变得太慢。 这主要是因为他们将它们全部作为虚拟机运行,并且每个主机上的虚拟机太多。 我们完整的构建过程(不是 CI 构建)现在需要半个多小时才能运行(其中大部分是部署,而不是编译),这让我们的 QA 人员很苦恼,因为他们必须等待构建太长时间。
将构建过程运行所需的时间(以小时为单位)乘以每年运行的次数,然后乘以等待构建完成的人员的小时费率。 在我们的组织中,这一数字为数万美元。 这确实证明了在构建机器上花一点钱的理由。
You want your build to run as fast as possible, especially if you are doing continuous integration or if you have a large build process. We've recently started fighting with our IT department because the servers we use for building and testing are getting too slow. This is mostly because they have them all running as virtual machines and they've got too many virtual machines per host. Our complete build process (not CI build) is now taking over half an hour to run (most of this is deployment, not compile) and it's killing our QA staff as they have to wait entirely too long for a build.
Take the amount of time your build process takes to run (in hours), multiply that by the number of times per year it is run, then multiply that by the hourly rate of the people that sit waiting for the build to finish. In our organization that's in the tens of thousands of dollars. It certainly makes the case for spending a little on a build machine.
您还可以包含构建后自动运行的测试,包括单元测试和性能测试。 该系统可以配置为导出功能齐全的安装程序,该安装程序可以在内网上提供给其他部门下载和使用/测试。 如果您必须每周或每月执行一次,这可以节省大量时间和金钱。
如果您将构建服务器配置为在每次有人检查更改时进行重建,那么如果所有内容都实际构建或某些内容被搞乱,您会立即得到答案。
You can also include tests that run automatically after building, including unit tests and performance tests. The system can be configured to export a fully functional installer that can be made available on the intranet for other departments to download and use/test. This saves a lot of time and money if you have to do it every week or month.
Should you configure your build server to rebuild every time someone checks in a change, then you get the instant answer if everything actually builds or if something has been messed up.
对于一个可复制的环境,“但它可以在我的机器上运行”这句话将不再被听到。 它减轻了开发人员计算机的负担,并确保每个人都处于最新状态并且所有内容都已签入。
Joel Spolsky 的文章 可能对您有用(中间稍过一点,他谈论了每日构建服务器)。
这个问题还有其他几个答案。
For one its a reproducible environment, the phrase "But it works on my machine" will no longer be heard. It takes the load off the developer machines and ensures everyone is up to date and everything has been checked in.
Joel Spolskys article might be useful to you (a little past the middle where he talks about a daily build server).
This question also has several more answers.
在他的 PC 上设置您的构建服务器,然后使用它进行持续集成构建,直到他理解为什么它需要自己的服务器;)
在他打电话给您的硬件供应商为您提供新服务器之前我给了一个小时。
Set your build server up on his PC and then use it for continuous integration builds until he understands why it needs its own server ;)
I give it an hour before he's on the phone to your hardware supplier to get you a new server.
构建是一个 CPU 密集型过程。 构建服务器的想法是,它坐在那里并在每次签入后进行构建,以确保没有任何问题。 如果你把它放在有其他资源的计算机上,它会减慢其他一切。 即使您对其进行虚拟化,也可能会出现问题。
另一件事是您需要“干净”的操作系统安装,以便其他程序不会通过添加客户端计算机可能没有的依赖项来污染计算机。
如果您只将它用于夜间构建,我认为您可以运行虚拟机来执行此操作。
Building is a CPU intensive process. The idea of a build server is that it sits there and builds after every checkin, to make sure nothing broke. If you put that on a computer with other resources, it's going to slow down everything else. Even if you virtualized it, it's probably going to be a problem.
The other thing is that you want a "clean" OS install so that other programs don't contaminate the computer by adding dependencies that client computers might not have.
If you only used it for nightly builds, I would think you'd be OK running a virtual machine to do it.