Cake 0 C Make自動化構建 簡介

2022-01-11 16:41:42 字數 2745 閱讀 6555

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

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);

指令碼可以說是非常簡單易懂,相信有c#基礎的應該非常容易理解。

首先,建立了乙個引數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...