Peut MSBuild déployer à l'aide de l'authentification intégrée ou de base?
Je suis le déploiement d'une application web package à partir de la ligne de commande MSBuild à l'installation de ce sur IIS6 qui fonctionne bien avec la commande suivante à l'aide de l'authentification de base:
MSBuild.exe Web.csproj
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://[server name]/MsDeployAgentService
/p:DeployIisAppPath=DeploymentTestProject
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:username=***
/p:password=***
Cependant, ce que je voudrais vraiment faire est de déposer le nom d'utilisateur et le mot de passe des paramètres et revenir à intégré auth sous l'identité de l'utilisateur actuel. Cette commande est d'aller dans un serveur de build et je préfère ne pas avoir le texte en clair des informations d'identification d'un compte avec des droits d'administrateur sur l'environnement cible (nécessaire pour l'installation de ce) visible. Je n'arrive pas à trouver toute la documentation sur la façon de le faire et de déposer les informations d'identification renvoie 401 non autorisé lorsque je tente de le publier.
Ce qui le rend particulièrement frustrant, c'est que je peux heureusement exécuter la commande de déploiement dans le package intégré auth (il suffit de ne pas inclure des informations d'identification), je n'arrive pas à l'exécuter à partir de la ligne de commande MSBuild. Je suis en train d'encapsuler le paquet et déployer les processus en une seule commande, sans avoir à éditer les fichiers de compilation, et c'est la seule chose dans la façon dont les à présent.
Des idées là-bas?
Modifier
Après quelques discussions avec Sayed et en regardant un peu plus profondément dans la ligne de commande de sortie, après l'exécution de la commande MSBuild ci-dessus (sans nom d'utilisateur et le mot de passe des paramètres), les éléments suivants MSDeploy commande est invoquée:
msdeploy.exe
-source:package='[project path]\Web\obj\Debug\Package\Web.zip'
-dest:auto,ComputerName='http://[server]/MsDeployAgentService',UserName='***',IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-retryAttempts=2
Vous pouvez voir le nom d'utilisateur est l'attribut et la valeur est le nom d'utilisateur de l'utilisateur actuellement connecté. Si je prends ceci et exécutez la commande ci-dessus directement, le déploiement passe par l'amende juste.
Alors, sur cette base, pourquoi est-ce l'original de la commande MSBuild l'insertion d'un attribut du nom d'utilisateur lors de l'appel à MSDeploy? Cela semble être la seule barrière maintenant.
- Si vous définissez UseMSDeployExe à vrai ne la commande pas inclure AuthType=NTLM???
- En fait, j'ai défiés lors de la publication à partir de Visual Studio pour une autre machine sur le même domaine. Après avoir entré les informations d'identification que je suis déjà connecté avec le publier passe par l'amende et la sous-jacentes de commande MSBuild NE montrent AuthType='NTLM", mais comprend également mes informations d'identification. Donc, je suis une sorte de retour à la commande d'origine!
- Pour Visual Studio 2012, vous devez omettre l' /P:propriété UserName entièrement.
Vous devez vous connecter pour publier un commentaire.
Et la réponse est...
Suite de mon montage ci-dessus à propos de l'identité actuelle de l'utilisateur persistance de la MSDeploy de commande, même lorsqu'il n'est pas passé dans l'original MSBuild appel, j'ai essayé de reconstruire les paramètres à passer un vide nom d'utilisateur comme suit:
Qui génère alors le suivant MSDeploy commande:
Cet appel n'inclut plus l'attribut UserName. Donc en bref, si vous n'ajoutez pas un paramètre de nom d'utilisateur pour le MSBuild appel il va insérer le courant de l'identité de toute façon et de reporter à l'authentification basique qui va échouer, car il n'y a pas de mot de passe. Si vous incluez le paramètre nom d'utilisateur, mais ne pas lui donner une valeur, il ne comprend pas du tout dans le MSDeploy commande.
J'ai regardé dans le Microsoft.Web.La publication.objectifs et vu ce:
Donc il semble que la valeur par défaut est
Basic
d'authentification lors de l'exécution de MSBuild. Puis j'ai trouvé ce http://technet.microsoft.com/de-de/library/dd569001(WS.10).aspxJe n'ai pas encore essayé, mais c'est peut-être quelque chose comme
/p:AuthType=NTLM
J'ai été en mesure d'obtenir NTLM de travail comme suit, où le service s'exécute sous un compte admin privs sur [nom du serveur].
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" app\Test.Web\Test.Web.csproj /T:Nettoyer /T:Package /P:Configuration=Libération
C:\hudson\jobs\Test\workspace\app\Test.Web\obj\Release\Package\Test.Web.deploy.cmd "/Y/M:http://[nom du serveur]/MSDEPLOYAGENTSERVICE" /A:ntlm -allowUntrusted
qui génère:
"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -source:package='C:\hudson\jobs\Test\workspace\app\Test.Web\obj\Release\Package\Test.Web.zip' -dest:auto,computerName= "http://[nom du serveur]/MSDEPLOYAGENTSERVICE',authtype='ntlm", includeAcls= "False" - verbe:sync-disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"C:\hudson\jobs\Test\workspace\app\Test.Web\obj\Release\Package\RapidPrototypeRequestSystem.Web.SetParameters.xml" -allowUntrusted
Cela a fonctionné, j'ai d'abord été distrait par les objectifs de fichier, mais réalisé mon erreur était dans la chaîne de connexion, c'est à dire a essayé de l'utiliser https au lieu de http.
MSBuild.exe Web.csproj /p:Configuration=Debug /p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MsDeployServiceUrl=http://[nom du serveur]/MsDeployAgentService /p:DeployIisAppPath=DeploymentTestProject /p:MSDeployPublishMethod=RemoteAgent /p:CreatePackageOnPublish=True /p:nom d'utilisateur=