.Net在Windows上使用Jenkins做CI/CD的那些事(一)

简介: .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使用本机账号执行的权限问题。所有“坑”的我在下面步骤尽可能给大家规避了。


引用整理


image.png

  

项目(包含所以依赖的项目)依赖引用丢失,主要体现以下几点:


  1. 官方依赖包没有使用NuGet
  2. 内部项目引用通过本地引用,项目没有拉取则编译失败
  3. NuGet包多个版本的引用
  4. 同属一个解决方案,但是项目分散到各个仓库

  

依赖没有规范化对软件工程主要带来以下几点影响:

  1. 缺少代码或者代码路径不一致则无法正常编译通过
  2. 对于新人同事不友好
  3. 实现CI/CD会有很大的阻力

  

解决方案与顺序:

  1. 整理组件库到统一解决方案,日后有需要拆分再按需拆分,优先保证需要依赖的在一个方案。
  2. 实现组件库的自动发布到私有Nuget
  3. 整理API项目的依赖,抛弃以前本地依赖的方式,统一使用Nuget
  4. 实现API项目的自动发布到IIS


工具准备



物理部署图


image.png

  

文章会分享跨网络环境的场景,我们使用了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


image.png

 

安装MsBuild

  

在服务器47.115.111.58打开通过上面表格的链接下载VS的安装包,点开单个组件选项卡,勾选Msbuild,等待一会即可完成。

  

MsBuild的命令参考:https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019


image.png


配置nuget.exe CLI

  

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

  

相关指令参考:https://docs.microsoft.com/zh-cn/nuget/reference/nuget-exe-cli-reference

image.png

目录
相关文章
|
3月前
|
存储 文字识别 C#
.NET开源免费、功能强大的 Windows 截图录屏神器
今天大姚给大家分享一款.NET开源免费(基于GPL3.0开源协议)、功能强大、简洁灵活的 Windows 截图、录屏、Gif动图制作神器:ShareX。
|
3月前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
|
1月前
|
C# 开发者 Windows
4款.NET开源、功能强大的Windows桌面工具箱
4款.NET开源、功能强大的Windows桌面工具箱
|
1月前
|
C# 开发者 Windows
WPF在.NET9中的重大更新:Windows 11 主题
这也是一个很好的学习WPF的项目,可以通过看源代码提升自己的WPF水平。 WPF Gallery演示如何在标记中指定 XAML 控件,因为每个控件页都显示用于创建每个示例的标记。它还将显示您的应用程序的所有可能的布局选项。 WPF Gallery应用还包含有关使用颜色、排版和图标开发特殊应用程序的设计指南。它还包括一个示例页,用于演示如何使用不同的控件在 WPF 应用程序中创建用户界面。 WPF在.NET 9中可以使用Win11主题的控件了,有助于WPF开发者们开发出更符合现在设计风格、更美观的界面。 希望WPF越来越好。
35 0
|
1月前
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
83 0
|
2月前
|
Kubernetes Cloud Native jenkins
云原生时代:从Jenkins到Argo Workflows,构建高效CI Pipeline
基于Argo Workflows可以构建大规模、高效率、低成本的CI流水线
|
3月前
|
开发框架 .NET API
在Windows Server 2008 R2上运行.Net 8应用
在Windows Server 2008 R2上成功运行.Net 8程序,需安装三个补丁:Windows Server 2008 R2 SP1 (KB976932)是基础更新;VC_redist.x64提供MSVC库支持;KB3063858解决.NET运行时加载`kernel.dll`的路径问题。KB3063858可能需要KB2533623。详细信息和下载链接在文中给出。
235 4
|
3月前
|
C# Windows
一款.NET开源、简洁易用的Windows桌面小说阅读应用
一款.NET开源、简洁易用的Windows桌面小说阅读应用
|
3月前
|
jenkins Java 持续交付
Jenkins与Docker的自动化CI/CD实战
Jenkins与Docker的自动化CI/CD实战
|
3月前
|
SQL Windows
保姆级:Windows Server 2012上安装.NET Framework 3.5
保姆级:Windows Server 2012上安装.NET Framework 3.5
479 0

热门文章

最新文章