日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用Azure DevOps Pipeline实现.Net Core程序的CI

發(fā)布時間:2023/12/4 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Azure DevOps Pipeline实现.Net Core程序的CI 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上次介紹了Azure Application Insights,實現(xiàn)了.net core程序的監(jiān)控功能。這次讓我們來看看Azure DevOps Pipeline功能。Azure DevOps Pipeline 是Azure DevOps里面的一個組件,對于12個月試用賬號同樣永久免費。

持續(xù)集成CI

持續(xù)集成指的是,頻繁地(一天多次)將代碼集成到主干。它的好處主要有兩個。

(1)快速發(fā)現(xiàn)錯誤。每完成一點更新,就集成到主干,可以快速發(fā)現(xiàn)錯誤,定位錯誤也比較容易。 (2)防止分支大幅偏離主干。如果不是經(jīng)常集成,主干又在不斷更新,會導(dǎo)致以后集成的難度變大,甚至難以集成。

持續(xù)集成的目的,就是讓產(chǎn)品可以快速迭代,同時還能保持高質(zhì)量。它的核心措施是,代碼集成到主干之前,必須通過自動化測試。只要有一個測試用例失敗,就不能集成。Martin Fowler說過,"持續(xù)集成并不能消除Bug,而是讓它們非常容易發(fā)現(xiàn)和改正。"
摘自阮一峰大神的blog

DevOps跟CI就不多介紹了。這里我們定個目標(biāo):當(dāng)我們提交代碼后,服務(wù)器自動編譯代碼,自動運行單元測試,自動發(fā)送成功失敗的郵件。

創(chuàng)建組織

開通Azure DevOps功能,第一步需要創(chuàng)建一個組織。

隨便取個組織名稱,區(qū)域還是那個套路,選近的,這里選東亞。

創(chuàng)建倉庫

點擊繼續(xù)之后頁面會跳轉(zhuǎn)到正式的Azure DevOps界面。首先需要創(chuàng)建一個項目。這里跟Github一樣,需要選擇私有還有公開,估計Azure DevOps后端其實就是使用了Github的服務(wù)。這里選一個私有的吧,取個項目名稱:devop_test ,還可以設(shè)置用戶名密碼等信息。

創(chuàng)建ASP.NET MVC項目

新建一個ASP.NET MVC項目,就默認(rèn)的示例項目就行。

為了讓pipeline執(zhí)行單元測試,所以我們新建一個單元測試功能,然后寫一個最簡單的單元測試方法。

[TestClass()]public class WeatherForecastControllerTests{[TestMethod()]public void GetTest(){var ctrl = new WeatherForecastController(null);var result = ctrl.Get();Assert.IsNotNull(result);}}

上傳代碼到倉庫

有了代碼之后我們要把代碼傳到倉庫里去。就是使用上面的倉庫的地址、用戶名、密碼。這是git的問題了,不多說了。那么上面是一些準(zhǔn)備工作,下面開始正式使用pipeline。

配置Pipeline

點擊左側(cè)的pipeline菜單,開始配置pipeline的導(dǎo)航。
第一步:需要配置代碼倉庫,選擇剛才的Azure Repos Git。當(dāng)然它還支持從Github或者別的地方拉代碼。

第二步:選擇剛才的devop_test倉庫。

第三步:開始配置yml。這個yml呢其實跟docker-compose的配置啊,dockerfile啊一樣,就是配置了一些列的任務(wù)(task)。

trigger: - master pool:vmImage: 'ubuntu-18.04' variables:solution: '**/*.sln'buildPlatform: 'Any CPU'buildConfiguration: 'Release' steps: - task: DotNetCoreCLI@2inputs:command: 'restore' - task: DotNetCoreCLI@2displayName: Buildinputs:command: buildprojects: '**/*.csproj'arguments: '--configuration $(buildConfiguration)' - task: DotNetCoreCLI@2inputs:command: testprojects: '**/*Tests/*.csproj'arguments: '--configuration $(buildConfiguration)'

大概講下這個yml配置了啥。
trigger:表示代碼的分支
vmImage:表示虛擬機的環(huán)境,是win還是linux。
variables:定義了一些參數(shù),后面的設(shè)置可以直接使用。
steps:步驟,里面每一個task就是一個步驟。
task:
command: 'restore' nuget包還原。
command: 'build' 編譯代碼。
command: 'test' 運行單元測試。
配置好yml之后點擊“SAVE AND RUN”就會執(zhí)行第一次pipeline的任務(wù)。運行之后任務(wù)會先進入隊列,等待一會就能看到任務(wù)是否執(zhí)行成功了。

下面這圖就表示任務(wù)執(zhí)行成功了。每一步綠色的勾勾,還有執(zhí)行了幾秒都會顯示出來。還可以看更加詳細(xì)的日志。

這個界面表示運行的單元測試的結(jié)果。成功了幾個,失敗了幾個,表示的都很清楚。

成功之后你的賬戶郵箱還會收到郵件通知,成功是綠色的。

前面都是成功的,我們故意把代碼寫個錯誤,然后直接提交代碼,看看build能不能過。

[HttpGet]public IEnumerable<WeatherForecast> Get(){var rng = new Random();return Enumerable.Range(1, 5).Select(index => new WeatherForecast{Date = DateTime.Now.AddDays(index),TemperatureC = rng.Next(-20, 55) //error ,去掉了一個逗號Summary = Summaries[rng.Next(Summaries.Length)]}).ToArray();}

改完代碼后提交上去??梢钥吹饺蝿?wù)會自己執(zhí)行,然后過一會出現(xiàn)了一個紅色的X。果然pipeline報錯了。點擊任務(wù)可以看到更加詳細(xì)的錯誤列表。

同時也受到了失敗的郵件通知。

總結(jié)

這次我們通過Azure DevOps Pipeline簡單演示了CI的整個過程。我們成功實現(xiàn)了一開始定的小目標(biāo):寫代碼>提交代碼>編譯>運行測試>發(fā)送通知。除了yml配置有點麻煩,整個過程也都是很簡單,而且是這個功能都是免費的。Azure DevOps pipeline除了CI,顯然還能實現(xiàn)CD,如何編譯docker鏡像,如果推送鏡像,如果部署鏡像,那么請看下篇吧。

關(guān)注我的公眾號一起玩轉(zhuǎn)技術(shù)???

總結(jié)

以上是生活随笔為你收集整理的使用Azure DevOps Pipeline实现.Net Core程序的CI的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。