簡體   English   中英

在構建服務器(CI服務器)上構建或重建

[英]Build or Rebuild on the build server (CI server)

我正在運行TeamCity來構建一個.NET項目(更精確的幾個項目)。

我應該使用Rebuild目標還是構建目標?

我想最小化構建時間,而不是生成任何沒有更改的項目的更新版本。

這種安全做法是否使用“Build”目標? 如果以前的項目輸出被刪除怎么辦? 我如何驗證我可以安全地這樣做?

如果需要重建所有項目,則應使用rebuild ,例如為了獲得一致的時間戳或版本號(盡管通常,鏈接的AssemblyInfo.cs中的更改也會觸發構建。)

即使先前構建的構建輸出消失,或者即使構建恰好在沒有構建輸出的新構建代理上完成,構建也是完全安全的。 在這種情況下,將建立所有必要的項目。

但是,您可能在sln / csproj文件中有自定義MSBuild步驟,這些步驟依賴於(Re)構建,在這種情況下您需要更加小心,但除此之外,如果您願意,請轉到Build。

您應始終在Continuous Integration服務器上執行rebuild操作。

與您可能閱讀的內容相反,可能會將先前構建的泄漏轉移到當前構建中。 泄漏幾乎不是未能將源代碼編譯為二進制文件的結果,但是根據您用於執行構建的工具,可能存在無法復制的非代碼文件,因為它們已經存在於輸出目錄,或未刪除的已刪除文件。

出於類似的原因,如果您能承擔執行時間的成本,則還應始終在構建之前清理源樹。 要么銷毀它並簽出一份干凈的副本,要么還原任何更改並刪除任何不受源代碼管理的文件。 如果你不是在每次構建時都這樣做,至少要在“空閑時間”構建( 例如 ,隔夜或周末構建),以及你打算實際交付給客戶或部署到生產中的構建(最好是在QA中) )。

Build生成運行項目所需的所有內容,保留未更改的程序集。 重建強制完成任何涉及的程序集。 除非特定情況(版本號,某些事物的依賴過程),否則使用構建來減少花費的時間是安全的。

您應該使用Build來逐步構建項目。 這是完全安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM