Jenkins持续集成asp.net website网站并自动部署到IIS教程2024版

这是一篇Jenkins持续集成asp.net website网站并自动部署到IIS教程,是解决工作中的问题记录分享,这里需要说明一下,本篇文章分享的是利用Jenkins持续集成持续部署asp.net website网站。

如果你的项目中,或者公司项目中还有asp.net website网站的话,并且还在每天处理着相同的网站编译,打开VS发布网站,再通过FTP或者远程桌面的方式复制到服务器的IIS上面的话,那么这篇文章就是专门解决这种痛点的。我们知道asp.net website网站的发布可能大多数人都是直接在VS里面点击右键来发布到本地某个目录,而本文是需要告诉您怎样利用Jenkins来解决这些发布website的重复劳动。

本站之前曾分享的.net core部署到iis的文章,实现了直接在VS里面点击发布就自动部署到IIS上面,对于中小型项目,发布频率不高的场景完全适合也方便,但网站项目一多了,再使用这种手动方式点个按钮来发布就有点太Low了。所以这里分享一下使用Jenkins自动部署网站到IIS的实战做法。

Jenkins持续集成asp.net website网站并自动部署到IIS教程2021版

相关阅读:

  1. 使用VS 2019发布.net core程序并部署到IIS的最新教程
  2. 如何使用IIS发布和运行ASP.NET Core 应用程序
  3. 远程服务器返回550,未能使用指定的进程Web Management Service连接到远程计算机

为什么选用Jenkins持续集成部署website网站?

最近的工作中是要解决这些重复性的工作,因为上线正式环境的时候,几十个网站需要手工部署非常的麻烦,可能有的朋友会问了,这么多网站以前是咋挺过来的?答案是人工一个一个弄过来的,没错,就是人工弄的,所以每次发布网站要么几个小时,要么一两天。而且中途还指不定出什么幺蛾子呢。

所以做为有追求的人可能会想到了,需要花点时间解决这个痛点,从公司角度来说这样节省了人力,时间,而这些都是白花花的银子,因为你在公司呆一分钟公司就得支付相应的工资,当然免费加班不给钱画大饼的不在讨论范围之内。一开始我偿试着使用Azure DevOps来搭建CI/CD,无奈中途遇到了过多的问题,没有啃来这个骨头,后来转投Jenkins怀抱,终于解决了这个痛点。

在开始用Jenkins持续集成古老的asp.net website之前,也驱动google在网上搜索了一些中文资料,按照网上的教程加亲自测试部署,居然没有一个成功的,所以只好自己探索了,折腾了两三天终于搞定了这个问题,这里只介绍大致的核心要点步骤,一些细节的东西网上已经有很多资料了,就不过多介绍。

Jenkins持续集成asp.net website网站步骤

  1. Jenkins环境安装
  2. Jenkins插件安装
  3. 配置MSbuild
  4. 新建构建任务
  5. 配置构建任务参数

要使用Jenkins来持续集成website网站,事实上也可以利用Jenkins持续集成asp.net web应用程序,asp.net mvc,asp.net core web应用程序等,当然java,php等其它语言项目也是可以的,只是需要安装相应的插件,配置好环境即可。

Jenkins环境安装

到官网下载最新的Jenkins安装包就是了,我是使用的Windows服务器来安装Jenkins的,安装一种Next就可以了,没有什么难度,并且这方面的教程网上非常的多,这里就不展开细节了。

Jenkins下载地址:https://www.jenkins.io/download/

Jenkins持续集成asp.net website网站并自动部署到IIS教程2021版
Jenkins持续集成asp.net website网站并自动部署到IIS教程2021版

更多的安装教程可以使用google搜索,如下图那样键入关键字:

怎样使用google搜索jenkins安装教程
Jenkins持续集成asp.net website网站并自动部署到IIS教程2021版

Jenkins插件安装

要构建古老的asp.net website网站,需要安装一些插件,另外还得根据你项目中使用的源代码管理工具来选择相应的插件,例如使用TFS,Team Foundation Server 2013,gitlab等等,总的来说需要安装编译代码的插件(MSBuild Plugin),获取源代码的插件(Git plugin,GitHub plugin,GitLab Plugin),部署网站的插件,使用了docker,也需要安装相应的插件支持。

jenkins已安装插件列表Jenkins持续集成asp.net website网站并自动部署到IIS教程2021版
Jenkins持续集成asp.net website网站并自动部署到IIS教程2021版

配置MSbuild

配置MSbuild这个步骤必不可少,不然没法编译网站代码啊,是不。所以当安装好相应的插件后,首先要做的就是配置好MSbuild,当然你也可以不按这里介绍的顺序来,最后来配置也成,也没有什么影响,只是按照顺序来操作是最佳的实践,免得你走弯路。

第一步:全局工具配置

进入后台后,点左侧菜单,如下图所示那样操作即可。

Jenkins怎样配置MSbuildJenkins持续集成asp.net website网站并自动部署到IIS教程2021版

第二步:设置MSbuild路径

