gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  軟件開發(fā)一般來說是一項(xiàng)團(tuán)隊(duì)作業(yè),在本系列文章開始就提到過軟件的編碼是由一個(gè)團(tuán)隊(duì)“并行”完成的,為了保證編碼任務(wù)正常完成,首先引入版本控制工具來完成代碼管理,為了保證代碼質(zhì)量引入了代碼分析器以及代碼測(cè)試。

  版本控制工具可以保證代碼有一個(gè)主版本,但代碼分析和測(cè)試均是開發(fā)人員手動(dòng)在本地完成的(通過編譯、執(zhí)行測(cè)試等方式),在進(jìn)行代碼分析和測(cè)試時(shí)可能并沒有將本地代碼更新到最新版本,這樣就會(huì)出現(xiàn)一個(gè)問題,當(dāng)多個(gè)開發(fā)人員向版本庫提交代碼時(shí),無法保證最新代碼庫的代碼是正確的,為了解決這個(gè)問題,提出了持續(xù)集成,持續(xù)集成的集成指的是持續(xù)的對(duì)多個(gè)開發(fā)人員編寫的代碼進(jìn)行集成,本文從下面幾個(gè)方面介紹持續(xù)集成以及基于Github進(jìn)行持續(xù)集成實(shí)踐:

  • CI&CD
  • 常用的持續(xù)集成工具
  • GitHub市場(chǎng)簡(jiǎn)介
  • 使用AppVeyor實(shí)現(xiàn)持續(xù)集成
  • 使用Codecov顯示代碼覆蓋率
  • 小結(jié)

CI&CD

  持續(xù)集成(Continuous integration,CI)指的是在開發(fā)過程中持續(xù)地將所有開發(fā)人員的代碼合并到代碼庫的主線上,然后對(duì)該主線代碼進(jìn)行編譯、測(cè)試運(yùn)行等操作對(duì)代碼進(jìn)行檢驗(yàn),其目的是盡可能早的發(fā)現(xiàn)代碼集成后導(dǎo)致的問題
  實(shí)現(xiàn)持續(xù)集成的要點(diǎn)主要有:共享的代碼庫、自動(dòng)化編譯、自動(dòng)化測(cè)試等,同時(shí)要保證合理的集成頻率,一般持續(xù)集成的時(shí)機(jī)在于開發(fā)人員將代碼提交到代碼庫時(shí)自動(dòng)進(jìn)行,但是如果提交過于頻繁,那么應(yīng)該使用時(shí)間間隔的形式進(jìn)行持續(xù)集成。
  持續(xù)發(fā)布(Continuous delivery,CD)實(shí)際上是持續(xù)集成上的一個(gè)拓展,在持續(xù)集成的基礎(chǔ)上將發(fā)布工作自動(dòng)化,避免人為操作從而減少發(fā)布時(shí)間和發(fā)布時(shí)人為造成的錯(cuò)誤

常用的持續(xù)集成工具

  持續(xù)集成經(jīng)過多年的發(fā)展,在不同的應(yīng)用場(chǎng)景、平臺(tái)/語言、商業(yè)化等因素下產(chǎn)生了許多持續(xù)集成工具,可參考(但不限于這些):  https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
  比較常用的持續(xù)集成工具有:
  Jenkins
  Jenkins是一個(gè)開源的跨平臺(tái)持續(xù)集成工具,它提供了GUI界面以及大量的拓展插件,通過GUI界面可以簡(jiǎn)單、快速的完成項(xiàng)目持續(xù)集成配置,更重要的是Jenkins支持所有的版本控制工具。
  項(xiàng)目地址:https://jenkins.io/

  TeamCity
  TeamCity是JetBrains公司開發(fā)的持續(xù)集成工具,它有免費(fèi)和收費(fèi)兩種授權(quán),免費(fèi)版本的TeamCity擁有所有功能,其限制僅僅是只能創(chuàng)建100個(gè)編譯配置和只能并行運(yùn)行3個(gè)代理。
  項(xiàng)目地址:http://www.jetbrains.com/teamcity/

  GitLab
  GitLab是一個(gè)Git的代碼管理工具,使用GitLab可以輕松的在Linux環(huán)境搭建一個(gè)Git的遠(yuǎn)程代碼托管平臺(tái),同時(shí)GitLab中也內(nèi)置的CI/CD功能。
  項(xiàng)目地址:https://about.gitlab.com/

  Travis CI
  Travis CI是一個(gè)持續(xù)集成托管平臺(tái),它為開源項(xiàng)目提供免費(fèi)支持,但Travis CI不支持Windows下編譯。
  項(xiàng)目地址:https://www.travis-ci.org/

  AppVeyor
  AppVeyor也是一個(gè)持續(xù)集成的托管平臺(tái),它支持Windows和Linux,并且AppVeyor可以對(duì)環(huán)境進(jìn)行定制:https://www.appveyor.com/docs/build-environment/,是一個(gè)非常強(qiáng)大的CI工具,AppVeyor對(duì)開源項(xiàng)目提供免費(fèi)支持。
  項(xiàng)目地址:https://www.appveyor.com/

  VSTS
  VSTS(Visual Studio Team Services)是微軟的軟件開發(fā)管理解決方案,它包含了代碼版本管理、持續(xù)集成/發(fā)布、敏捷等特性,并且VSTS為5人以下團(tuán)隊(duì)提供了免費(fèi)使用。
  項(xiàng)目地址:https://visualstudio.microsoft.com/zh-hans/team-services/

  總的來說持續(xù)集成工具分為可本地安裝和平臺(tái)托管兩類,本地安裝類型的工具適合有專用構(gòu)建服務(wù)器資源的閉源項(xiàng)目(當(dāng)然開源項(xiàng)目也可以使用),而托管平臺(tái)則比較適合開源或者沒有專用構(gòu)建服務(wù)器資源的項(xiàng)目,使用上托管平臺(tái)更加省心,這些工具需要根據(jù)實(shí)際情況來進(jìn)行選用。

