【发布时间】:2016-01-07 00:44:00
【问题描述】:
当我从本地计算机上的 Visual Studio 启动 Web Deploy 时,我已验证它可以正常工作(使用 NTLM 授权)。现在我希望我的构建服务器每晚自动部署(如果合适)。我在构建服务器上使用 Jenkins,并且我已授予远程计算机上 IIS 中的帐户访问权限。我的 MSBuild 参数如下:
/p:DeployOnBuild=true
/p:Configuration=Debug
/p:Platform=x86
/p:PublishProfile=DEV
/p:AuthType=NTLM
/p:AllowUntrustedCertificate=True
/p:Username=
DEV 发布配置文件指定了我的 DEV 服务器,该服务器使用自签名证书,因此需要一个不受信任的证书。 NTLM 和空白用户名应使用当前用户/帐户进行连接。
但是,Jenkins 作业的 MSBuild 步骤失败并出现此错误
msdeploy 错误 ERROR_USER_UNAUTHORIZED:Web 部署任务失败。 (使用 Web 管理服务连接到远程计算机(“DEV-SERVER”),但无法授权。确保您使用的用户名和密码正确,您要连接的站点存在,并且凭据代表有权访问该站点的用户。了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED。)
当我查看 DEV-SERVER 上的 IIS 日志时,我看到以下内容:
2016-01-06 23:55:10 159.212.19.186 HEAD /msdeploy.axd site=MySite 8172 - 159.212.19.123 - 401 2 5 0
2016-01-06 23:55:10 159.212.19.186 HEAD /msdeploy.axd site=MySite 8172 CO\BUILD-SERVER$ 159.212.19.123 - 401 2 64 78
我期待看到 CO\jenkins,这是 Jenkins 正在运行的帐户,而不是 CO\BUILD-SERVER$。 (最后的 $ 是什么?)我认为使用了错误的帐户是否正确?我需要做些什么才能使其正常工作?
【问题讨论】:
-
CO\BUILD-SERVER$ 是构建服务器的机器帐户。如果您在那台机器上运行了一个从属服务器,它是否作为 Windows 服务运行?如果是这样,它可能作为“系统”运行
-
@JamesReed 你叫它。我与设置 Jenkins 的人进行了验证。他们一直在 CO\jenkins 帐户下手动运行它,但是构建服务器重新启动并且 Windows 服务自动在 System 帐户下启动它。他们切换了启动服务的帐户,这解决了我的问题,但显然运行 Selenium 测试存在一些问题。我会单独调查。非常感谢!如果您想回答并包含此解决方案和缺点,我很乐意接受。
标签: jenkins msbuild continuous-integration ntlm webdeploy