2010-11-08 144 views
2

我知道我可以編寫自己的自定義活動(用C#)來在構建過程中執行自定義邏輯。我的理解是,Powershell也可以使用,但我不確定它適合在哪裏。我理解Powershell用於執行命令行命令,但是如何以及在哪裏使用它來自定義構建過程?TFS構建 - PowerShell或自定義活動?

感謝

回答

4

是否使用PowerShell或定製活動的決定對我來說是基於誰負責。如果您有一個由構建主人(針對TFS)創建的活動,並且因此可以爲組織中的所有團隊重用,我將創建一個自定義活動。

如果項目團隊負責(例如部署腳本),我使用powershell。我創建了一個參數,讓團隊可以輸入需要執行部署的powershell腳本的路徑。項目團隊可以選擇在該參數中輸入值。項目團隊也可以在沒有構建主人的幫助下自行維護他們的PowerShell部署腳本。

因此,在短期:

  • 可重用的活動:自定義活動
  • 活動只球隊:PowerShell的
+0

因此,從本質上講,PowerShell腳本是自定義活動的替代品,並且看起來兩者都具有相同的用途。我可以混合搭配PS和活動嗎?我可以從自定義活動調用PS腳本嗎? – DotnetDude 2010-11-08 21:47:39

+0

在自定義活動中,您可以訪問構建中的所有參數和變量。所以它不是替代品。你可以混合使用它。 – 2010-11-09 04:53:38

+0

要調用PS腳本,最簡單的方法是打開構建過程模板並向構建過程模板添加一個新參數以傳遞所需的腳本。添加convertWorkspace活動以將版本控制路徑中的路徑轉換爲本地路徑。然後添加一個新的InvokeProcess活動,它使用參數「'@」「執行Powershell。 – 2010-11-09 04:56:57

1

對於我來說,PowerShell是要走的路。這裏是我的理由:

  1. 腳本獨立性:

你得到使用這種方法的腳本獨立性。例如:我有一些腳本的生成後運行(即編譯)過程已完成:

  • 實例化數據庫
  • 部署數據庫代碼
  • 部署Web應用程序
  • 驗證部署
  • 運行驗收測試

以上所有功能都可以獨立啓動,調試和測試,無需排隊新建。

  1. PowerShell是容易的工作:

自定義組件往往有很多的複雜性和片狀的添加到解決方案。示例:從TFS 2010升級到TFS 2012非常痛苦,因爲所有的構建模板都破壞了。我們必須重新編譯我們所有的定製程序集,並且只有團隊中的一個開發人員知道如何設置TFS Build來運行我們的定製活動。我最近從構建模板中刪除了所有自定義程序集,並且僅使用Powershell。

我已經定製了我的流程模板,以在TFS構建完成後調用用戶定義的powershell腳本。我通過在構建定義中使用路徑參數來完成此操作。這個參數只是一個指向腳本的字符串數組。我同意上面的Ewald,TFS不會將構建參數傳遞給腳本。爲了解決這個問題,在我的工作流模板中,我解析了字符串數組中的每個腳本,並用構建參數替換了衆所周知的標記 - 例如@(BuildNumber),@(SourcesDirectory)等。我覺得這是一個非常簡單和可靠的解決方案。

相關問題