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.
Puede especificar el indicador -setParam: name = '''', value = '''' cuando llama al archivo MyProject.deploy.cmd que se crea cuando genera un paquete desde un proyecto web. El cmd es un contenedor amigable alrededor de msdeploy.exe, por lo que no es necesario especificar el resto de los valores predeterminados.
Aquí están los detalles: http://evolutionarydeveloper.blogspot.co.uk/2013/05/specifying-environment-variables-at.html