2010-06-15 70 views
3

我们使用Subversion for SCC。我们在我们的仓库中有很多构建环境,以便我们可以检查给定的版本,并重建它与当时正在使用的版本非常接近的版本。我们已经在那里现在以下几点:将Delphi 2010文件的最小集合移至SVN存储库进行编译

  • InnoSetup二进制
  • 第三方组件
  • VCL(包括印)
  • 我们的资料来源(当然)
  • 的FinalBuilder项目文件

唯一缺少的是Delphi自身的二进制文件 - 我想知道是否有一组可以复制到存储库并运行的文件。

感谢

回答

2

如果你想创建一个可以很容易地复制的编译环境,你会更好建立一个虚拟机,并在网络共享托管,而不是试图处理成千上万的图像个人文件通过SVN服务器。

+0

感谢您的回应 - 我们一定希望将它保留在SVN中,因为我们的开发人员位于不同的位置,但SVN可供所有人(通过多因子VPN)访问。 – bcrooker 2010-06-15 14:42:26

1

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 。

+0

谢谢 - 我能够找到编译所需的最小文件集(约2打,全部来自BIN文件夹)。我们已经有了SVN中的lib文件夹。没有别的东西显然是需要的。 – bcrooker 2010-06-15 15:16:48

+0

我很想知道bin \文件子集是什么。请你能发布吗?我们在构建时包含VCL源代码,所以这对我们包含在SVN中很有用。 – 2010-06-15 20:52:02

+0

看到我的文章上面的列表。这与FinalBuilder中的MSBuild动作结合在一起,并且工作起来非常棒。 – bcrooker 2010-06-17 01:22:10

2

我们即将着手为Delphi 2010自己设置这一点。我们以前(当然也是)在我们的FinalBuilder自动化版本中使用了Delphi 2006。

在这种情况下,我们所做的只是复制了Delphi 2006本身的安装文件夹的内容(Program Files \ Borland \ BDS \ 4.0)。这就是一切,Bin,Lib ......很多(就像我们在开发机器上一样)。

开发机器和构建机器之间的唯一区别在于,Delphi并未实际安装在该机器上,但这并不影响运行命令行编译器的能力(这是我们在自动构建中使用的功能)。

我们不得不做的另一件事是手动创建一些注册表项,以便FinalBuilder能够检测并识别机器上的Delphi 2006的存在并提供所需的库路径等。我们通过导出必要的密钥/值从一个开发机器并导入到生成机器的注册表中(生成的.reg文件也是我们在存储库中构建配置的一部分)。

我不能说什么最低文件集是因为我们不关心节省磁盘空间,而只是采取一切“以防万一”。您可以通过减少一些脂肪来节省几MB,但与自动化构建环境(源代码,中间产品和编译产品等)的磁盘消耗相比,我怀疑节省的成本可以忽略不计,不值得一提。

+0

谢谢 - 看到我的帖子在下面,我发现一些非常小的文件后挖了一圈。 – bcrooker 2010-06-15 14:44:32

3

好的 - 我想我有这个工作。我能够在未安装任何开发人员工具(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个性来简化事情,但对于我们来说,我认为这将会很棒。

相关问题