cake是c# make的縮寫,是乙個基於c# dsl的自動化構建系統。它可以用來編譯**,複製檔案以及資料夾,執行單元測試,壓縮檔案以及構建nuget包等等。
熟悉大名鼎鼎的make的小夥伴,應該已經知道cake大致是個什麼樣的工具了,cake具有以下幾個特點:
方便編寫:使用基於c#的dsl,非常易於編寫自動化的指令碼。
跨平台: 基於roslyn和mono來編譯我們寫的自動化指令碼,使得它可以執行在windows,linux,mac上。
豐富的工具集:支援msbuild,mstest,xunit,nunit,nuget,ilmerge,wix和signtool等等,以及支援豐富的外掛程式(cake addins)。
開源:基於mit開放源**(cake on github),並且是.net **會支援的乙個專案(cake on dotnet foundation)。
筆者在github上建立了乙個簡單的demo(cake.demo),下面簡單的介紹,專案非常簡單,乙個類庫專案,乙個測試專案,如下:
備註:當前筆者是基於windows平台,開發環境是vs 2017 community:新增乙個文字檔案build.cake(檔名隨意,筆者懶調整build.ps1中指定的cake指令碼檔案而已。完整檔案:
這一步我們用cake來build以下我們上面的cake.demo這個專案。檔案內容如下:
1 ///args指令碼可以說是非常簡單易懂,相信有c#基礎的應該非常容易理解。2 var target = argument("target", "default");
3 4
5 ///build task
6 task("build")
7 .does(() =>
8 );
12 });
13 14
15 task("default")
16 .isdependenton("build");
17 18
19 ///run task
20 runtarget(target);
首先,建立了乙個引數target(名字和build.ps1中指定的引數名一致),預設值是「default」。
其次,建立了乙個名為build的task,這個task呼叫msbuild來build我們的專案。
然後,建立了乙個名為default的task,它什麼都沒乾,只是標識說我依賴乙個為build的task,含義就是在執行default的task之前,會先執行build的task。
最後,用runtarget來執行指定名字的task。
原因是我的乙個demo.tests這個專案引用了xunit的包,msbuild沒能正確的還原nuget包,這不知道算不算乙個bug,筆者之前用 cake的msbuild來build vs2015的專案的時候是沒有問題的,當前環境只安裝了vs2017。不過也正好,我們再用cake來寫乙個還原nuget包的task。
1 ///nuget task再執行一次:2 task("restore-nuget-packages")
3 .does(() =>
4 );
這次可以了。
然後我們再依次的新增幾個task,清理build的檔案:
1 task("執行單元測試:clean")
2 .does(() =>
3);
1然後執行一下:///unit-test task
2 task("
unit-test")
3 .isdependenton("
build")
4 .does(() =>
5);
僅清理專案的build生成的檔案。
得益於cake基於c#dsl來編寫指令碼,相比寫powershell或者其他的指令碼來完成自動化構建,使得c#開發人員非常容易上手。
其次cake基於roslyn和mono,使得它可以提供跨平台的自動化構建,也可以執行在各種常用的ci系統之上。
再者cake提供了豐富的內建工具集以及外掛程式(cake addins),可以滿足我們絕大部分的自動化構建需求,比如,編譯,測試,打包,部署等等。
例如前些日子我的乙個web的demo專案(使用cake來部署iis站點。
make
c# make
cake addins
cake on github
cake on dotnet foundation
cake.demo
Gulp 自動化構建
use gulp 官網 編譯 sass 合併優化壓縮 css 校驗壓縮 js 優化新增檔案指紋 md5 元件化頭部底部 include html 實時自動重新整理 gulp是前端開發過程中對 進行自動化構建的利器。它不僅能對資源進行優化,而且在開發過程中能夠通過配置自動完成很多重複的任務,讓我們可以...
自動化構建Jenkins fastlane
參考 自動化查詢描述檔案 安裝之前 對應的uuid 參考鏈結 檢視簽名檔案,teamid 描述檔案路徑 相互關係 命令列提示沒有登入 jenkins的工作區目錄 jenkins環境配置 同道中人 shell 報錯倉庫位址 配的那個token不是用來登入git倉庫的原始碼管理的憑據和 api的憑據不是...
jenkins自動化構建搭建
使用jenkins搭建自動化部署方案,可以省去不斷的去部署工程工程的麻煩,也有利於管理稍大團隊的開發。主要步驟有 以j a為主 1.在伺服器中搭建搭建開發環境j a的jdk和m en。3.採用命令列 j a jar jenkins.war啟動jenkins,訪問 http localhost 808...