.net持續集成cake篇之cake介紹及簡單示例

系列目錄html

cake介紹

Cake 是.net平臺下的一款自動化構建工具,能夠完成對.net項目的編譯,打包,運行單元測試,集成測試甚至發佈項目等等.若是有些特徵Cake沒有實現,咱們還能夠很容易地經過擴展Cake來實現咱們想要的功能.linux

Cake有如下特色web

1) 使用c#語言編寫,能夠在Cake腳本里使用C#語言來實現咱們想要達到的功能.shell

2) 跨平臺,能夠運行在windows,linux 和macos上.macos

3)易於擴展,c#開發者很容易使用已有的c#語言知識對Cake進行擴展,甚至可讓Cake支持Java,Python等語言的構建bootstrap

4) 易於和常見CI/CD平臺結合,Cake很容易和常見的CI/CD平臺,例如 Jenkins,AppVeyor, TeamCity, TFS, VSTS,Azure PipeLine等結合c#

5) 插件豐富,Cake官網和第三方開發者提供了豐富的Cake擴展工具,方便開箱即用.windows

新建一個Cake HelloWorld示例

本節咱們經過一個HelloWorld示例講解如何製做Cake文件,下載啓動腳本以及如何安裝Cake visualstudio插件服務器

一.新建一個Cake文件

咱們新建一個.net項目(能夠是類庫,控制檯或者web項目),這裏咱們建立一個控制檯項目,而後在項目sln所在目錄下新建一個名爲build.cake的文件.app

讀者能夠新建一個文本文件,而後的後綴改成cake,把文件名改成build,這樣也能完成一個build.cake的建立.固然也能夠經過執行Powershell命令New-Item build.cake來建立一個build.cake文件,使用powershell建立時必定要注意在當前項目所在目錄下打開powershell,否則以上命令合建的文件可能路徑並非咱們期待的.

有些讀者可能有疑問是否是這個文件必定要命名爲build.cake呢,答案是否認的,其實這個文件能夠隨意命令,可是做爲初體驗,強烈建議讀者不要隨便命令,而是跟着講解作,以避免形成沒必要要的麻煩

二.編輯build.cake文件

咱們新建build.cake後,用詞本(或者其它本身熟悉的編輯器打開它),添加如下代碼

var target = Argument("target", "Default");
var configuration = Argument("configuration", "Release");



Setup(ctx =>
{
    // Executed BEFORE the first task.
    Information("Running tasks...");
});

Teardown(ctx =>
{
    // Executed AFTER the last task.
    Information("Finished running tasks.");
});

Task("Default")
.Does(() => {
    Information("Hello World!");
});

RunTarget(target);

三.下載啓動腳本

Cake在windows下啓動腳本爲build.ps1(固然也能夠是其它名字),在linux和macos下爲build.sh

須要注意的是雖然Cake在macos和linux下啓動腳本都是build.sh可是並非如出一轍的,不一樣平臺要下載針對本平臺的啓動腳本.

因爲我是在windows下運行的,所以下載windows平臺對應的啓動腳本build.ps1

在項目build.cake所在目錄下,咱們打開powershell,而後執行如下命令Invoke-WebRequest http://cakebuild.net/download/bootstrapper/windows -OutFile build.ps1 便可下載啓動腳本

linux平臺下載方式:curl -Lsfo build.sh http://cakebuild.net/download/bootstrapper/linux

mac平臺下載方式 curl -Lsfo build.sh http://cakebuild.net/download/bootstrapper/osx

須要注意的是,必定要在當前目錄(sln所在目錄或者自已指定的其它目錄),若是是從開始菜單中啓動的powershell,必定要經過cd命令進入到目標目錄.

image

windows 10能夠在文件夾左上角點擊文件在彈出菜單中找到powershell,這樣啓動的powershell目錄就是在當前文件夾所在目錄

四.執行構建

咱們在當前目錄打開powershell,經過powershell,在powershell命令窗口裏輸入.\build.ps1執行剛下載的ps1腳本,過一分後咱們能夠看到輸出的構建信息

avatar

五.build.cake文件解析

初接觸build.cake咱們可能對它很陌生,不過不要懼怕,它徹底是用c#語言寫的,只是方法是自定義的.

build.cake裏共有三個任務,Setup,TearDown和Default,其中Setup任務會在全部任務執行以前執行,TearDown任務會在全部任務執行後執行,很是相似於Nunit裏的Setup和TearDown方法.有些時候咱們想在全部方法執行以前執行一些初始化工做,在全部任務執行完以後執行一些收尾工具,咱們能夠把相應代碼寫在SetupTearDown

Setup,TearDownDefault裏接收的都是一個委託,咱們可在在委託裏寫本身的代碼,委託裏的參數因爲目前咱們沒有使用到,這裏再也不講解.你們只要知道它的格式就好了.

Setup,TearDown是兩個特殊的任務,由cake自動調用,而Default任務須要顯地調用才能執行,咱們編寫其它任務時,能夠模仿Default任務.

在這裏,有些童鞋可能會有疑問,以上任務經過腳本也能完成,爲何還要這麼麻煩來使用工具呢,其實使用腳本有不少弊端,咱們前面介紹了一個完整的.net web項目在測試環境的持續集成方案,其中使用到了數十個腳本和工具,若是咱們的腳本編寫不夠嚴謹每每會形成生產環境的損失.而且從實踐上來看,腳本數量過多時每每容易失控.部署在服務器中腳本不少時候成爲燙手山芋,不熟悉的人既不想看,也不想改,更重要的是不敢輕易改.也不敢輕易把它移除或者刪除掉.另一個不可忽視的問題是腳本每每背後調用的是工具,工具又對運行環境有依賴.咱們在精心配置的一臺服務器上可能運行良好,可是換更換到其它的服務器上每每會由於各類條件不知足形成各類問題,在人手不足的狀況下這麼問題尤其凸顯.開發和運維都苦不堪言,開發腳本的初衷每每是爲了提升效率,結果因爲維護問題加深開發和運維之間的矛盾.而cake則由自身管理各類依賴,很大程度上解決了以上問題.

相關文章
相關標籤/搜索