What is expected for DeployIisAppPath setting on MSBuild argument?

MADCookie picture MADCookie · Mar 6, 2014 · Viewed 13.7k times · Source
SERVERNAME(myDomain\Username)
   Application Pools
   Sites
      DEV Site1
      DEV Site2
      dev Site 3
         bin
         Content
         ...
         Views
      etc ...

This is my basic layout of our DEV web server. Our DEV web server has many sites running on it. I am trying to use TFS 2013 Build to publish my web site to the DEV server following articles from Vishal Joshi, Microsoft and others.

My error is "ERROR_SITE_DOES_NOT_EXIST". The basic fix does not help me.

In my example, I'm using /p:DeployIisAppPath="dev Site 3". There are no applications defined under the site.

Microsoft's instructions are useless. I thought I should just use the IIS site name, but that is not proving successful. What is the value expected for this parameter? Do I someone need the App Pool name? Is there a command I can issue against IIS to export the list of all the AppPaths available? Once I figure this out on the DEV server, I have to do the same with the STG server.

[UPDATE 1] Adding the full MSBuild arguments

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=True 
/p:MSDeployPublishMethod=InProc 
/p:MSDeployServiceUrl=http://SERVER:PORT/MsDeployAgentService
/p:DeployIisAppPath="dev Site 3"

Answer

CodeWarrior picture CodeWarrior · Mar 6, 2014

Your server is inside your domain, so I will use the solution that I have for our inside server. I had to come up with something different for our DMZed servers.

MSBuild arguments

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSvc 
/p:MsDeployServiceUrl="https://SERVER:8172/MsDeploy.axd?Site=direct" 
/p:DeployIisAppPath="direct" 
/p:AllowUntrustedCertificate=True 
/p:AuthType=NTLM 
/p:UserName=

This solution uses WMSvc (installed on the webserver) to allow the TFS build process to access the portions of the server that it needs to when deploying. I havent tried MSDeployAgentService, so i am unsure about that one. In my case, I do not create a package on deploy ( I seem to recall it returned an error when I did that, although I don't remember what it was).

Also, last three arguments are necessary to for the TFS Build Service account to log into VMSvc and do its thing. Leaving UserName blank causes it to log in as the running account (no need to supply a password, yay!).

Build log

Here is an example output from the build log on a successful deployment.

   MSDeployPublish:
     Start Web Deploy Publish the Application/package to https://SERVER:8172/MsDeploy.axd?Site=direct ...
     Starting Web deployment task from source: manifest(C:\Builds\1\Direct\Continuous Integration (SERVER)\Binaries\_PublishedWebsites\WEBPROJECTNAME_Package\Archive.SourceManifest.xml) to Destination: auto().
     Adding ACL's for path (direct)
     Adding ACL's for path (direct)
     Updating file (direct\bin\Content\images\buttonBkgHover.png).
          ... Removed for brevity => This section is all 'Updating file (PATH).'
     Updating file (direct\Web.config).
     Adding ACL's for path (direct)
     Adding ACL's for path (direct)
     Successfully executed Web deployment task.
     Publish is successfully deployed.
   PipelineDeployPhase:
     Publish Pipeline Deploy Phase