Jenkins无法访问共享文件夹

时间:2018-05-14 10:53:28

标签: jenkins cmd msbuild

我有一个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'

詹金斯有什么问题?配置设置有问题吗?也许我需要改变部署方法?

3 个答案:

答案 0 :(得分:2)

早在2015/16年就已完全解决此问题。

这是我的设置:

  1. 在要部署到远程(从Jenkins主服务器的角度来看)IIS站点的Web项目上,按目标环境发布配置文件。
  2. 每个目标环境的Web.config转换文件
  3. 在目标IIS计算机上安装了Web Deploy 3.6。
  4. 确保获得“绿色勾号”以证明发布配置文件中的连接。 (请注意,您可能必须重新安装Web Deploy才能使其正常工作。由于某些原因,Web Deploy第一次无法正确安装)
  5. 关于配置文件名称,IIS站点名称和AppPool名称的严格命名标准,因此所有内容都匹配。
  6. 我做了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>切换到您的目录。