您可以一步一步构建吗?


14

joel测试

您可以一步一步构建吗?

我必须说我不能。我目前正在使用一个Web应用程序,该应用程序具有必须进行部署才能部署的项目的电子表格列表。所以我的问题是如何使它自动化?是否必须在整个组织范围内?提示/技术?


3
这取决于列表中的项目是什么?理想情况下,是的,您应该能够使其自动化。
没人

4
zh.wikipedia.org/wiki/Build_automation 顺便说一句:停留一个步骤太过分了:)
Mchl 2011年

各种各样-将文件移到上方,脚本出存储过程等-有14个步骤!
billy.bob 2011年

2
从不同的角度来看,您觉得清单上的哪些内容无法自动化?
Tyanna 2011年

1
如何自动化构建的问题不是主观的,应该在Stack Overflow上提出。该问题还应该包含有关所需任务的更多信息,以获得有用的答案。
David Thornley

Answers:


10

Make可以将构建过程自动化到一个步骤。Make几乎可以完成您想要的任何事情。我不确定为什么札幌认为Make仅适用于C / C ++。您可以使用make运行任何类型的命令。尽管它通常用于编程,但它甚至与编程无关。


2
使是“瑞士军刀”这类工具之一;喜欢与它合作。指出make有用之处的另一件事是,如果要使构建/过程/等自动化,并且一个或多个步骤成功地取决于另一个步骤,则make将在该步骤失败时停止,不允许其他步骤继续执行,可能会引起问题。
威尔

1
由于许多'nix应用程序/系统都是通过'./configure安装的;使; make install”,我认为make也可以兼作安装引擎。如果可以做到,我也确信它可以解决OP的各种问题。
JBR威尔金森

Make,但语法非常晦涩。迄今为止,我已经遇到了两种选择:SCons(比Make + makedepend容易得多)和自动创建Makefile的工具(专有)。
Matthieu M.

@JbRWilkinson ...就像我说的,make可以做几乎任何您想做的事;)
Pemdas 2011年

3

根据您的环境,您可能要看一下Make(C / C ++),Ant / Maven(Java),Gradle(Groovy)-这是我所熟悉的。很有可能为您的环境提供流行的解决方案。


它是一个
ASP.NET/SQL

@ m.edmondson-那么cruisecontrol.sourceforge.net可能是您要走的路
bobah 2011年

TeamCity是ASP.NET的另一个很好的持续集成环境。我使用过CruiseControl和TeamCity,发现TeamCity易于使用,功能更强大。但是,情况可能不再如此。
RationalGeek

NANT是.NET ANT变体,我们已经很好地使用它作为Cruise Control的补充,我不会用它来构建用于部署的代码,在该部署中,您倾向于想要一些其他的东西,包括/调整/参数设置和更改等等。 。这就是ANT / NANT擅长的。
乔恩·霍普金斯

我第二个@Jon Hopkinds建议-Nant非常适合您的环境。
JBR威尔金森2011年


0

当然,有一种方法可以自动化。借助Chef之类的工具,设置全新的新安装服务器就可以像以下操作一样简单:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

就我而言,该单个命令执行的一些步骤是:

  • 安装所需的库,程序和Python模块
  • 创建具有指定访问权限的新用户
  • 创建新数据库,加载所需的架构,设置所有权和访问权限
  • 下载并暂存项目代码,然后写出配置信息
  • 通过启动数据库服务器,设置cron作业等使一切进入生产模式。

由于Windows支持被列为“初步”,因此我不确定Chef在您的环境中的性能如何,但是对于基于UNIX的系统,这是蜜蜂的膝盖。

Puppet是一个比Chef稍旧的类似系统,可能会提供更好的Windows支持。


0

在Java世界中使用Maven很简单

mvn clean deploy

在我们的配置中,这将完成WAR文件的所有必要构建(根据需要拉入JAR依赖项),将其部署到dev Web服务器并在dev数据库上创建固定的测试数据。一旦到位,Maven将通过SeleniumRC处理全面的功能测试,以验证应用程序是否正常运行。

这个命令可以将应用程序完全部署到开发服务器集群,因此其他开发人员可以立即使用它(假定它通过了测试)。开发人员部署失败的原因很罕见,因为开发人员已验证它可以在本地使用mvn clean install

然后将快照工件(WAR)复制到Maven存储库中,以便与其他开发人员共享(按照标准Maven deploy行为)。

好的,但是您只为开发人员部署了快照,那么测试和生产呢?

分发到测试和(或更高版本)生产服务器是通过Maven发布过程来处理的,我们希望手动进行处理,以确保有人监视任何可疑的输出。测试人员仅使用发布的工件,而不使用快照。

发行后,将使用简单的构建脚本将WAR文件通过SFTP发送到测试服务器群集,再次有人监视该过程以确保没有问题。

最终,在所有测试人员满意之后,将未更改的WAR文件通过SFTP传输到故障转移生产服务器群集,并在灾难发生时密切注意并立即回滚位置。


0

我想我可以从Joel测试中检查一个,所以...

我使用pychron在python 中将构建服务器自动化了。

该代码已从命令行与VSS同步,使用borland make进行构建(大多数IDE都会为您创建make文件,无论它们是否调用它们。Delphi过去都抽出make文件并将其称为.BPG文件,现在它们是重新生成MSBuild XML文件,您就可以使用MSBuild),并且错误被放入了我一直添加到的XML文件中。

所以..只需编写一个批处理文件并执行这些操作。

  1. 从源代码管理同步代码
  2. 删除您知道的愚蠢的东西(项目的单个配置文件)会阻止您构建所有东西。
  3. 构建所有内容(我将构建所有内容,使所有人成为兄弟)。
  4. 记录错误,警告和其他内容,但不要停止构建。(如果您真的很聪明,您将提取最后一个人的名字,以检入导致构建中断的文件并发送给他一个讨厌的图)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.