我想使用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文档说要使用:"要传递给命令的参数。必须引用带有空格的参数" 但是我已经引用了我的参数。
答案 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部署转储任务。