VSTS从UNC共享部署到部署组

时间:2017-05-18 01:14:00

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

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

我有一个构建,在完成时会触发deployment group中我的两个服务器的发布。为Visual Studio Team Services配置private static void updateICAT(DataSet s) { DataTable excelTable = s.Tables[7]; DataTable contacts = getXML(); Context _db = new Context(); Context db2 = new Context(); var updateICAT = _db.ICATs; int counter = 1; foreach(ICAT icat in updateICAT) { if(icat.ICATName != "--NOT AVAILABLE--") { DataRow r = contacts.Select("ICATName='" + excelTable.Rows[counter].ItemArray[2].ToString().Trim() + "'")[0]; if (icat.ICATName != excelTable.Rows[counter].ItemArray[0].ToString()) { System.Diagnostics.Debug.WriteLine("not match"); System.Diagnostics.Debug.WriteLine("current Icat id " + icat.ICATID + " current counter " + counter); var updateCurrentICAT = db2.ICATs.SingleOrDefault(p => p.ICATID == counter); updateCurrentICAT.ICATName = excelTable.Rows[counter].ItemArray[0].ToString().Trim(); updateCurrentICAT.MEGroup = excelTable.Rows[counter].ItemArray[1].ToString().Trim(); updateCurrentICAT.EscalationDisplayName = excelTable.Rows[counter].ItemArray[2].ToString().Trim(); updateCurrentICAT.EscalationUserName = r["Username"].ToString().Trim(); updateCurrentICAT.EscalationMail = r["Mail"].ToString().Trim(); } } counter++; } } 时,您将创建一个默认运行为Deployment Group的代理。

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

  

工件目录不存在:   \\ MACHINE1 \降\ RRStore \ 20170517.20。如果密码是,可能会发生   帐户NT AUTHORITY \ SYSTEM最近更改,未更新   代理商。

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

我想使用filedrop,因为我的网站大约有250MB(虽然与此同时我使用的是“发布到服务器'选项并通过团队服务部署。”

我不清楚如何在代理程序作为SYSTEM运行时为文件drop提供权限。我作为一个WORKGROUP运行,并授予“每个人”的权限。似乎不起作用。

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

几种可能的选择:

  • 设置域名(我尝试过这样做,但后来我需要一个新的网络接口,听起来很笨拙)
  • 继续使用teamservices来部署工件(或缩小网站大小!)
  • 保存到存储帐户,但我又不确定如何配置。
  • 以其他用户帐户身份运行

1 个答案:

答案 0 :(得分:1)

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

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

这在大多数情况下都适用。事实上,我的VSTS,Jenkins和TFS实例使用了相同的方法。这可能会阻止您设置域来解决此问题。

这可能不是最好的做法,但至少应该让你开始朝着正确的方向前进。