GitHub市場(chǎng)簡(jiǎn)介

  GitHub作為一個(gè)分布式的軟件管理解決方案,它除了提供代碼托管外,還通過應(yīng)用市場(chǎng)的方式提供了拓展應(yīng)用,這些應(yīng)用主要用于持續(xù)繼承、部署、測(cè)試、代碼審查、項(xiàng)目管理等等,詳情查看:https://github.com/marketplace/
  下圖為Github市場(chǎng)中的CI工具:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  一般來說市場(chǎng)中提供的應(yīng)用對(duì)于開源項(xiàng)目都是可以免費(fèi)使用的,下面就介紹如何將Github上的開源項(xiàng)目使用其市場(chǎng)應(yīng)用完成持續(xù)集成。

使用AppVeyor實(shí)現(xiàn)持續(xù)集成

  AppVeyor是一個(gè)支持自定義持續(xù)集成環(huán)境的CI工具,它對(duì).Net程序的支持非常強(qiáng)大,同時(shí)對(duì)開源項(xiàng)目免費(fèi),所以AppVeyor是.Net Core項(xiàng)目持續(xù)集成的首選,下面就介紹如何使用AppVeyor完成持續(xù)基礎(chǔ):
  1. 在GitHub市場(chǎng)中找到AppVeyor,并完成安裝:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  2. 添加項(xiàng)目:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  選擇GitHub倉庫,并完成授權(quán):

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  添加需要的倉庫:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  點(diǎn)擊“NEW BUILD”進(jìn)行一次編譯:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  從編譯的信息可以看到,此次編譯失敗了,并且給出了相應(yīng)的錯(cuò)誤信息,這是由于編譯環(huán)境導(dǎo)致的。

  3. 環(huán)境配置:
  將編譯鏡像選擇為VS2017:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  在編譯前先執(zhí)行dotnet restore命令還原項(xiàng)目依賴:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  4. 開始一個(gè)新的編譯:
  編譯結(jié)果:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  從編譯結(jié)果可以看出Appveyor不僅僅是完成了編譯工作,而且還搜索了測(cè)試信息,并完成了測(cè)試。另外有一個(gè)要點(diǎn)是本項(xiàng)目中的測(cè)試是依賴數(shù)據(jù)庫的,這就意味著Appveyor的編譯環(huán)境提供了SQL Server數(shù)據(jù)的支持。

  5. 將編譯后的內(nèi)容發(fā)布到GitHub release:
  為xUnitTestDemo代碼庫添加一個(gè)Tag:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  然后Appveyor將會(huì)檢測(cè)到代碼庫的變化,自動(dòng)編譯Tag,并將結(jié)果部署到Github的Release中:

使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  自動(dòng)部署的Release內(nèi)容:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  關(guān)于appveryor部署的更多信息參考:https://www.appveyor.com/docs/deployment/

  6. 將編譯狀態(tài)顯示到GitHub上:
  Appveyor的Badges(標(biāo)記)配置界面中可以獲取到狀態(tài)標(biāo)記地址:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  將MarkDown的代碼復(fù)制到項(xiàng)目的README.md文件中:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  效果:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  7. 導(dǎo)出appveyor.yml文件以及通過appveyor.yml來完成配置:
  上面的方法是通過Appveyor的Web界面上完成配置的,除此之外還可以通過appveyor.yml文件來完成配置,appveyor.yml文件可以自己創(chuàng)建或?qū)С鲆延信渲茫?br />  導(dǎo)出已有配置:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  將appveyor.yml文件放置到代碼根目錄,并通過修改該文件來變更配置:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  上圖在原有配置基礎(chǔ)上修改為release的方式編譯代碼,并且指定生成結(jié)果目錄,將結(jié)果進(jìn)行壓縮。
  更多appveyor.yml配置可參考:https://www.appveyor.com/docs/appveyor-yml/

