2016-12-12 16 views
0

Я хочу сделать развертывание на бамбуке, используя msdeploy.exe.Как избежать пустого пространства в задаче командной строки bamboo

настроить команду для запуска 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

Эта команда хорошо работает с моей локальной ЦМД.

Однако на бамбуковом я получил ошибку:

Unrecognized argument '"-dest:contentPath="Default'. All arguments must begin with "-" It suggests that treat "Web.." as a second parameter because of an empty space.

Я пытался несколько вещей, но без успеха:

Encode with %20
"Default Web Site/application-name" -> "Default%20Web%20Site/application-name"
Result - Default%20Web%20Site doesn't exist
This works when I were using msbuild.
Escape with ^
^"Default Web Site/application-name^"
Result: "Unrecognized argument..."
Using single quotes '
'Default Web Site/application-name'
Result: "Unrecognized argument..."

Бамбуковых Документации говорят использовать: «Довод вы хотите передать команда. Аргументы с пробелами в них должны быть указаны « Однако я уже процитировал свой параметр.

ответ

0

Это probabaly из-за 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 

И добавить задачу бамбука PowerShell скрипт Synchronize.ps1 с параметрами, например:

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

Недостатком является то, что вы должны убедиться, что веб-развертывание доступно на узле агента, например. добавив фиктивный веб-развертывание задачи дампа, если вы используете бамбук старше 5.13.