jenkins构建.net core项目
前言
本文涉及jenkins自动构建配置、文件上传和iis远程启停等内容
一、jenkins创建一个自由风格的软件项目

二、配置源码获取方式
本文采用git方式

三、配置编译方式
在Build一栏增加shell执行,如下图

cd C:/Users/jenkins/.jenkins/workspace/xxxxxxx/ dotnet clean --configuration Release dotnet build dotnet publish -o D:/xxxx
四、远程停止iis网站和应用池
1、由于规划原因,.net core项目目前还部署在iis上,网站发布时需要先停止网站及应用池(当网站处于被访问时,未停止直接替换发布后的文件会提示文件占用)。
2、这里卡了好久,刚开始想用psexec工具来实现,奈何各种尝试后无果,最终决定通过自己手撸代码来实现,思路是:开发一个可以停启iis应用池和网站的api接口,将接口服务和项目部署在同一台服务器,jenkins通过访问接口服务来实现对项目的停止和启动。
3、手撸源码https://github.com/hellozjd/IISMGR
部署的时候需要注意下:应用程序池的高级设置里进程模型下的标识选择改为LocalSystem
五、远程停止目标服务器上的应用池和站点
通过curl工具请求目标服务器上的iis停启服务实现对目标站点的停启操作
curl下载链接https://curl.haxx.se/download.html
在Build一栏增加windows批处理执行,如下图

cd /D D:\xxxx\bin curl -X GET "http://xxx.xxx.xxx/api/iis/StopSite?siteName=xxxx" -H "accept: */*" curl -X GET "http://xxx.xxx.xxx/api/iis/StopPool?poolName=xxxx" -H "accept: */*"
六、上传发布后的文件到目标服务器
通过一个我另外一篇博客的上传工具https://www.cnblogs.com/chuyismile/p/13599907.html将发布文件上传到指定服务器
C: cd C:\Users\jenkins\.jenkins\workspace FtpNet.exe 200.200.x.xxx 21 ftpusername passwork D:\BuildCode\ xxxx
七、远程启动应用池和站点
cd /D D:\xxx\curl-7.73.0-win64-mingw\bin curl -X GET "http://200.200.xx.xx/api/iis/StartPool?poolName=xxx" -H "accept: */*" curl -X GET "http://200.200.xx.xx/api/iis/StartSite?siteName=xxx" -H "accept: */*"
浙公网安备 33010602011771号