如何逃避竹指挥任务中的空白空间

时间:2016-12-12 10:34:43

标签: msdeploy bamboo webdeploy

我想使用msdeploy.exe在竹子上进行部署。

我配置一个命令在代理上运行msdeploy.exe 并尝试使用参数运行它:

-verb:sync -source:contentPath="${bamboo.build.working.directory}" -dest:contentPath="Default Web Site/application-name",ComputerName="http://server/MSDeployAgentService",userName=user-name,password=password -verbose

此命令适用于我当地的cmd。

然而,在竹子上我得到了一个错误:

  

无法识别的参数"" -dest:contentPath ="默认'。所有参数必须以" - "开头。   它表明,对待" Web .."因为空格空间而作为第二个参数。

我尝试了一些但没有成功的事情:

  
使用%20进行编码
"默认网络   网站/应用程序名" - > "默认%20Web%20Site /应用程序名"   
结果 - 默认%20Web%20Site不存在
这是有效的   当我使用msbuild时。
逃生用^
  
^"默认网站/应用程序名称^"
结果:"无法识别   参数..."
使用单引号'
'默认   网站/应用程序名称'
结果:"无法识别   参数......"

Bamboo文档说要使用:"要传递给命令的参数。必须引用带有空格的参数" 但是我已经引用了我的参数。

1 个答案:

答案 0 :(得分:0)

它可能是因为5岁竹问题:https://jira.atlassian.com/browse/BAM-10740

作为一种解决方法,您可以创建powershell脚本,该脚本将路径作为输入参数并从竹子执行,例如:

Synchronize.ps1脚本:

Param(
[Parameter(Mandatory=$true)]
[string]$Server,
[Parameter(Mandatory=$true)]
[string] $UserName,
[Parameter(Mandatory=$true)]
[string] $Password,
[Parameter(Mandatory=$true)]
[string]$LocalPath,
[Parameter(Mandatory=$true)]
[string]$RemotePath
)

Write-Host "Synchronize contents of $RemotePath on host $Server"

& "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:contentPath="$LocalPath" -dest:contentPath="$RemotePath",ComputerName="http://$Server/MSDeployAgentService",userName=$UserName,password=$Password -verbose

并添加bamboo powershell脚本任务Synchronize.ps1和参数,例如:

-Server ${bamboo.My_Server} -LocalPath '${bamboo.build.working.directory}\Artifacts' -RemotePath 'D:\My app\My folder\' ...

缺点是您必须确保代理主机上可以使用Web部署,例如。如果您运行的是早于5.13的Bamboo,则添加虚拟Web部署转储任务。