使用Codecov顯示代碼覆蓋率

  Codecov也是Github市場(chǎng)的一個(gè)應(yīng)用,它用于生成代碼覆蓋率報(bào)告,codecov對(duì)C#的支持是基于OpenCover的(使用OpenCover檢測(cè)代碼覆蓋率參考:好代碼是管出來的——.Net Core中的單元測(cè)試與代碼覆蓋率),Codecov對(duì)Github的公開項(xiàng)目是免費(fèi)的,下面就開始介紹如何使用codecov來實(shí)現(xiàn)測(cè)試代碼覆蓋率的統(tǒng)計(jì):
  1. 安裝Codecov:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  注:安裝完成Codecov后,會(huì)有一個(gè)Upload Token用來將代碼覆蓋報(bào)告上傳到Codecov,但Appveyor的公共倉庫可以不需要:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  2. 修改appveyor.yml文件:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  添加使用choco管理器安裝OpenCover及codecov,然后在test_script中添加代碼覆蓋率分析報(bào)告以及上傳腳本。
  注:當(dāng)上述變更push到Github后,Appveyor將開始自動(dòng)編譯并完成包括代碼覆蓋率報(bào)告生成、上傳等所有工作,此時(shí)打開codecov頁面將會(huì)看到報(bào)告信息:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  3. 在README.md文件中添加Codecov的標(biāo)簽:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

 

   使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

  結(jié)果:

  使用GitHub實(shí)現(xiàn)簡(jiǎn)單的CI/CD

小結(jié)

  本文介紹了CI和CD的基本概念,前者目的在于盡可能早的發(fā)現(xiàn)多人開發(fā)時(shí)代碼集成的錯(cuò)誤,而后者目的是避免人為造成的錯(cuò)誤,將一些重復(fù)的事情交由程序自動(dòng)完成,既可以減少成本又可以提高正確率,現(xiàn)在流行的DevOps的基礎(chǔ)之一就是自動(dòng)化也就是CI和CD。
  另外本文還介紹了在Github上使用Appvoyer和Codecov工具實(shí)現(xiàn)了簡(jiǎn)單的持續(xù)集成,當(dāng)把新代碼推到GitHub倉庫時(shí),Appvoyer會(huì)自動(dòng)的完成一系列構(gòu)建操作。Appvoyer是一個(gè)非常強(qiáng)大的CI工具,對(duì)C#的支持也非常好可以選擇VS版本(包括預(yù)覽版),多種數(shù)據(jù)庫(包括Linux下的SQL Server),所以在執(zhí)行測(cè)試時(shí)依賴數(shù)據(jù)庫的測(cè)試也能通過。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
