2010-06-15 48 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個性來簡化事情,但對於我們來說,我認爲這將會很棒。

相關問題