【问题标题】:VSTS Deployment to a deployment group from a UNC share从 UNC 共享到部署组的 VSTS 部署
【发布时间】:2017-07-28 21:05:59
【问题描述】:

我正在使用 visualstudio.com Teams Services 构建一个 ASP.NET 网站并将其部署到两个 Azure VM。

我有一个构建,它在完成时会在deployment group 中触发我的两台服务器的发布。当您为 Visual Studio Team Services 配置 Deployment Group 时,您会创建一个默认以 NT AUTHORITY\SYSTEM 运行的代理。

如果我publish my build artifacts to Azure(服务器选项),那么一切正常,部署成功到我的两个 VMS。但是,当使用文件拖放时,我收到以下错误:

工件目录不存在: \\MACHINE1\drop\RRStore\20170517.20。如果密码为 帐户 NT AUTHORITY\SYSTEM 最近更改且未更新 为代理。

这基本上是说MACHINE2 由于权限而无法访问\\MACHINE1\drop。在 Windows 中,我可以很好地调出这个文件夹,但由于代理以 NT AUTHORITY\SYSTEM 运行,因此无法访问它。

我想使用 filedrop,因为我的网站大约 250MB(尽管同时我正在使用“发布到服务器”选项并通过团队服务进行部署。)

虽然代理以 SYSTEM 身份运行,但我不清楚如何授予文件删除权限。我以 WORKGROUP 的身份运行,并且授予“所有人”权限似乎不起作用。

配置对 VSTS 放置文件夹的访问权限以便部署代理可以访问它的正确方法是什么?

几个可能的选择:

  • 设置域(我尝试这样做,但后来我需要一个新的网络接口,这听起来很笨拙)
  • 继续使用 teamservices 部署工件(或减小网站大小!)
  • 保存到存储帐户,但我不知道如何配置它。
  • 以不同的用户帐户运行

【问题讨论】:

  • 我无法重现此问题(向所有人授予读取权限),您发布定义的任务是什么?是否有在代理阶段运行?可以分享一下 OneDrive 上的详细发布日志吗?

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline


【解决方案1】:

我在使用 VSTS 部署时遇到了类似的问题。相反,我选择:

  • 以具有有限访问权限的本地用户身份在部署组 VM 上运行 VSTS 代理。
  • 在部署组 VM 上模拟帐户以测试其对放置文件夹的访问权限。
  • 保存/缓存不同的凭据以访问放置文件夹(如果适用)。 (因此敏感信息保留在 VM 上。)
  • 缓存的凭据可以是专门为此目的在放置服务器上创建的不同本地用户帐户。
  • 明确授予本地用户对文件系统各个部分的访问权限,以限制此 VSTS 代理服务运行程序帐户的访问权限。

这应该适用于大多数情况。事实上,在我的 VSTS、Jenkins 和 TFS 实例中也使用了同样的方法。这应该会阻止您设置域来解决此问题。

这可能不是最佳做法,但至少它应该让您朝着正确的方向开始。

【讨论】:

  • 谢谢。我放弃了(我已经达到了“学习如何吃饭”的极限),只是在网上使用了 VSTS。上传和下载我的版本大约需要一分钟,但这是最简单的方法
猜你喜欢
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 2019-09-25
相关资源
最近更新 更多