国产精品久久中文字幕| 在线观看日本www| 大地资源第二页在线观看高清版| 青青青在线观看视频| 91香蕉视频污版| 久草热视频在线观看| 久久av喷吹av高潮av| 日本激情综合网| 1024精品视频| 免费成人在线视频网站| www.国产亚洲| 国产青草视频在线观看| 国产精品啪啪啪视频| 午夜xxxxx| 91欧美一区二区三区| 黄色一级片免费的| 午夜精品在线免费观看| 成人久久久久久久久| 免费黄色日本网站| 成年人黄色片视频| 日韩中文字幕免费在线| av视屏在线播放| 性生活免费在线观看| 可以看污的网站| 伊人国产精品视频| 400部精品国偷自产在线观看| 免费久久久久久| 日韩视频 中文字幕| 青青视频免费在线观看| 水蜜桃色314在线观看| 欧美亚洲国产成人| 国产v亚洲v天堂无码久久久| 日本 片 成人 在线| 视频在线观看免费高清| 欧美日韩在线免费观看视频| 9999在线观看| 日本精品久久久久久久久久| 女人喷潮完整视频| 国产小视频精品| 成年人视频大全| 日韩欧美视频网站| 粉色视频免费看| 国产精品视频网站在线观看| 无码aⅴ精品一区二区三区浪潮 | 日韩 欧美 视频| 欧美一区二区中文字幕| 天天干在线影院| 亚洲精品偷拍视频| 又粗又黑又大的吊av| 自拍偷拍一区二区三区四区| 亚洲激情免费视频| 亚洲成人福利在线观看| 欧洲精品视频在线| 黄色一级二级三级| 亚洲精品天堂成人片av在线播放 | 精品久久久久久无码国产| 艹b视频在线观看| youjizz.com在线观看| 成人在线观看黄| 可以在线看黄的网站| 天天爽天天爽夜夜爽| 日韩精品一区在线视频| 手机av在线免费| 日韩人妻精品无码一区二区三区| 老司机久久精品| 一女被多男玩喷潮视频| 欧美 国产 精品| xxww在线观看| 北条麻妃在线一区| 丝袜人妻一区二区三区| 天天干天天操天天干天天操| 国内自拍视频一区| 波多野结衣家庭教师在线| 亚洲免费视频播放| 午夜视频在线网站| 丁香婷婷激情网| 国产精品无码av在线播放| 警花观音坐莲激情销魂小说| 日韩av在线中文| 热久久精品免费视频| 日韩欧美国产免费| 日本在线xxx| 欧美日韩福利在线| 人妻激情另类乱人伦人妻| 欧美国产在线一区| 成人免费黄色av| 国产又粗又猛大又黄又爽| 久久撸在线视频| 热久久精品免费视频| aaa毛片在线观看| 成人在线看视频| 凹凸日日摸日日碰夜夜爽1| 免费在线激情视频| 日本精品久久久久中文字幕| 免费午夜视频在线观看| 999香蕉视频| 国产视频手机在线播放| 亚洲欧美自拍另类日韩| 自拍偷拍21p| 亚洲理论中文字幕| 国内精品国产三级国产99| 亚洲国产精品女人| 成人在线免费观看视频网站| 欧美一级欧美一级| 漂亮人妻被中出中文字幕| 日本老熟妇毛茸茸| 91精产国品一二三产区别沈先生| 黄色片免费网址| wwwwww欧美| 无码人妻丰满熟妇区毛片18| 日本888xxxx| 国产精品无码乱伦| 亚洲人精品午夜射精日韩| 爆乳熟妇一区二区三区霸乳| 亚洲高清在线不卡| av日韩在线看| 成年人在线观看视频免费| 午夜啪啪小视频| 国产无限制自拍| 日本特黄a级片| 欧美中文字幕在线观看视频| 日本一本二本在线观看| 激情久久综合网| 一女被多男玩喷潮视频| 日本 片 成人 在线| 免费视频爱爱太爽了| 国产精品久久久毛片| 久久精品无码中文字幕| 国产视频手机在线播放| 国产免费黄色一级片| www.色就是色.com| 成人羞羞国产免费网站| 最新黄色av网站| 天天操天天爱天天爽| 男女视频网站在线观看| 26uuu成人| 日韩在线不卡一区| 成人小视频在线看| 国产美女在线一区| 最新视频 - x88av| 特黄视频免费观看| 污污视频网站免费观看| 无罩大乳的熟妇正在播放| 在线免费看污网站| 国产视频1区2区3区| 男人操女人逼免费视频| 免费人成在线观看视频播放| 久久精品一卡二卡| 日韩av一卡二卡三卡| 男女啪啪网站视频| 久章草在线视频| 日本精品一区二区三区四区 | 国内自拍中文字幕| 五月天丁香花婷婷| 在线免费观看av的网站| 成人性免费视频| 国产美女主播在线播放 | 第九区2中文字幕| 国产九九九视频| 在线免费看污网站| 国产又粗又长又爽又黄的视频| 爆乳熟妇一区二区三区霸乳| 国产淫片免费看| 日韩精品视频一区二区在线观看| 精品国偷自产一区二区三区| 欧美三级午夜理伦三级老人| 久久精品国产99久久99久久久| 中文字幕 日韩 欧美| 狠狠操狠狠干视频| 一级做a爱视频| 看一级黄色录像| 欧美这里只有精品| 日韩a∨精品日韩在线观看| 日韩欧美亚洲天堂| 色婷婷综合久久久久中文字幕| 波多野结衣天堂| 亚洲午夜精品一区| 警花观音坐莲激情销魂小说 | 美女黄色免费看| 国产不卡一区二区视频| 国产最新免费视频| jizz大全欧美jizzcom| 亚洲欧美日韩一二三区| 成人av在线不卡| 日韩视频免费在线播放| 色91精品久久久久久久久| 国产香蕉一区二区三区| 和岳每晚弄的高潮嗷嗷叫视频 | 免费毛片小视频| 中文字幕在线观看第三页| 天天操狠狠操夜夜操| 亚洲爆乳无码精品aaa片蜜桃| 国产一区二区网| www.超碰97.com| 成人午夜视频在线观看免费| av丝袜天堂网| 人人妻人人澡人人爽欧美一区| 久久久久免费精品| 欧美精品久久96人妻无码| 黑森林福利视频导航|