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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

好代码是管出来的——使用GitHub实现简单的CI/CD

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 好代码是管出来的——使用GitHub实现简单的CI/CD 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

軟件開發一般來說是一項團隊作業,在本系列文章開始就提到過軟件的編碼是由一個團隊“并行”完成的,為了保證編碼任務正常完成,首先引入版本控制工具來完成代碼管理,為了保證代碼質量引入了代碼分析器以及代碼測試。

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

  • CI&CD

  • 常用的持續集成工具

  • GitHub市場簡介

  • 使用AppVeyor實現持續集成

  • 使用Codecov顯示代碼覆蓋率

  • 小結

CI&CD

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

常用的持續集成工具

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

  TeamCity
  TeamCity是JetBrains公司開發的持續集成工具,它有免費和收費兩種授權,免費版本的TeamCity擁有所有功能,其限制僅僅是只能創建100個編譯配置和只能并行運行3個代理。
  項目地址:http://www.jetbrains.com/teamcity/

  GitLab
  GitLab是一個Git的代碼管理工具,使用GitLab可以輕松的在Linux環境搭建一個Git的遠程代碼托管平臺,同時GitLab中也內置的CI/CD功能。
  項目地址:https://about.gitlab.com/

  Travis CI?
  Travis CI是一個持續集成托管平臺,它為開源項目提供免費支持,但Travis CI不支持Windows下編譯。
  項目地址:https://www.travis-ci.org/

  AppVeyor
  AppVeyor也是一個持續集成的托管平臺,它支持Windows和Linux,并且AppVeyor可以對環境進行定制:https://www.appveyor.com/docs/build-environment/,是一個非常強大的CI工具,AppVeyor對開源項目提供免費支持。
  項目地址:https://www.appveyor.com/

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

  總的來說持續集成工具分為可本地安裝和平臺托管兩類,本地安裝類型的工具適合有專用構建服務器資源的閉源項目(當然開源項目也可以使用),而托管平臺則比較適合開源或者沒有專用構建服務器資源的項目,使用上托管平臺更加省心,這些工具需要根據實際情況來進行選用。

GitHub市場簡介

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

  

  一般來說市場中提供的應用對于開源項目都是可以免費使用的,下面就介紹如何將Github上的開源項目使用其市場應用完成持續集成。

使用AppVeyor實現持續集成

  AppVeyor是一個支持自定義持續集成環境的CI工具,它對.Net程序的支持非常強大,同時對開源項目免費,所以AppVeyor是.Net Core項目持續集成的首選,下面就介紹如何使用AppVeyor完成持續基礎:
  1. 在GitHub市場中找到AppVeyor,并完成安裝:

  

  2. 添加項目:

  

  選擇GitHub倉庫,并完成授權:

  

  添加需要的倉庫:

  

  點擊“NEW BUILD”進行一次編譯:

  

  從編譯的信息可以看到,此次編譯失敗了,并且給出了相應的錯誤信息,這是由于編譯環境導致的。

  3. 環境配置:
  將編譯鏡像選擇為VS2017:

  

  在編譯前先執行dotnet restore命令還原項目依賴:

  

  4. 開始一個新的編譯:
  編譯結果:

  

  從編譯結果可以看出Appveyor不僅僅是完成了編譯工作,而且還搜索了測試信息,并完成了測試。另外有一個要點是本項目中的測試是依賴數據庫的,這就意味著Appveyor的編譯環境提供了SQL Server數據的支持。

  5. 將編譯后的內容發布到GitHub release:
  為xUnitTestDemo代碼庫添加一個Tag:

  

  然后Appveyor將會檢測到代碼庫的變化,自動編譯Tag,并將結果部署到Github的Release中:

  自動部署的Release內容:

  

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

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

  

  將MarkDown的代碼復制到項目的README.md文件中:

  

  效果:

  

  7. 導出appveyor.yml文件以及通過appveyor.yml來完成配置:
  上面的方法是通過Appveyor的Web界面上完成配置的,除此之外還可以通過appveyor.yml文件來完成配置,appveyor.yml文件可以自己創建或導出已有配置:
  導出已有配置:

  

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

  

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

使用Codecov顯示代碼覆蓋率

  Codecov也是Github市場的一個應用,它用于生成代碼覆蓋率報告,codecov對C#的支持是基于OpenCover的(使用OpenCover檢測代碼覆蓋率參考:好代碼是管出來的——.Net Core中的單元測試與代碼覆蓋率),Codecov對Github的公開項目是免費的,下面就開始介紹如何使用codecov來實現測試代碼覆蓋率的統計:
  1. 安裝Codecov:

  

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

  

  2. 修改appveyor.yml文件:

  

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

  

  3. 在README.md文件中添加Codecov的標簽:

  

?

?  

  結果:

  

