基于Jenkins Pipeline的ASP.NET Core持续集成实践

最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下。

一、关于持续集成与Jenkins Pipeline 1.1 持续集成相关概念

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) 。 

  持续集成指的是,频繁地 (一天多次) 将代码集成到主干

  它的好处主要有两个:

(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。

(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

  持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量

Martin Fowler 说:“ 持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”  

  与持续集成相关的,还有持续交付和持续部署。

  持续交付指的是:频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。它强调的是,不管怎么更新,软件是随时随地可以交付的

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。它强调的是代码在任何时刻都是可部署的,可以进入生产阶段

基于Jenkins Pipeline的ASP.NET Core持续集成实践

1.2 Jenkins Pipeline

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  Jenkins 是一款流行的开源持续集成(CI)与持续部署(CD)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。有关Jenkins的安装,可以参考我的这一篇文章进行安装 https://www.linuxidc.com/Linux/2019-09/160627.htm

  相信很多童鞋都已经在使用Jenkins或者计划使用Jenkins来代替传统的人工发布流程了,因此我们创建了很多自由风格(Free Style)的构建任务用于多个Job,而我们经常会听到说流水线任务,那么流水线是什么呢?

  流水线Pipeline是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。下图是一个Jenkins Pipeline的实例效果:

基于Jenkins Pipeline的ASP.NET Core持续集成实践

Pipeline :Build => Test => Deploy

  这里涉及到Pipeline中的几个重要概念,需要了解一下:

Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。如上图所示,Build,Test和Deploy就是Stage,代表了三个不同的阶段:编译、测试和部署。

Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Slave,是执行Step的具体运行期环境。

Step: 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。

二、准备ASP.NET Core Docker环境 2.1 安装Docker环境

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  可以参考我的这一篇《.NET Core微服务之ASP.NET Core on Docker》来安装和配置Docker环境,建议在Linux环境下配置。

2.2 安装SFTP服务

  在Linux下,SSH服务默认会安装,而在Windows Server下,需要单独安装,可以借助FreeSSHD这个免费工具来实现。由于我的物理机都是Windows Server,物理机上的VM是Linux(Docker运行环境),所以需要给物理机配置FreeSSHD,用来实现从CI服务器发布Release到物理服务器中的VM。

  至于如何安装配置FreeSSHD,可以参考这一篇《freeSSHD在windows环境下搭建SFTP服务器》。

三、配置Jenkins Pipeline流水线任务 3.1 总体目标

  (1)持续集成:实现编译+单元测试的自动运行

基于Jenkins Pipeline的ASP.NET Core持续集成实践

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7066499d464af64905becc367c1b5987.html