2
我正在用rake構建一個新的.NET項目,使用神話般的albacore gem。我的組織仍在使用NAnt,並且有很多人希望在構建腳本執行時看到日誌文件。如何將轉儲到STDOUT的msbuild任務輸出保存到日誌文件中?如何將我的msbuild輸出結果從rake中輸出到日誌文件
我正在用rake構建一個新的.NET項目,使用神話般的albacore gem。我的組織仍在使用NAnt,並且有很多人希望在構建腳本執行時看到日誌文件。如何將轉儲到STDOUT的msbuild任務輸出保存到日誌文件中?如何將我的msbuild輸出結果從rake中輸出到日誌文件
我想出了一個解決方案。我們並不需要爲我們的CI服務器(hudson)建立日誌文件,但是當物理文件檢查構建在本地運行時,尤其是當我們正在執行簽入舞蹈和構建失敗。
幸運的是,長鰭金槍魚足夠聰明地創建一個「.parameters」選項,它可以與任何命令行工具任務一起使用,以添加該任務未明確處理的參數。因此,例如,您可以向msbuild任務添加一個參數,以指定MSBuild的日誌文件。而且它會有點像這樣:
BUILD_REPORTS = 'BuildReports'
MSBUILD_EXE = "C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe"
directory BUILD_REPORTS
CLEAN.include BUILD_REPORTS
task :default => [:build]
desc "Build the solution"
msbuild :build => BUILD_REPORTS do |msb|
msb.properties :configuration => :Debug
msb.path_to_command = MSBUILD_EXE
msb.targets :Clean, :Build
msb.solution = "./mysolution.sln"
msb.parameters "/l:FileLogger,Microsoft.Build;logfile=" + log_file("build")
end
def log_file(log_file_name)
BUILD_REPORTS + log_file_name + ".log"
end
我們的Rakefile比稍微複雜一點,因爲它有做多的東西,但你的想法。
你如何運行你的rake任務?從CI服務器?從命令行?要麼 ? – 2010-06-25 17:05:12
嗨德里克 - 現在,我從命令行運行,很快我們就會把它連接到哈德森。我們已經說服人們,如果沒有物理日誌文件執行rake,哈德森將會很好。我想通過使用我的msbuild和nunit任務上的「.parameters」選項來記錄輸出,我滿足了對日誌文件的渴望。我很喜歡長鰭金槍魚!你們做得很好。 – dalesmithtx 2010-06-25 20:00:05
很酷。是的,我發現沒有真正需要從哈德森日誌文件,因爲哈德森捕獲所有的STDOUT到它自己的日誌。但如果你需要命令行,我想你可以將STDOUT重定向到一個文件中:rake >> build.log – 2010-06-26 01:23:40