小結

  本文介紹了CI和CD的基本概念,前者目的在于盡可能早的發現多人開發時代碼集成的錯誤,而后者目的是避免人為造成的錯誤,將一些重復的事情交由程序自動完成,既可以減少成本又可以提高正確率,現在流行的DevOps的基礎之一就是自動化也就是CI和CD。
  另外本文還介紹了在Github上使用Appvoyer和Codecov工具實現了簡單的持續集成,當把新代碼推到GitHub倉庫時,Appvoyer會自動的完成一系列構建操作。Appvoyer是一個非常強大的CI工具,對C#的支持也非常好可以選擇VS版本(包括預覽版),多種數據庫(包括Linux下的SQL Server),所以在執行測試時依賴數據庫的測試也能通過。
  下篇文章將介紹如何使用Jenkins完成本地CI服務器的搭建。

參考:
  https://en.wikipedia.org/wiki/Continuous_integration
  https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
  https://en.wikipedia.org/wiki/Continuous_delivery
  https://cakebuild.net/
  https://docs.codecov.io/docs
  https://www.appveyor.com/docs/

相關文章:

  • 好代碼是管出來的——使用Git來管理源代碼

  • 好代碼是管出來的——Git的分支工作流與Pull Request

  • 好代碼是管出來的——使用GitHub

  • 好代碼是管出來的——C#的代碼規范

  • 好代碼是管出來的——.Net中的代碼規范工具及使用

  • 好代碼是管出來的——.Net Core中的單元測試與代碼覆蓋率

  • 好代碼是管出來的——.Net Core集成測試與數據驅動測試

原文地址https://www.cnblogs.com/selimsong/p/9398738.html?

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的好代码是管出来的——使用GitHub实现简单的CI/CD的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99久久综合网 | 国产玖玖视频 | 黄频在线播放 | 日韩三级成人 | 老司机午夜精品 | 亚洲精品aⅴ | 久久中文字幕视频 | 天天插天天射天天干 | 日韩欧美国产片 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 波多野结衣1区 | 粉嫩av懂色av蜜臀av分享 | 99久久精品免费看 | 影音先锋欧美在线 | 婷婷综合亚洲 | 国产精品人人做人人爽人人添 | 欧美性极品xxxx做受 | 在线中文av| 色人阁av| 制服丝袜av一区二区三区下载 | 亚洲天堂免费在线观看视频 | 日韩极品视频在线观看 | 亚洲一区二区在线电影 | av在线免播放器 | 久久艹伊人| 黄色一级视频免费看 | 精品一区二区三区四区 | 亚洲第一黄色片 | 天堂网在线视频 | 久久狠狠高潮亚洲精品 | 日日碰日日操 | 黑丝久久 | 污视频在线观看网址 | 天天干夜夜爽 | 国产真实自拍 | 色婷婷av一区二区三区四区 | 色哟哟入口国产精品 | 美女啪啪免费视频 | 91福利在线导航 | 福利小视频在线播放 | 男朋友是消防员第一季 | 老熟女毛茸茸浓毛 | 特级西西444www高清大胆 | 久久深夜| 日日夜夜网 | 久久亚洲少妇 | 男人的天堂在线观看av | 一区中文字幕 | 一区二区三区在线观看视频 | 色哟哟一区二区三区 | 色综合久久五月 | 手机成人av| 90岁老太婆乱淫 | 午夜大片 | 国产精品自拍区 | 明日花绮罗高潮无打码 | 在线看片网址 | 一本久草| 一区二区三区www污污污网站 | 亚洲av永久无码精品一百度影院 | 动漫av网 | 国产中文一区二区 | 一级做a免费 | 日韩精品福利在线 | 午夜影视剧场 | 一级片美女 | 久久h| 国产一区二区三区播放 | 海角社区id | 激情九九| 精品国产一区二区三区日日嗨 | 日韩欧美国产一区二区三区 | 午夜视频在线免费观看 | 免费无码毛片一区二区app | 999一区二区三区 | 免费在线性爱视频 | 久久免费偷拍视频 | 清纯粉嫩极品夜夜嗨av | 亚洲综合一区中 | 久久免费的精品国产v∧ | 国产一级黄色电影 | 国产成人精品在线观看 | 在线观看av一区二区 | 亚洲大片 | 男人扒女人添高潮视频 | 天堂亚洲网 | 男人疯狂高潮呻吟视频 | 久久视频这里只有精品 | 瑟瑟视频在线观看 | 久久经典| 国偷自拍 | 亚洲AV无码成人精品区先锋 | 爱情岛亚洲论坛入口福利 | 亚洲色图视频网站 | 午夜看片在线观看 | 黄色小视频在线观看免费 | 亚洲一区二区三区免费视频 | 高清久久久| 国产综合亚洲精品一区二 |