【问题标题】:Deployment on TFS 2018 on premises with build agent and/or deployment group使用构建代理和/或部署组在本地 TFS 2018 上部署
【发布时间】:2018-03-19 23:04:17
【问题描述】:

我们正在使用 TFS 2018 On-Premises。 在我们的服务器上,我们设置了一个构建代理,它可以按需构建我们的项目。 在发布任务中,我配置了一个文件共享,我可以在其中找到我的构建。 此构建服务器还托管我们的登台和测试网站。

现在有机会创建部署组。 部署组应该能够将构建直接部署到 Web 服务器。

如果我创建部署组,则会提供用于注册部署代理的脚本。

现在我的问题是:我是否必须在我的构建服务器上注册这个部署代理,该服务器还托管我们的登台网站,还是这个代理与已经注册的构建代理相同?

我必须同时注册两个代理吗?

如果我的声明网站在构建机器上,是否可以仅使用构建功能进行部署,还是我必须设置部署组,然后必须配置发布定义?

如果我必须设置部署组和发布,我是否已将构建时的发布任务从文件共享更改为服务器?

添加注册代理:

如果我尝试注册代理,则会收到错误消息:

使用 2 个参数调用“DownloadFile”时出现异常:“请求 已中止:无法创建受保护的 SSL/TLS 通道。”

这是因为需要密码吗?构建代理没有这样的问题。 还是构建代理已经使用了 SSL / TLS 通道或类似的原因?

注册脚本为:

$ErrorActionPreference="Stop";If(-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent() ).IsInRole([Security.Principal.WindowsBuiltInRole] “管理员”)){ throw "在管理员 PowerShell 提示符中运行命令"};If(-NOT (测试路径 $env:SystemDrive\'vstsagent')){mkdir $env:SystemDrive\'vstsagent'}; cd $env:SystemDrive\'vstsagent'; for($i=1;$i -lt 100;$i++){$destFolder="A"+$i.ToString();if(-NOT (测试路径 ($destFolder))){mkdir $destFolder;cd $destFolder;break;}}; $agentZip="$PWD\agent.zip";(New-Object Net.WebClient).DownloadFile( 'https://go.microsoft.com/fwlink/?linkid=867184', $agentZip);添加类型 -AssemblyName System.IO.Compression.FileSystem;[System.IO.Compression.ZipFile]::ExtractToDirectory( $agentZip, "$PWD");.\config.cmd --deploymentgroup --agent $env:COMPUTERNAME --runasservice --work '_work' --url 'https://xxxxxx:1234/' --collectionname 'DefaultCollection' --projectname 'ABCDEFGH' --deploymentgroupname "DEV" ;删除项目 $agentZip;

【问题讨论】:

  • 根据安装脚本,它会去DownloadFile('go.microsoft.com/fwlink/?linkid=867184', $agentZip);所以它可以下载代理。您的服务器是否可以通过网络进行下载?
  • “请求已中止:无法创建受保护的 SSL/TLS 通道”有一个解决方法。 github.com/Microsoft/vsts-agent/issues/1439 在运行代理部署脚本之前,在您的 powershell 会话中运行以下命令:[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

标签: tfs


【解决方案1】:

注册部署组时,会将代理安装在部署组成员的服务器上。部署组是一种特殊类型的代理池。即使机器上已经运行了另一个代理,您也必须使用提供的脚本安装代理,以便在您的部署组的代理池中注册代理。

部署组仅适用于发布定义——您必须使用“在部署组上运行”阶段。然后,您添加到部署组阶段的任务会直接在部署组中的计算机上运行。

只要属于部署组成员的计算机有权访问您的工件发布到的文件共享,您就应该能够继续使用文件共享来存储您的构建工件。

【讨论】:

  • 感谢您的解释。现在我试图在开发机器上注册代理。可惜注册失败。我已经扩展了我的问题(因为在 cmets 中没有足够的空间)。你知道出了什么问题吗?
  • 如果你登录开发机,从go.microsoft.com/fwlink/?linkid=867184下载源码,是否可以成功下载?
  • 是的,如果将链接添加到浏览器,则可以手动下载。我做到了,我已将代理提供给 c:\vsagents\A1。在那之后,我开始了 .\config.cmd 部分......不幸的是,配置挂起 --connecting
  • 可能部署代理不允许使用 SSL/TLS?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
相关资源
最近更新 更多