使用Jenkins自动发布Windows服务项目
2021-04-07 15:27
标签:click mini user inline bsp iis blog 复制 job 不同于发布Web项目,自动发布Windows服务项目需要解决以下几个问题: 在msbuild之前添加一个execute windows batch command,执行cmd命令,cmd命令如下: 这里使用的是msdeploy的sync操作,通过runCommand在目标服务器上执行cmd命令。 问题: 如果服务当前是已停止状态,运行runCommand (net stop UbtripWs_Business)就会报错。 在msbuild之后添加一个execute windows batch command,执行cmd命令,cmd命令如下: 使用msdeploy的sync操作,通过runCommand在目标服务器上执行cmd命令。preSync指在复制文件之前运行的命令,postSync是复制文件之后运行的命令。 注意: msdeploy的contentpath默认是先删除目标服务器的文件再添加的,但是我们并不希望删除原来的文件,所以需要添加参数 -enableRule:DoNotDeleteRule。 1,windows服务项目 通过给msdeploy添加参数-skip,命令如下: 2,web项目 由于web项目的构建是通过msbuild+msdeploy service的方式进行的,所以没有办法像windows服务项目那样给msdeploy添加-skip参数,对于web项目的解决方案是,修改站点的csproj项目文件,添加一个Target来告诉msbuild,构建的时候就自动排除Web.config文件,命令如下: 1,Windows服务项目 msbuild之前cmd命令: msbuild参数: msbuild之后cmd命令: 2,Web项目 msbuild之前命令: msbuild参数: 1,官方文档:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd569106(v=ws.10) 2,msdeploy skip rules:https://blog.richardszalay.com/2012/12/17/demystifying-msdeploy-skip-rules/ 3,使用 MSDeploy 手動部署網站時如何避免 Web.config 被更新:https://blog.miniasp.com/post/2010/09/01/MSDeploy-Skip-Command-for-Webconfig-file.aspx 使用Jenkins自动发布Windows服务项目 标签:click mini user inline bsp iis blog 复制 job 原文地址:https://www.cnblogs.com/mcgrady/p/9107096.html
问题1:如何远程停止和开启服务
echo **********stop remote server windows service**********
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:runCommand="net stop UbtripWs_Business" -dest:auto,computername=192.168.1.21,username=administrator,password=P@ssw0rd.123
问题2:如何上传编译文件到目标服务器
echo **********以下内容有三段,1.preSync:先Kill进程,2.同步本地与远程,3.postSync:最后启动服务**********
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -preSync:runCommand="TASKKILL /F /IM SSharing.Ubtrip.WinService.exe /T",waitAttempts=30,waitInterval=1000 -source:contentpath=%WORKSPACE%\DEV\Ubtrip\SSharing.Ubtrip.WinService\bin\Debug\ -dest:contentpath=C:\WindowsServices\UbtripJob\,computername=192.168.1.21,username=administrator,password=P@ssw0rd.123 -enableRule:DoNotDeleteRule -postSync:runCommand="net start UbtripWs_Business",waitAttempts=20
自动排除Web.config和App.config
-skip:objectName=filePath,absolutePath=Web\.config,skipAction=Update
Target Name="CustomExcludeFiles" BeforeTargets="ExcludeFilesFromPackage">
ItemGroup>
ExcludeFromPackageFiles Include="Web.config">
ExcludeFromPackageFiles>
ItemGroup>
Target>
附完整构建配置
1 echo **********begin restore nuget package**********
2 C:\mcgrady\tools\nuget.exe restore "%WORKSPACE%\DEV\Ubtrip\SSharing.Ubtrip.sln" -source https://www.nuget.org/api/v2/
3 echo **********stop remote server windows service**********
4 "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:runCommand="net stop UbtripWs_Business" -dest:auto,computername=192.168.1.21,username=administrator,password=P@ssw0rd.123
参考资料
文章标题:使用Jenkins自动发布Windows服务项目
文章链接:http://soscw.com/index.php/essay/72455.html