网上大多数都是针对主流的Spring Cloud、NET Core的CI/CD方案。但是目前国内绝大部分的公司因为一些历史原因无法简单的把项目从NET Framework切换升级到NET Core,又急切的需要引入CI/CD流程来提高开发体验和效率。因此,本系列博客针对这一问题,旨在解决NET Framework的持续集成难题。
面临的难题项目结构复杂,且源代码工程结构多为一个解决方案多个项目的模式
构建比较困难,有一些项目的包管理还是以文件路径的引用方式
前后端未完全分离,目前很多公司的NET项目,前端人员和后端人员分开,但是项目源码还是在同一个工程
项目的配置文件在多环境下很难做到自动调整。无论是使用自带的多环境配置文件语法还是对接目前市面上的配置中心都比较困难
部署无法像NET Core一样打包镜像,推送到镜像管理平台,然后再做升级
整体思路鉴于以上几个难题,对于NET Framework项目的CI/CD搭建方案其实很有限。我选择的方案大体是Gitlab+Jenkins+MSbuild+Rsync
下面介绍一下这几块的分别的分工和作用:
GItlab:源代码管理、配置Webhook、工程师提交分支代码触发相应的Jenkins的item任务
MSbuild:负责构建NET Framework项目,生成发布文件
Rsync:负责把构建好的发布文件部署到指定的服务器上
流程图那我们接下来就实际的开始搭建
Windows服务器安装Jenkins 一、下载安装包官方下载地址:Jenkins安装包下载地址
直接选择Windows环境的LTS版本安装包
二、安装JDK因为Jenkins是需要依赖Java环境的,所以需要先在服务器安装JDK。博主在这里直接把JDK安装包放到这儿,JDK的安装过程和环境变量配置网上很多,我就不在这儿赘述了。
JDK百度网盘链接 提取码:5rpx
三、安装Jenkins /// <summary> /// 增加任务中的完成数 /// </summary> /// <param></param> public void UpdateWorkTaskCompletesNum(long taskId) { List<DalParameter> paras = new List<DalParameter>(); paras.Add(taskDao.CreateDalParameter("Completes", 0)); List<DalParameter> parasWhere = new List<DalParameter>(); parasWhere.Add(taskDao.CreateDalParameter("Id", taskId)); strSql = taskDao.CreateUpdateSql(paras, parasWhere); List<DalParameter> parasAll = new List<DalParameter>(); parasAll.AddRange(paras); parasAll.AddRange(parasWhere); taskDao.Operate(strSql, parasAll.Select(o => o.Parameter).ToList()); }