.Net在Windows上使用Jenkins做CI/CD

背景最近入职了一家新公司 , 公司各个方面都让我非常的满意 , 我也怀着紧张与兴奋的心情入职后 , 在第一天接到了领导给我的第一个任务——把整个项目的依赖引用重新整理并实施项目的CI/CD 。
本篇的重点主要分享这次在windows平台使用Jenkins做.Net Framework的自动化 , 真是所谓一波N折 。
有关注过我的博客的朋友们 , 应该知道我之前都是在linux上实施.Net Core , 好不容易把Linux技能点起来 , 现在玩回Windows+.Net Framework感觉有一种回到钻木取火的年代 。
在实施过程中让我感悟最多的是 , dotnet core命令的便捷性 , Linux运维的便捷性 , 下文我有很多构建脚本都是shell脚本来的 , 当时想着学习一次就不需要学习bat脚本了 , 最终还是躲不过 。
在远程传送并远程执行命令我折腾得最久 , 开始想着用FTP与Telnet , 谁知道Telnet命令没有附带账号密码参数 , 脚本不好写 , 后改成PsExec.exe , 使用过程中很多奇怪的问题 , 后来不得不去折腾OpenSSH , 说实话还是SSH好用 , 直接代替了FTP与PsExec 。中间还遇到Jenkins使用本机账号执行的权限问题 。所有“坑”的我在下面步骤尽可能给大家规避了 。
引用整理

.Net在Windows上使用Jenkins做CI/CD

文章插图
 
项目(包含所以依赖的项目)依赖引用丢失 , 主要体现以下几点:
  1. 官方依赖包没有使用NuGet
  2. 内部项目引用通过本地引用 , 项目没有拉取则编译失败
  3. NuGet包多个版本的引用
  4. 同属一个解决方案 , 但是项目分散到各个仓库
依赖没有规范化对软件工程主要带来以下几点影响:
  1. 缺少代码或者代码路径不一致则无法正常编译通过
  2. 对于新人同事不友好
  3. 实现CI/CD会有很大的阻力
解决方案与顺序:
  1. 整理组件库到统一解决方案 , 日后有需要拆分再按需拆分 , 优先保证需要依赖的在一个方案 。
  2. 实现组件库的自动发布到私有Nuget
  3. 整理API项目的依赖 , 抛弃以前本地依赖的方式 , 统一使用Nuget
  4. 实现API项目的自动发布到IIS
工具准备工具名称下载地址描述jdk-8u261-windows-i586.exehttps://www.oracle.com/JAVA/technologies/javase/javase-jdk8-downloads.htmlJenkins依赖nuget.exe CLI https://dist.nuget.org/win-x86-commandline/latest/nuget.exe发布、还原.Net依赖包MsBuildhttps://visualstudio.microsoft.com/zh-hans/vs/community/msbuild在vs安装程序里Jenkins
https://www.jenkins.io/zh/download/ githttps://git-scm.com/download/win OpenSSH服务端https://github.com/PowerShell/Win32-OpenSSH/releases 远程传输与远程执行命令
 物理部署图
.Net在Windows上使用Jenkins做CI/CD

文章插图
 
文章会分享跨网络环境的场景 , 我们使用了Gitee的企业仓储 , Jenkins与Nuget.Server会放在阿里云服务器 , 机房会开放一台服务器与阿里云服务器进行SSH的通信 。
以上是基本的信息概要 , 下面会进入具体的实施步骤 。
NuGet.Server的部署新建一个ASP.Net Web应用程序(.NetFramework),并选择空模板 , 搜索NuGet.Server选择3.4.1版本安装后 , 打开Web.config文件设置apiKey , 然后就可以部署到47.115.111.58的IIS了 。
官方部署文档可以查看 https://docs.microsoft.com/zh-cn/nuget/hosting-packages/nuget-server
.Net在Windows上使用Jenkins做CI/CD

文章插图
 

.Net在Windows上使用Jenkins做CI/CD

文章插图
 
 
 安装MsBuild在服务器47.115.111.58打开通过上面表格的链接下载VS的安装包 , 点开单个组件选项卡 , 勾选Msbuild , 等待一会即可完成 。
.Net在Windows上使用Jenkins做CI/CD

文章插图
 
配置nuget.exe CLI在服务器47.115.111.58根据上面表格nuget.exe CLI , 下载后放到一个合适的文件目录 , 并在【环境变量配置】配置好路径 , 打开cmd并输入指令nuget help出现以下画面证明成功 。
.Net在Windows上使用Jenkins做CI/CD

文章插图
 


推荐阅读