我有一个ASP.Net应用程序。我想部署到远程Windows机器。我有一个共享的wwwroot
文件夹。要从cmd
部署,请使用以下命令
c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" "C:\path_to_project" /p:SolutionDir="path_to_solution_dir" /p:DeployOnBuild=true /p:Configuration=Release /p:PublishProfile="Profile.pubxml"
个人资料的方式如下
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>\\<ip_address>\wwwroot</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>
从命令行运行正常。但是当我使用Batch插件将相同的东西放入Jenkins管道脚本时,我得到了下一个错误
error MSB3191: Unable to create directory "\\<ip_address>\wwwroot".
Could not find a part of the path '\\<ip_address>\wwwroot'
詹金斯有什么问题?配置设置有问题吗?也许我需要改变部署方法?
答案 0 :(得分:2)
早在2015/16年就已完全解决此问题。
这是我的设置:
我做了5次,所以我可以将Jenkins Windows Batch步骤中的参数(这是一项自由样式的工作,然后我完全迁移到2018年1月开始的现任职位的管道中)传递给我写给的两个DOS批处理脚本/ p>
a)远程控制目标IIS(启动/停止网站和AppPools)
b)在通过发布配置文件和MSBuild /p:DeployOnBuild
重新部署MSBuild之前,远程删除站点的当前内容。
我利用PSExec来实现“远程”功能,并将其称为DOS批处理脚本的一部分。
我敢肯定,使用Powershell可以实现相同的目的,但是原理是相同的。
答案 1 :(得分:1)
检查参数值是否已解析。还要检查运行Jenkins的帐户是否具有共享文件夹的特权。考虑到网络依赖性和并行执行的限制,我们也有类似的要求,我们在相应的框中安装了代理,并使用Jenkins从服务器进行本地部署
答案 2 :(得分:0)
尝试将<publishUrl>\\<ip_address>\wwwroot</publishUrl>
切换到您的目录。