我们使用Subversion for SCC。我们在我们的仓库中有很多构建环境,以便我们可以检查给定的版本,并重建它与当时正在使用的版本非常接近的版本。我们已经在那里现在以下几点:将Delphi 2010文件的最小集合移至SVN存储库进行编译
- InnoSetup二进制
- 第三方组件
- VCL(包括印)
- 我们的资料来源(当然)
- 的FinalBuilder项目文件
唯一缺少的是Delphi自身的二进制文件 - 我想知道是否有一组可以复制到存储库并运行的文件。
感谢
我们使用Subversion for SCC。我们在我们的仓库中有很多构建环境,以便我们可以检查给定的版本,并重建它与当时正在使用的版本非常接近的版本。我们已经在那里现在以下几点:将Delphi 2010文件的最小集合移至SVN存储库进行编译
唯一缺少的是Delphi自身的二进制文件 - 我想知道是否有一组可以复制到存储库并运行的文件。
感谢
如果你想创建一个可以很容易地复制的编译环境,你会更好建立一个虚拟机,并在网络共享托管,而不是试图处理成千上万的图像个人文件通过SVN服务器。
Delphi许可证在几个版本之前进行了更新,明确允许在构建PC上安装命令行编译器以执行自动构建,因此我同意梅森建议单独设置机器(虚拟是好的)做建造。
我可以成功做Delphi命令行构建后,从我已安装德尔福(2007年在我的情况下)的PC到一个单独的构建盒的PC上的以下树结构(文件夹和所有包含的文件和子文件夹)。似乎没有必要输入任何注册表项/值等。它对我来说工作得很好。
C:\Program Files
\CodeGear
\RAD Studio
\5.0
\bin\*.*
\lib\*.*
\source\*.*
\Common Files
\RAD Studio
\Shared Assemblies
\5.0\*.*
我希望德尔福2009/2010是相同/相似的。
我在我们的SVN存储库以及所有源代码中都有上述树结构,所以如果我建立了一个新的构建PC,我的大部分初始设置都只是在新构建的PC上正确地执行SVN Checkout 。
我们即将着手为Delphi 2010自己设置这一点。我们以前(当然也是)在我们的FinalBuilder自动化版本中使用了Delphi 2006。
在这种情况下,我们所做的只是复制了Delphi 2006本身的安装文件夹的内容(Program Files \ Borland \ BDS \ 4.0)。这就是一切,Bin,Lib ......很多(就像我们在开发机器上一样)。
开发机器和构建机器之间的唯一区别在于,Delphi并未实际安装在该机器上,但这并不影响运行命令行编译器的能力(这是我们在自动构建中使用的功能)。
我们不得不做的另一件事是手动创建一些注册表项,以便FinalBuilder能够检测并识别机器上的Delphi 2006的存在并提供所需的库路径等。我们通过导出必要的密钥/值从一个开发机器并导入到生成机器的注册表中(生成的.reg文件也是我们在存储库中构建配置的一部分)。
我不能说什么最低文件集是因为我们不关心节省磁盘空间,而只是采取一切“以防万一”。您可以通过减少一些脂肪来节省几MB,但与自动化构建环境(源代码,中间产品和编译产品等)的磁盘消耗相比,我怀疑节省的成本可以忽略不计,不值得一提。
谢谢 - 看到我的帖子在下面,我发现一些非常小的文件后挖了一圈。 – bcrooker 2010-06-15 14:44:32
好的 - 我想我有这个工作。我能够在未安装任何开发人员工具(RAD Studio,EurekaLog等)的VMware guest虚拟机下编译我们的应用程序。基本上我有一个编译器文件夹与这些文件:
原来你只需要几个文件。基本上这些文件:
02/05/2008 05:13 PM 89,088 BorDebug.dll 11/02/2009 06:02 PM 57,344 Borland.Build.Tasks.Common.dll 11/02/2009 06:02 PM 147,456 Borland.Build.Tasks.Delphi.dll 11/02/2009 06:02 PM 49,152 Borland.Build.Tasks.Shared.dll 11/02/2009 06:02 PM 20,480 Borland.Globalization.dll 08/19/2009 05:00 PM 22,370 CodeGear.Common.Targets 08/19/2009 05:00 PM 32,928 CodeGear.Delphi.Targets 11/02/2009 06:02 PM 1,328,128 DCC32.EXE 02/25/2010 08:17 AM 979,456 ecc32.exe 11/02/2009 06:02 PM 314,368 lnkdfm140.dll 02/25/2010 08:11 AM 40,960 Process.exe 08/19/2009 05:00 PM 75,264 rlink32.dll 06/15/2010 08:41 AM 185 rsvars.bat
也许我可以再剪一些这些文件了。我们还有一个包含所有内置VCL文件(基本上是lib和Indy10文件夹)和我们的第三方组件的组件文件夹。在德尔福,我做了库路径设置空白 - 这一步是关键。然后我将该库路径设置放在特定的项目选项中。我们使用环境变量来指定内置文件和第三方文件的位置。这些环境变量是在RAD Studio中设置的,然后在执行发布编译时可以通过命令行进行设置。因此,我们有一个BAT文件是这样的:
SET BDS=C:\_Releases\Compiler SET COREFILES=C:\_Components\D2010 SET COMPONENTS=C:\_Components SET LANGDIR=EN
我们的库路径看起来是这样的:
$(COREFILES)\lib;$(COREFILES)\Indy10;$(COMPONENTS)\EurekaLog;$(COMPONENTS)\Jcl\source\common;$(COMPONENTS)\Jcl\source\windows
现在我们只是拥有的MSBuild和原始文件上面我所描述的处女VMware的会议可以调用这些命令:
msbuild project.dproj -t:rebuild /p:config=Release ecc32 --el_alter_exe"project.dproj"
哪些构建我们的应用程序。诚然,我们只是使用Delphi32个性来简化事情,但对于我们来说,我认为这将会很棒。
感谢您的回应 - 我们一定希望将它保留在SVN中,因为我们的开发人员位于不同的位置,但SVN可供所有人(通过多因子VPN)访问。 – bcrooker 2010-06-15 14:42:26