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

代码是管出来的——使⽤GitHub实现简单的CICD
  软件开发⼀般来说是⼀项团队作业,在本系列⽂章开始就提到过软件的编码是由⼀个团队“并⾏”完成的,为了保证编码任务正常完成,⾸先引⼊版本控制⼯具来完成代码管理,为了保证代码质量引⼊了代码分析器以及代码测试
  版本控制⼯具可以保证代码有⼀个主版本,但代码分析和测试均是开发⼈员⼿动在本地完成的(通过编译、执⾏测试等⽅式),在进⾏代码分析和测试时可能并没有将本地代码更新到最新版本,这样就会出现⼀个问题,当多个开发⼈员向版本库提交代码时,⽆法保证最新代码库的代码是正确的,为了解决这个问题,提出了持续集成,持续集成的集成指的是持续的对多个开发⼈员编写的代码进⾏集成,本⽂从下⾯⼏个⽅⾯介绍持续集成以及基于Github进⾏持续集成实践:
CI&CD
  持续集成(Continuous integration,CI)指的是在开发过程中持续地将所有开发⼈员的代码合并到代码库的主线上,然后对该主线代码进⾏编译、测试运⾏等操作对代码进⾏检验,其⽬的是尽可能早的发现代码集成后导致的问题。
  实现持续集成的要点主要有:共享的代码库、⾃动化编译、⾃动化测试等,同时要保证合理的集成频率,
⼀般持续集成的时机在于开发⼈员将代码提交到代码库时⾃动进⾏,但是如果提交过于频繁,那么应该使⽤时间间隔的形式进⾏持续集成。
南少林降糖茶
  持续发布(Continuous delivery,CD)实际上是持续集成上的⼀个拓展,在持续集成的基础上将发布⼯作⾃动化,避免⼈为操作从⽽减少发布时间和发布时⼈为造成的错误。
常⽤的持续集成⼯具
  总的来说持续集成⼯具分为可本地安装和平台托管两类,本地安装类型的⼯具适合有专⽤构建服务器资源的闭源项⽬(当然开源项⽬也可以使⽤),⽽托管平台则⽐较适合开源或者没有专⽤构建服务器资源的项⽬,使⽤上托管平台更加省⼼,这些⼯具需要根据实际情况来进⾏选⽤。
GitHub市场简介书立
  ⼀般来说市场中提供的应⽤对于开源项⽬都是可以免费使⽤的,下⾯就介绍如何将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内容:
  6. 将编译状态显⽰到GitHub上:透水石
  Appveyor的Badges(标记)配置界⾯中可以获取到状态标记地址:
  将MarkDown的代码复制到项⽬的README.md⽂件中:
  效果:
  7. 导出l⽂件以及通过l来完成配置:
变压器油泵  上⾯的⽅法是通过Appveyor的Web界⾯上完成配置的,除此之外还可以通过l⽂件来完成配置,l⽂件可以⾃⼰创建或导出已有配置:
  导出已有配置:
  将l⽂件放置到代码根⽬录,并通过修改该⽂件来变更配置:
使⽤Codecov显⽰代码覆盖率
  Codecov也是Github市场的⼀个应⽤,它⽤于⽣成代码覆盖率报告,codecov对C#的⽀持是基于OpenCover的(使⽤OpenCover检测代码覆盖率参考:),Codecov对Github的公开项⽬是免费的,下⾯就开始介绍如何使⽤codecov来实现测试代码覆盖率的统计:
  1. 安装Codecov:
  注:安装完成Codecov后,会有⼀个Upload Token⽤来将代码覆盖报告上传到Codecov,但Appveyor的公共仓库可以不需要:
  2. 修改l⽂件:
  添加使⽤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服务器的搭建。

本文发布于:2024-09-23 09:21:28,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/145858.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   完成   集成   编译   测试   开发
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议