How can I get TFS2010 to run MSDEPLOY for me through MSBUILD?

后端 未结 8 1654
北海茫月
北海茫月 2020-11-28 17:47

There is an excellent PDC talk available here from Vishal Joshi which describes the new MSDEPLOY features in Visual Studio 2010 - as well as how to deploy an application wit

相关标签:
8条回答
  • 2020-11-28 18:23

    If you can deploy your applications with fileCopy, it is easy to customize the TFS workflow to do so.

    I've used the CopyDirectory activity, with the help of these articles:

    http://www.ewaldhofman.nl/post/2010/11/09/Part-14-Execute-a-PowerShell-script.aspx

    and

    http://geekswithblogs.net/jakob/archive/2010/09/01/tfs-team-build-2010-how-to-place-the-build-output.aspx

    Very simple and straightforward.

    • I Configured the build service with a user account that has write privileges on the desired share.

    • Next, I created the CopyDirectory workflow step, configuring the source as BuildDetail.DropLocation + "_PublishedWebsites" and for the destination I created an argument, which I called "DeployPath", that can be filled in the build configuration.

    • Now I still have to implement a test to check if the build was successful before invoking the CopyDirectory activity. The articles I mentioned show how to do that. They also teach how to invoke a powershell script instead of CopyDirectory.

    0 讨论(0)
  • 2020-11-28 18:26

    IIS7 + related answer ....

    Ok - here's what I ended up doing. More or less, following the post by Simon Weaver in this thread/question.

    But when it comes to the MSBuild settings .. most people here are using following setting: /p:MSDeployPublishMethod=RemoteAgent which is NOT RIGHT for IIS7. Using this setting means TFS tries to connect to the url: https://your-server-name/MSDEPLOYAGENTSERVICE But to access that url, the user to authenticate needs to be an Admin. Which is fraked. (And you need to have the Admin-override rule thingy ticked). This url is for IIS6 I think.

    Here's the standard error message when you try to connect using RemoteAgent :-

    Standard 401 Frak Off u suck RemoteAgent, error

    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets (3588): Web deployment task failed.(Remote agent (URL http://your-web-server/MSDEPLOYAGENTSERVICE) could not be contacted. Make sure the remote agent service is installed and started on the target computer.) Make sure the site name, user name, and password are correct. If the issue is not resolved, please contact your local or server administrator. Error details: Remote agent (URL http://your-web-server/MSDEPLOYAGENTSERVICE) could not be contacted. Make sure the remote agent service is installed and started on the target computer. An unsupported response was received. The response header 'MSDeploy.Response' was 'V1' but 'v1' was expected. The remote server returned an error: (401) Unauthorized.

    So .. you need to change your MSDeployPublishMethod to this:

    /p:MSDeployPublishMethod=WMSVC
    

    The WMSVC stands for Windows Manager Service. It's basically a newer wrapper over the Remote Agent but now allows us to correct provide a user name and password .. where the user does NOT have to be an admin! (joy!) So now you can correct set which users u want to have access to .. per WebSite ..

    enter image description here

    It also now tries to hit the the url: https://your-web-server:8172/MsDeploy.axd <-- which is EXACTLY what the Visual Studio 2010 Publish window does! (OMG -> PENNY DROPS!! BOOM!)

    enter image description here

    And here's my final MSBuild settings:

    /p:DeployOnBuild=True
    /p:DeployTarget=MSDeployPublish 
    /p:MSDeployPublishMethod=WMSVC
    /p:MsDeployServiceUrl=your-server-name
    /p:DeployIISAppPath=name-of-the-website-in-iis7    
    /p:username=AppianMedia\some-domain-user 
    /p:password=JonSkeet<3<3<3
    /p:AllowUntrustedCertificate=True
    

    Notice the username has the domain name in it? Ya need that, there. Also, in my picture, I've allowed our DOMAIN USERS access to the website for managament. As such, my new user account i added (TFSBuildService) has Membership to the Domain Users group ... so that's how it all works.

    Now - if u've read all this, have a lolcat (cause they are SOOOOOOOO 2007)....

    enter image description here

    0 讨论(0)
提交回复
热议问题