前言:
1、在一个小团队里面,可能我们既是开发(前端+后端)也是运维还是售前售后服务。我们样样都得会,但说实话,样样都不是很精!但是我们也梦,梦想着一切能像大厂那样,开发是开发,运维是运维,各司其职。作为一个从后端开发一路走过来的我,今天也越俎代庖,来谈一件运维的事:IIS环境下的dotnet core应用程序的自动部署。一则是为自己留一个备忘,二则是为和我们有相似环境的同仁提供一个借鉴于参考。不足之处勿喷!
2、Java开发的朋友们请滑走!玩k8s+docker的朋友们请滑走!
3、本篇将按照如下段落进行整理:
- 环境介绍
- 在本地Windoss Server 2022服务器上安装Jenkins
- 在云端Windows Server 2022应用程序服务器上准备:IIS+Open SSH Server部署
- 一步一步带你实现自动化部署一个.net core应用程到云端服务器
- 附加:如果私有化部署了nuget服务器,在Jenkins中如何处理
从此告别:编译 > 打包 > 登录服务器 > 上传程序包 > 复制程序包 > 停止IIS站点 > 解压程序包 > 开启IIS站点 这样一系列重复、低效、繁琐的动作!!!!
一、环境介绍
1、在本地有2台服务器:
- 服务器(10.10.18.3)部署与开发一样的环境,并安装Jenkins
- 服务器(10.10.18.4)本地的nuget服务 与 Bonobo.Git.Server服务
说明: (1)为什么会有本地的nuget服务:在长久的开发过程中团队已经形成了一些固有的程序包,它大大提高了开发效率,但是它又不适合上传到公共的nuget仓库,所以便有了本地的nuget服务。 (2)Bonobo.Git.Server服务是团队历史以来都在使用的私有git仓库,它已经没有gitee等当代的git仓库那么先进,但是团队也没有更换的勇气,简单设置一下也能够和Jenkins配合着使用。 (3)以上两款,都是开源的项目,拿来就可以本地部署,有兴趣的朋友可以打开:BaGet——本地nuget服务 和 Bonobo.Git.Server本地的Git仓库 |
2、云端有2台服务器:IP地址分别是:1.1.1.1和2.2.2.2。在其上都部署IIS和Open SSH Server。
二、在本地的Windows Server 2022服务器上安装Jenkins
Jenkins的安装,网上相关的篇章已经太多了,此处不再赘述。随便推荐一篇:Windows系统下Jenkins安装配置【新手教学】_jenkins windows-CSDN博客
同时,在此服务器上,部署上与开发一样的环境。
三、在云端的Windows Server 2022服务器上准本IIS+Open SSH Server
Windows Server上开启IIS相关的文章也经太多了,此处不再赘述。随便推荐一篇:Windows Server 2019 安装IIS 服务 - 爱吃糖的宝宝 - 博客园 (cnblogs.com)
在Windows Server 2022上开启Open SSH Server,可以参考这篇:windows server 开启 openssh_windowsserver开启ssh-CSDN博客
说明: (1)或许,你在其他文章中看到,IIS程序自动化部署,需要开启 “Web Deploy组件”,但Jenkins+IIS的程序自动化部署,不需要开启 “Web Deploy组件”。 (2)Open SSH Server是什么,为什么要开启。说的直白一点,在WinServer 上开启Open SSH Server,就可以让Windows机器像Linux机器那样,通过命令行链接并操作电脑。 (3)在Win Server上开启Open SSH Server,一定要考虑安全。或许你可以通过防火墙策略,只让你本地机器通过ssh链接等等。 |
四、一步一步带你实现自动化部署一个.net core应用程到云端服务器
1、在Jenkins上安装两个必要插件:Publisher Over SSH、Generic Webhook Trigger。
2、在Jenkins中配置SSH主机(就是第三点配置好的云端服务器)
step-1
step-2
step-3
2、在vs 2022中创建一个asp.net core web项目(.net 8.0),并提交到本地git仓库:https://10.10.18.4:8888/TestJenkins.git
3、在Jenkins中创建项目并配置
- 创建Jenkins项目
- 常规配置项
- 源代码管理配置项
- 自动构建触发器
将上面拼接的URL,按照下图所示的方法使用:
上面这步操作,是确保你的代码提交到Bonobo.Git.Server搭建的git仓库时,能够触发Jenkins自动构建。
- 执行环境通用设置
- 构建步骤
说明:
|
说明:
|
说明:
|
- 到此,所有配置完成。点击“Build Now”,开始构建,然后查看最终效果:
五、附加:如果你私有化部署了本地Nuget服务,Jenkins中如何处理
1、如果你使用了本地nuget服务,在Jenkins中执行dotnet publish -c Release发布命令时,极有可能不成功。这是,你需要dotnet nuget命令,添加您的本地nuget源。请参考文档:https://learn.microsoft.com/zh-cn/dotnet/core/tools/dotnet-nuget-add-source
2、您可以在Jenkins的命令行输入框中输入以下命令
dotnet nuget list source——查看Jenkins环境下的nuget包源有哪些
dotnet nuget config paths——查看Jenkins环境下的nuget包源配置文件的路径(我遇到的情况是:这个路径和我们直接通过控制台输入dotnet命令使用的nuget包源配置文件的路径不一致。)
dotnet nuget config get all——查看Jenkins环境下的nuget包源配置项有哪些