Разрыв пакета MsBuild и развертывание в отдельных командах MsBuild и MsDeploy - PullRequest
12 голосов
/ 30 марта 2011

У меня возникло несколько проблем, когда я разбил команду MsBuild package + deploy на две отдельные команды. (Мне нужно сделать это, чтобы передать дополнительные параметры в MsDeploy).

Команда, которая отлично работает, выглядит следующим образом:

msbuild "src\Solution.sln" 
  /P:Configuration=Deploy-Staging 
  /P:DeployOnBuild=True
  /P:DeployTarget=MSDeployPublish
  /P:MsDeployServiceUrl=https://192.168.0.1:8172/MsDeploy.axd
  /P:DeployIISAppPath=staging.website.com 
  /P:AllowUntrustedCertificate=True 
  /P:MSDeployPublishMethod=WmSvc 
  /P:CreatePackageOnPublish=True 
  /P:UserName=staging-deploy 
  /P:Password=xyz

Отдельная команда упаковки выглядит следующим образом:

msbuild "src\Solution.sln" 
  /P:Configuration=Deploy-Staging 
  /P:DeployOnBuild=True
  /P:DeployTarget=Package 
  /P:_PackageTempDir=C:\temp\web

, который работает нормально. Но тогда часть MsDeploy:

msdeploy 
 -verb:sync 
 -allowUntrusted 
 -usechecksum
 -source:manifest=
  'src\WebProject\obj\Deploy-Staging\Package\WebProject.SourceManifest.xml'  
 -dest:auto,ComputerName=
  'https://192.168.0.1:8172/MsDeploy.axd?site=staging.website.com',
   username='staging-deploy',password='xyz',authType='basic',includeAcls='false'
 -enableRule:DoNotDeleteRule

терпит неудачу, со следующей ошибкой в ​​WmSvc.log

wmsvc.exe Error: 0 : Attempted to perform an unauthorized operation.
setAcl/C:\temp\web (Read)
ProcessId=15784
ThreadId=31
DateTime=2011-03-30T14:57:02.4867689Z
Timestamp=3802908721815
wmsvc.exe Error: 0 : Not authorized.
Details: No rule was found that could authorize user 'staging-deploy', 
         provider 'setAcl', operation 'Read', path 'C:\temp\web'.

(и еще несколько операций чтения / записи)

Что-то явно не так с путями, к которым он пытается получить доступ (поскольку он отлично работает с другим методом) - я не уверен, что он даже пытается правильно использовать таргетинг iisApp, и в настоящий момент я не думаю, что правильные файлы web.config будут также развернуты.

Ответы [ 3 ]

15 голосов
/ 31 марта 2011

Я исправил это сейчас - мне нужна была команда, отличная от той, которую использовал автоматически сгенерированный файл .cmd, но сравнение двух позволило мне исправить это (спасибо @Vishal R. Joshi)

Различия мне были нужны:

  • базовая аутентификация
  • разрешить недоверенные сертификаты
  • ? Site = staging.webserver в конце пути MsBuild.axd, как с моей оригинальной командой
  • переопределить имя IIS Web App, заданное в файле параметров
  • включить правило не удалять

Команда-победитель выглядит следующим образом:

msdeploy 
 -verb:sync 
 -allowUntrusted 
 -source:package='src\WebProject\obj\Deploy-Staging\Package\WebProject.zip'  
 -dest:auto,ComputerName=
  'https://192.168.0.1:8172/MsDeploy.axd?site=staging.website.com',
  username='staging-deploy',password='xyz',authType='basic',includeAcls='false'
  setParamFile:
    "src\WebProject\obj\Deploy-Staging\Package\WebProject.SetParameters.xml"
 -setParam:name='IIS Web Application Name',value='staging.website.com'
 -enableRule:DoNotDeleteRule
 -disableLink:AppPoolExtension -disableLink:ContentExtension 
 -disableLink:CertificateExtension

Надеюсь, это кому-нибудь поможет!

1 голос
/ 31 марта 2011

Добавьте правило делегирования на сервер, используя inetmgr, чтобы разрешить staging-deploy выполнять операции set-Acl.Inetmgr -> Щелкните на узле сервера -> Делегирование службы управления (в разделе «Управление») -> Нажмите «Добавить правило справа» -> Выберите шаблон с меткой «Задать разрешения для приложений» -> Принять значения по умолчанию и нажмите «ОК».

Это должно позволить вам развернуть любой пакет или манифест с помощью setAcl, если у пользователя, с которого вы развертываете, есть разрешения на сайт, на который вы развертываете.

0 голосов
/ 23 мая 2013

Вы можете указать флаг -setParam: name = '', value = '' при вызове файла MyProject.deploy.cmd, который создается при создании пакета из веб-проекта. Cmd является дружественной оболочкой для msdeploy.exe, поэтому вам не нужно указывать все остальные значения по умолчанию.

Вот подробности: http://evolutionarydeveloper.blogspot.co.uk/2013/05/specifying-environment-variables-at.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...