上图第2步点击后,进入到configureTools(浏览器地址栏显示https://jhrs.com/configureTools)界面,挺到MSbuild的位置,如下图所示:

Jenkins怎样配置MSbuild

填入MSbuild路径,设置名称就打完收工保存即可。

configuration-msbuild-1

新建构建任务

使用管理员账号登录Jenkins进入后台,左侧菜单可以看到,新建构建任务,如下图所示:

新建Jenkins构建任务

点击新建Item后跳转到下图所示的一个页面,按图中给出的方法操作即可,点击图片可以查看大图哈。

通过jenkins创建jhrs.com自动发布任务

保存后进入到最后一步,最后一步内容较多,也是比较重要的一步,配置正确关系到是否能自动构建,自动部署成功。

配置构建任务参数

配置构建任务参数如下图所示,分为了(General,源码管理,构建触发器,构建环境,构建,构建后操作)6个步骤:

设置jhrs.com构建任务参数

General

General这里主要是填写一些描述信息,例如我这里演示任务填的是:“当前是一个测试https://jhrs.com 持续集成并自动部署的一个任务,当项目团队成员提交代码到 TFS 后,jenkins可以定时自动获取到最新代码编译,发布,部署到IIS。”。当项目完毕,你也可以选择停止构建。

源码管理

源码管理处做的工作就是告诉Jenkins到哪儿去拉取(获取)源代码,如果公司内部搭建了gitlab或者TFS,或者Team Foundation Server 2013这种源码管理工具的话,就找到对应项目的克隆地址复制下来填上去即可。例如下面我随便填的一个地址:https://github.com/jhrscom/JHRS.git

设置jhrs.com构建任务源码克隆地址

如果你看不到类似上图那样的git,说明没有安装好插件,再仔细看看本文关于插件介绍的部分。

构建触发器

构建触发器这里主要就是设置触发规则,可以选择主动构建,即有代码提交,由源码管理工具主动通知jenkins构建,也可以采用定时构建,如每隔5分钟检测一次是否有最新代码提交,有就获取最新代码构建就是了,你可以想像成 ajax轮询请求,查询服务器端(源代码管理服务器)是否有更新。

设置jhrs.com构建任务时间

关于上面的 H/5 * * * * 时间设置规则,可以参见这篇文章

构建环境

构建环境根据自己需要选择吧,不懂的翻译下或者google搜索一下,看下官方文档就明白了。

设置jhrs.com构建环境

构建(相当重要的设置)

构建这里的设置相当重要,也不能整错。构建这里提供的完整功能如下图所示:

构建功能列表

分别是:使用MSbuild编译Visual Studio项目或者解决方案,执行Windows批处理命令,执行shell,调用Ant,调用Gradle脚本等地。

对于C#开发的项目来说,例如website网站,asp.net应用程序,asp.net core网站程序等等,可以按照先通过nuget还原引用的第三方类库(dll),再编译和发布项目,最后推送到测试或者正式服务器的步骤来配置构建参数。因此在构建这儿,需要先执行windows批处理命令(Execute Windows batch command)调用nuget还原第三方dll(不然代码都编译不过呀),然后再使用MSbuild编译Visual Studio项目或者解决方案(Build a Visual Studio project or solution using MSBuild),最后再执行一个windows批处理命令将发布好的文件部署到测试或者正式服务器就OK了。

所以本文分享的是配置了3个命令,分别如下3个图所示。

nuget还原第3方dll命令
设置jhrs.com构建任务Nuget还原dll

上面有4条命令,表示需要对4个网站进行还原引用的第三方dll,其中还有内部库的还原地址,就是告诉nuget到哪儿获取这些公司内部编写的dll(https://jhrs.com/lib/nuget)。

nuget restore 网赚江湖\packages.config -packagesDirectory packages -source "https://api.nuget.org/v3/index.json;https://jhrs.com/lib/nuget"
nuget restore 网文江湖\packages.config -packagesDirectory packages -source "https://api.nuget.org/v3/index.json;https://jhrs.com/lib/nuget"
nuget restore 人在江湖\packages.config -packagesDirectory packages -source "https://api.nuget.org/v3/index.json;https://jhrs.com/lib/nuget"
nuget restore IT江湖\packages.config -packagesDirectory packages -source "https://api.nuget.org/v3/index.json;https://jhrs.com/lib/nuget"
使用MSbuild编译website网站
设置jhrs.com构建任务的解决方案和选择MSBuild

一些注意事项上图中已有说明。

Jenkins自动部署网站到IIS

要想使用Jenkins实现自动部署到IIS,需要使用msdeploy.exe命令,完整的配置如下图所示:

设置jhrs.com构建任务自动部署命令

上面有4条命令,分别部署4个网站。

"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:IisApp='%WORKSPACE%\PrecompiledWeb\网赚江湖' -dest:iisapp='jhrs.com\wzjh',computerName='https://jhrs.com:8172/msdeploy.axd',username=administrator,password=administr23432XDG#@#@$XG,authType='Basic' -enableRule:DoNotDeleteRule -allowUntrusted -enablerule:AppOffline -skip:objectName=filePath,absolutePath=.*web\.config
  • -source参数:表示jenkins编译发布后的文件保存路径(指发布后网站目录),%WORKSPACE%表示jenkins的工作目录。
  • -dest:iisapp参数:表示IIS服务器上哪个网站,其中jhrs.com是主站,而wzjh是虚拟目录或者应用程序。computerName表示服务器地址,内部使用只需要替换域名为你的IP地址即可,后面的username和password分别表示登录服务器的用户名和密码;正式使用时,单独创建一个部署账号即可。
  • -enableRule参数:启用DoNot删除规则
  • -allowUntrusted参数:比较重要,不加这个参数会因为安全问题报错,下面会单独介绍。
  • -skip参数:忽略文件参数,正发布到服务器上,有些文件不想更新到服务器上可以使用此参数忽略掉,这个参数可以多次使用。可以忽略目录,文件。

本文关键字:.net core 最新部署教程.net core web api部署到IIS.net core部署教程.net core部署到IIS手把手教你部署.net core程序

完整配置如下图所示:

设置jhrs.com构建任务完整参数设置

一些问题总结

如果非website项目,而是asp.net 应用程序或者 .net core开发的项目,可以在设置MSBuild编译时可以设置Command Line Arguments参数指定MSBuild的编译行为,如:

/t:Rebuild /p:Configuration=Release;PublishProfile=你的配置名称;DeployOnBuild=true;VisualStudioVersion=11.0
/t:Build /p:Configuration=Release /p:WebProjectOutputDir=E:\mysite\jhrs.com /p:OutputPath=E:\mysite\jhrs.com\bin

/t:Rebuild /p:Configuration=Release /p:DeployOnBuild=true;PublishProfile=发布到jhrs.com /p:TargetFrameworkVersion=v4.7.2 /p:UserName=administrator /p:Password=jhrs.com 343#S.

自动部署时遇到的安全性错误:

C:\Users\Administrator>”C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe” -verb:sync -source:IisApp=’E:\workspace\jhrs.com\PrecompiledWeb\网赚江湖’ -dest:iisapp=’jhrs.com\wzjh’,computerName=’https://jhrs.com:8172/msdeploy.axd’,username=administrator,password=jhrs.com1s23!@e#,authType=’Basic’ -enableRule:DoNotDeleteRule
信息: 正在将 ID“138c1b47-48d5-4488-98ca-cfcc5aca7732”用于到远程服务器的连接。
错误代码: ERROR_CERTIFICATE_VALIDATION_FAILED
更多信息: 已使用指定的进程(“Web Management Service”)连接到远程计算机(“jhrs.com”),但未能验证服务器的证书。如果 你信任该服务器,请再次连接并允许不信任的证书。 在以下位置了解更多信息: https://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED。
错误: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
错误: 根据验证过程,远程证书无效。
错误计数: 1。

自动部署时遇到的安全性错误
自动部署时遇到的安全性错误

如果遇到以上错误,需要在部署命令上加上 -allowUntrusted 参数即可。例如:

"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:IisApp='%WORKSPACE%\PrecompiledWeb\网赚江湖' -dest:iisapp='jhrs.com\wzjh',computerName='https://jhrs.com:8172/msdeploy.axd',username=administrator,password=administr23432XDG#@#@$XG,authType='Basic' -enableRule:DoNotDeleteRule -allowUntrusted -enablerule:AppOffline -skip:objectName=filePath,absolutePath=.*web\.config

关于这个问题可以参考微软官方文档

nuget路径问题

添加nuget内部库命令如下图所示:

 添加nuget内部源
添加nuget内部源

nuget路径不对请指定全路径,本文中使用的是相对路径,即我将nuget.exe放到了和jenkins工作目录一起,例如全路径写法为:

f:\mysite\nuget.exe restore 网赚江湖\packages.config -packagesDirectory packages -source "https://api.nuget.org/v3/index.json;http://jhrs.com/lib/nuget"

构建失败通知问题

构建失败通知我是使用的email,也只需要安装好email的插件,配置即可,这部分内容比较简单,如下图所示配置即可,当然你可以配置得更精细化。

Jenkins持续集成asp.net website网站并自动部署到IIS教程2024版 1

更加精细化的邮件通知配置:

Jenkins持续集成asp.net website网站并自动部署到IIS教程2024版 2

点击上图中的高级,可以更加详细的设置,如下图所示,就自己看吧。

Jenkins持续集成asp.net website网站并自动部署到IIS教程2024版 3

以上就是关于使用jenkins实现古老的website网站持续集成,自动部署的一些经验总结,希望能帮助到有需要的朋友。

加入电报群

【江湖人士】(jhrs.com) 投稿作者:IT菜鸟,不代表江湖人士立场,如若转载,请注明出处:https://jhrs.com/2021/42387.html

扫码加入电报群,让你获得国外网赚一手信息。

文章标题:Jenkins持续集成asp.net website网站并自动部署到IIS教程2024版

(0)
IT菜鸟的头像IT菜鸟普通会员
上一篇 2021-06-26 12:51
下一篇 2021-06-27 11:49

热门推荐

Leave a Reply

Sending

国外老牌便宜域名服务商Namecheap注册com域名大优惠,抢到就赚到,优惠码:NEWCOM698
$5.98/年
直达官网