Comment puis-je obtenir TFS2010 pour exécuter MSDEPLOY pour moi par MSBUILD?
Il y a un super PDC parler disponible ici 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 parler 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
fichier 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
à l'aide de ces arguments et non un appel séparé à msdeploy
ou à l'exécution du package .cmd
fichier. Comment puis-je faire cela?
PS. Oui j'ai le 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é.
- j'ai été assez déçu aussi. espère que vous avez compris de travail à la fin. pour les équipes sans un dédié (surplus) construction guy il devrait être plus facile. bien qu'il s'avère être un jeu d'enfant comparé à la Facebook de l'intégration j'ai travaillé récemment !
- heh 🙂 j'ai fait aujourd'hui finalement. Elle travaille, elle travaille!
- non, il fonctionne très bien quand VOUS savez comment l'utiliser 😉
- Question avec la liste des options: stackoverflow.com/questions/5598668/...
- Peut-être que la construction guy n'est pas en trop après tout 😉
Vous devez vous connecter pour publier un commentaire.
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
qui est PAS DROIT 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
Donc .. vous avez besoin de changer votre
MSDeployPublishMethod
à ceci:La
WMSVC
est l'abréviation de 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 ..Elle aussi tente de frapper le l'url:
https://your-web-server:8172/MsDeploy.axd
<-- ce qui est EXACTEMENT ce que le Visual Studio 2010Publish
fenêtre ne! (OMG -> PENNY GOUTTES!! BOOM!)Et voici ma dernière MSBuild paramètres:
Notez le nom d'utilisateur est le nom de domaine-t-il? 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 la
Domain Users
groupe ... donc, c'est comment tout cela fonctionne.Maintenant - si u avez lu tout cela, avoir un lolcat (parce qu'ils sont TELLEMENT 2007)....
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
Rappelez-vous ce sont tous les arguments pour MSBUILD ajoutée au sein de la TSF définition de Build
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
Malheureusement, il n'y a pas beaucoup d'info sur ce à ce moment. Je vais vous donner quelques conseils à la fin de ce message si.
Au sujet de votre problème, j'ai déjà vu ça quand j'ai essayé de 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.Dans votre fichier de projet (ou via les propriétés passés) définir quelque chose comme ce qui suit.
Sur 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:
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
Afin d'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?
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.
Notez que vous pouvez également définir DeployTarget=Paquet -- cela permettra de préparer le colis mais pas déployer tout de suite. Pour plus d'info voir ce blog.
Pour moi le problème était que
Web Deployment Agent Service
n'a pas été démarré.Un simple
net start msdepsvc
il fixe. Vous pouvez également définir le mode de démarrage Automatique sur ce service.Les arguments que j'utilise sont:
Vous avez seulement besoin de spécifier le nom du serveur, et non pas le chemin d'accès complet (pas de http nécessaire).
Remarque que le nom d'utilisateur est vide pour contourner un bug avec l'authentification NTLM (de cette manière, il utilise les informations d'identification de l'agent de build TFS pour le déploiement). voir la accepté de répondre ici
Voici comment je l'ai eu à travailler. Ce fut avec Webdeploy 2.0. Je suis le déploiement sur le même domaine à partir de notre machine de compilation pour un dev serveur web de la machine windows server 2008 r2. Le compte que je suis à l'aide de déployer est un compte de service sur le domaine qui a les droits d'administrateur sur les deux machines. Ma solution comprend un couple de test de l'unité de projets, un mvc3 projet, et un couple de bibliothèques en vertu de la solution. Si vous n'installez pas de MVC3 sur le serveur de déploiement de regarder http://www.iwantmymvc.com/2011-03-23-bin-deploy-aspnet-mvc-3-visual-studio pour obtenir des conseils.
/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:DeployIisAppPath="Site Web par Défaut/YourpplicationNameHere" /p:MsDeployServiceUrl=https://devserver02:8172/msdeploy.axd /p:AllowUntrustedCertificate=True /p:UserName=yourDomain\buildaccount /p:Mot de passe=mot de passe
L'article que j'ai lutté avec d'abord les guillemets autour de "Site Web par Défaut/YourpplicationNameHere" Qui donne à la partielle d'erreur:
MSBUILD : erreur MSB1008: un Seul projet peut être spécifié.
Ce qui se passe quand il n'y a pas de guillemets autour de Site Web par Défaut/YourApplicationNameHere
La prochaine erreur que j'ai eu était fait d'un mauvais nom d'utilisateur et mot de passe dans mes titres de compétences pour le déploiement. Il a donné cette erreur:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.La publication.cibles (3588): Les tâches de déploiement a échoué.(Distance de l'agent (URL https://devserver02:8172/msdeploy.axd?site=Default Site Web) 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.) Assurez-vous que le nom du site, nom d'utilisateur et mot de passe sont corrects. Si le problème n'est pas résolu, veuillez contacter votre représentant ou l'administrateur du serveur. Détails de l'erreur: l'agent Distant (URL https://devserver02:8172/msdeploy.axd?site=Default Site Web) 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é.
C'était parce que le nom d'utilisateur et le mot de passe que j'avais dans /p:UserName=/p:Password=did ne pas inclure le domaine de l'utilisateur. Même si la construction était en cours d'exécution en vertu de cet utilisateur, il ne voulait pas se déployer. J'ai donc frapper directement l'url https://devserver02:8172/msdeploy.axd dans un navigateur assurez-vous qu'il a été l'opération et assurez-vous que le nom d'utilisateur et le mot de passe travaillé. C'est là que j'ai remarqué que je devais mettre dans le domaine/utilisateur à faire fonctionner.
J'espère que c'est OK pour la réponse, j'ai pensé que certains autres pauvre âme avec trouver ces erreurs et cela pourrait aider...
Si vous pouvez déployer vos applications avec fileCopy, il est facile de personnaliser les TFS de flux de travail à faire.
J'ai utilisé le CopyDirectory de l'activité, avec l'aide de ces articles:
http://www.ewaldhofman.nl/post/2010/11/09/Part-14-Execute-a-PowerShell-script.aspx
et
http://geekswithblogs.net/jakob/archive/2010/09/01/tfs-team-build-2010-how-to-place-the-build-output.aspx
Très simple et direct.
J'ai Configuré le service de build avec un compte d'utilisateur qui a les droits d'écriture sur le partage souhaité.
Ensuite, j'ai créé le CopyDirectory étape du flux de production, la configuration de la source de BuildDetail.DropLocation + "_PublishedWebsites" et dans destination, j'ai créé un argument, que j'ai appelé "DeployPath", qui peut être rempli dans la configuration de build.
Maintenant j'ai encore à mettre en œuvre un test pour vérifier si la construction a été un succès avant d'invoquer le CopyDirectory activité. Les articles que j'ai mentionnés montrer comment le faire. Ils enseignent aussi comment faire pour appeler un script powershell au lieu de CopyDirectory.