netcore net dotnet deploy contained deployment msbuild teamcity msdeploy webdeploy

deployment - dotnet - net core 2.1 publish exe



Rompiendo el paquete MsBuild y desplegándolo en comandos separados MsBuild y MsDeploy (3)

Tengo algunos problemas al dividir un paquete MsBuild + implementar comando en dos comandos separados. (Necesito hacer esto para pasar parámetros adicionales a MsDeploy).

El comando que funciona bien se ve así:

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

El comando de empaquetado separado se ve así:

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

que funciona bien Pero luego la porción 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

falla, con el siguiente error en 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''.

(y muchas más operaciones de lectura / escritura)

Algo está yendo claramente mal con las rutas a las que está intentando acceder (ya que funciona bien con el otro método) - No estoy seguro de que siquiera intente utilizar la orientación de iisApp correctamente, y por el momento no creo que la web correcta .config''s será desplegado tampoco.


Lo tengo arreglado ahora - Necesitaba un comando diferente al que el archivo .cmd generado automáticamente estaba usando, pero al comparar los dos me permitieron arreglarlo (gracias @Vishal R. Joshi)

Las diferencias que necesitaba eran:

  • autenticación básica
  • permitir certificados no confiables
  • ? site = staging.webserver al final de la ruta MsBuild.axd, como con mi comando original
  • anula el nombre de la aplicación web IIS que se establece en el archivo params
  • habilitar la regla de no eliminar

El comando ganador es el siguiente:

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

¡Espero que esto ayude a alguien!


Agregue una regla de delegación en el servidor usando inetmgr para permitir que staging-deploy lleve a cabo operaciones set-Acl. Inetmgr -> Haga clic en el nodo del servidor -> Delegación del servicio de administración (en Gestión) -> Haga clic en Agregar regla a la derecha -> Elija la plantilla etiquetada "Establecer permisos para aplicaciones" -> Aceptar valores predeterminados y haga clic en Aceptar.

Esto debería permitirle implementar cualquier paquete o manifiesto con setAcl, siempre que el usuario al que está implementando tenga permisos para el sitio en el que está implementando.