78 votes

Comment puis-je me TFS2010 acheminer MSDEPLOY pour moi MSBUILD ?

Il y a un super PDC parler disponible ici à partir de Vishal Joshi, qui décrit la nouvelle MSDEPLOY fonctionnalités de Visual Studio 2010 - ainsi que la façon de déployer une application dans TFS. (Il y a aussi un grand discours de Scott , Hanselman, mais il n'est pas aller dans TFS).

Vous pouvez utiliser MSBUILD dans TFS2010 d'appel par l'intermédiaire de MSDEPLOY pour déployer votre colis à IIS. Ceci est fait au moyen de paramètres à MSBUILD.

Le talk explique certains des paramètres de ligne de commande tels que :

/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"

Mais où est la documentation de cette - je ne peux pas trouver une?

J'ai passé toute la journée à essayer d'obtenir ce à travail et ne peut pas tout à fait le faire à droite et continuer de se retrouver avec plusieurs erreurs. Si je lance le paquet cmd le fichier qu'il déploie parfaitement. Si je lance WebDeploy par le biais de Visual Studio, il fonctionne également parfaitement.

Mais je veux obtenir l'ensemble du déploiement en cours d'exécution à travers msbuild de l'utilisation de ces arguments et non sur un autre appel à l' msdeploy ou à l'exécution du package .cmd le fichier. Comment puis-je faire cela?

PS. Oui j'ai l' Web Deployment Agent Service en cours d'exécution. J'ai aussi le service de gestion de l'exécution sous IIS. J'ai essayé d'utiliser les deux.


Args je suis en utilisant :

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:Configuration=Release 
/p:CreatePackageOnPublish=True  
/p:DeployIisAppPath=staging.example.com   
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd 
/p:AllowUntrustedCertificate=True

de me donner :

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.La publication.cibles (2660): VsMsdeploy a échoué.(Distance de l'agent (URL https://staging.example.com:8172/msdeploy.axd?site=staging.example.com) n'a pu être contacté. Assurez-vous que la télécommande de service de l'agent est installé et démarré sur l'ordinateur cible.) Détails de l'erreur: l'agent Distant (URL https://staging.example.com:8172/msdeploy.axd?site=staging.example.com) n'a pu être contacté. Assurez-vous que la télécommande de service de l'agent est installé et démarré sur l'ordinateur cible. Une non prise en charge a pas reçu de réponse. L'en-tête de réponse 'MSDeploy.La réponse " a ", mais " v1 " a été prévu. Le serveur distant a retourné une erreur: (401 non autorisé.

48voto

Pure.Krome Points 28473

IIS7 + connexes de réponse ....

Ok, voici ce que j'ai fait. Plus ou moins, suivant le post de Simon Weaver dans ce thread/question.

Mais quand il s'agit de la MSBuild paramètres .. la plupart des gens ici sont à l'aide de configuration suivantes: /p:MSDeployPublishMethod=RemoteAgent ce qui est PAS bon pour IIS7. À l'aide de ce paramètre signifie TFS tente de se connecter à l'url: https://your-server-name/MSDEPLOYAGENTSERVICE Mais pour accéder à cette url, à authentifier l'utilisateur doit être un Administrateur. Qui est fraked. (Et vous avez besoin d'avoir l'Admin-règle de remplacement truc coché). Cette url est pour IIS6 je pense.

Voici le message d'erreur standard lorsque vous essayez de vous connecter à l'aide de RemoteAgent :-

Standard 401 Frak Arrêt u sucer RemoteAgent, erreur

C:\Program Fichiers (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.La publication.objectifs (3588): Les tâches de déploiement a échoué.(Distance de l'agent (URL http://your-web-server/MSDEPLOYAGENTSERVICE) n'a pu être contacté. Assurez-vous que le distance de l'agent de service est installé et démarré sur l'ordinateur cible.) Faire assurez-vous que le nom du site, nom d'utilisateur, et le mot de passe sont corrects. Si le problème est ce n'est pas résolu, veuillez contacter votre local ou l'administrateur du serveur. Erreur détails: agent Distant (URL http://your-web-server/MSDEPLOYAGENTSERVICE) n'a pu être contacté. Assurez-vous que le distance de l'agent de service est installé et démarré sur l'ordinateur cible. Un non pris en charge a pas reçu de réponse. L' en-tête de réponse 'MSDeploy.La réponse" a 'V1', mais 'v1' a été prévu. L' serveur distant a retourné une erreur: (401) Non autorisé.

Alors .. vous avez besoin de changer votre MSDeployPublishMethod de cette:

/p:MSDeployPublishMethod=WMSVC

L' WMSVC stands pour Windows Gestionnaire de Service. En gros, c'est une nouvelle wrapper sur la Distance de l'Agent, mais maintenant nous permet de corriger fournir un nom d'utilisateur et mot de passe .. où l'utilisateur n'a PAS à être un admin! (joie!) Alors maintenant, vous pouvez corriger définir les utilisateurs u veulent avoir accès à .. par Site web ..

enter image description here

Il est également maintenant tente de frapper le l'url: https://your-web-server:8172/MsDeploy.axd <-- ce qui est EXACTEMENT ce que le Visual Studio 2010 Publish fenêtre ne! (OMG -> PENNY GOUTTES!! BOOM!)

enter image description here

Et voici ma dernière MSBuild paramètres:

/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

Notez le nom d'utilisateur est le nom de domaine? Ya besoin de ça, là. Aussi, dans ma photo, j'ai permis à notre DOMAINE aux UTILISATEURS l'accès au site web de management. En tant que tel, mon nouveau compte d'utilisateur, j'ai ajouté (TFSBuildService), membre de l' Domain Users groupe ... donc, c'est comment tout cela fonctionne.

- Si u avez lu tout cela, avoir un lolcat (parce qu'ils sont TELLEMENT 2007)....

enter image description here

19voto

Simon_Weaver Points 31141

Voici les étapes que finalement fonctionné pour moi. Je voulais faire le travail avec RemoteAgent, mais ne pouvait pas obtenir que le travail peu importe ce que j'ai essayé.

Vous n'avez pas à faire exactement comme cela, mais c'est la façon dont je l'ai eu à travailler

  • Configurer WMSVC
  • Assurez-vous que le service est démarré
  • Configurer IIS utilisateur (cliquez sur la partie SUPÉRIEURE de la PLUPART des SERVERNAME dans IIS) et allez dans " Gestionnaire des services internet des Utilisateurs. Je suggère de faire la différence avec votre nom windows.
  • Assurez-vous que le compte d'utilisateur pour WMSVC (SERVICE LOCAL pour moi) a des droits d'écriture pour le répertoire IIS que vous utilisez
  • Dans mon cas, je suis en utilisant un certificat SSL (même si c'est de frapper localhost).

Rappelez-vous ce sont tous les arguments pour MSBUILD ajoutée au sein de la définition de Build TFS

/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish 
/p:MSDeployPublishMethod=WMSVC 
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd 
/p:username=sweaveriis 
/p:password=abcd1234 
/p:DeployIisAppPath=staging.example.com/virtual_directory_name
/p:AllowUntrustedCertificate=True

Note: staging.example.com est en fait la zone locale avec un fichier hosts entrée pointant vers l'adresse 127.0.0.1. Localhost serait probablement ici.

Des articles utiles:

Dépannage MSDeploy questions

Dépannage

16voto

Sayed Ibrahim Hashimi Points 25707

Malheureusement, il n'y a pas beaucoup d'info sur ce à ce moment. Je vais vous donner quelques conseils à la fin de ce message.


Concernant votre problème, je l'ai vu avant, quand j'essayais de le déployer à l'aide de MSDeploy et le compte que j'ai été en cours d'exécution sur de ne pas avoir les autorisations pour exécuter le déploiement sur la machine cible. Si vous avez besoin de prendre un coup d'oeil sur le compte que vos constructions sont en cours d'exécution en vertu de l', et voir si ce compte a les droits pour le déployer sur la machine cible. Si non, alors vous avez quelques options, de la subvention la construction de l'utilisateur les droits, ou de la transmettre le nom d'utilisateur/mot de passe.

Si vous souhaitez transmettre les valeurs dans des, alors vous devrez définir un élément nommé" MsDeployDestinationProviderSetting et ses métadonnées devra contenir les valeurs nécessaires.

Donc, dans votre fichier de projet (ou via les propriétés passés) définir quelque chose comme ce qui suit.

<PropertyGroup>
    <UserName>USERNAME-HERE</UserName>
    <Password>PASSWORD-HERE
</PropertyGroup>

À propos de où pouvez-vous trouver de la documentation, comme je l'ai dit avant il n'y a pas beaucoup là-bas encore. Mais puisque la totalité de la Publication Web Pipeline est capturé dans MSBuild des objectifs et des tâches, vous pouvez en apprendre beaucoup sur votre propre si vous êtes familier avec MSBuild. Si vous jetez un oeil à l' .csproj(ou .vbproj) des fichiers pour le web, les projets créés avec Visual Studio 2010, vous remarquerez une instruction comme suit:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

Cela importe le fichier situé à la %ProgramFiles(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets, et ce fichier à son tour les importations %ProgramFiles(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets

Donc, pour apprendre à ce sujet en détails ce moment, vous devez inspecter ces fichiers et de les apprendre par vous-même.


Je vais travailler sur quelque chose qui sera en couverture de ces technologies dans le détail, mais ce ne sera pas pour très longtemps, et j'ai encore beaucoup de choses à comprendre moi-même sur ce genre de choses.

Pouvez-vous essayer le nom d'utilisateur/mot de passe traiter et laissez-moi savoir si cela a fonctionné pour vous?

6voto

Chad Peck Points 306

J'ai eu un problème similaire et la solution était d'avoir le paramètre suivant:

/p:MSDeployPublishMethod=RemoteAgent

Voici tous les paramètres que j'ai utilisé.

/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MSDeployPublishMethod=RemoteAgent /p:MsDeployServiceUrl=http://my-server-name /p:nom d'utilisateur=myusername /p:mot de passe=monmotdepasse

NOTE: je ne suis pas en utilisant DeployIisAppPath parce que je suis en train de construire une solution et d'essayer de construire trois applications web à la fois. Je pense également que votre MsDeployServiceUrl doit être juste http://staging.example.com

Il semble que lors de l'utilisation de InProc (qui peut être la valeur par défaut) pour la MSDeployPublishMethod MSBuild ignore MsDeployServiceUrl et essaie toujours de le déployer sur le serveur local. Je l'ai changé pour RemoteAgent et tous les trois de mes applications web déployées avec succès. J'ai remarqué que le fichier de Package est ne pas contenues dans le MyWebApplication_Package dossier, mais ce n'est pas une grosse affaire pour moi.

4voto

zvolkov Points 9673

Notez que vous pouvez également définir DeployTarget = paquet--cela va préparer le package mais déploie pas tout de suite. Pour plus d’informations, consultez ce blog.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X