搭建面向NET Framework的CI/CD持續集成環境(一)
前言
網上大多數都是針對主流的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任務
- Jenkins:負責管理構建部署持續集成流水線的每個階段
- MSbuild:負責構建NET Framework項目,生成發布文件
- Rsync:負責把構建好的發布文件部署到指定的伺服器上
流程圖
那我們接下來就實際的開始搭建
Windows伺服器安裝Jenkins
一、下載安裝包
官方下載地址:Jenkins安裝包下載地址

直接選擇Windows環境的LTS版本安裝包
二、安裝JDK
因為Jenkins是需要依賴Java環境的,所以需要先在伺服器安裝JDK。部落客在這裡直接把JDK安裝包放到這兒,JDK的安裝過程和環境變數配置網上很多,我就不在這兒贅述了。
JDK百度網盤鏈接 提取碼:5rpx
三、安裝Jenkins
/// <summary>
/// 增加任務中的完成數
/// </summary>
/// <param name="taskId"></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());
}
