基于 TFS 2015 的 vNext 构建在 MSBuild 步骤挂起并且不生成任何日志文件
vNext build on TFS 2015 hangs on MSBuild step and produces no log files
我们最近从本地 TFS2013 升级到 2015 Update1,并且设置了 VSO Build Agent。
我现在正在尝试为我们的 Git 存储库中的解决方案设置测试(持续集成)vNext 构建,但 构建不是 运行 和 未生成任何日志。
已设置构建属性以指示正确的 Git 存储库,并且已将以下三个添加到变量:VSO_GIT_USERNAME、VSO_GIT_PASSWORD、DNXPath。 MSBuild 是目前唯一添加到构建中的步骤。
推送提交导致构建按预期触发,但是当构建被触发时,它只是挂起 "Waiting for console output from an agent":
代理好像没什么问题:
- 显示为运行(签入services.msc)
- 它没有 SSL 依赖项
- 端口 9191 已添加到 TFS 服务器防火墙的入站规则中
- 代理有运行"Project Collection Build Service"权限
- 代理在 Web 访问中显示为绿色:
当我取消构建和下载日志文件时,zip 文件是空的。
当我手动对构建进行排队时(针对特定的提交#)也会发生同样的情况:没有构建运行,也没有日志文件。
我应该do/check怎样才能使我的构建进度或生成日志文件?
任何人都可以提出前进的方向吗?
确保代理 运行 所属的帐户处于 "Agent Pool Service Account" 角色。
确保队列已在集合中配置 (https://your-tfs-server:8080/tfs/your-collection/_admin/_AgentQueue)。如果不是 - select "New queue.." 和 select 现有队列。
确保完全按照 this article 部署 Windows 构建代理。
尝试更改属于 "Agent Pool Service Account" 角色的 Build Agent Service Accounts 组成员的域帐户,以查看代理是否工作。
重新部署 windows 代理。
好的,已找到解决方案!在我的特殊情况下,我使用防火墙接口 (Windows Server 2012 R2) 设置了端口 9191,并且它的入站规则看起来不错且活跃。但它撒谎了。
当我请我的一位好同事 Marc 检查端口是否真的正常时,他在 TFS 机器上的 PowerShell 中 运行 Get-NetFirewallPortFilter我的端口不在列表中!
他建议的解决方案是 运行 以下 PowerShell 脚本(因为正在运行防火墙):
$port = New-Object -ComObject HNetCfg.FWOpenPort
$port.Port = 9191
$port.Name = 'TFS CI Port:9191'
$port.Enabled = $true
$fwMgr = New-Object -ComObject HNetCfg.FwMgr
$profile = $fwMgr.LocalPolicy.CurrentProfile
$profile.GloballyOpenPorts.Add($port)
曾经是 运行,防火墙入站规则中出现了端口 9191 的入站规则。
然后我手动将构建排队,这是我第一次看到它失败了(不是挂起!),而且还有日志文件! :)
我们最近从本地 TFS2013 升级到 2015 Update1,并且设置了 VSO Build Agent。
我现在正在尝试为我们的 Git 存储库中的解决方案设置测试(持续集成)vNext 构建,但 构建不是 运行 和 未生成任何日志。
已设置构建属性以指示正确的 Git 存储库,并且已将以下三个添加到变量:VSO_GIT_USERNAME、VSO_GIT_PASSWORD、DNXPath。 MSBuild 是目前唯一添加到构建中的步骤。
推送提交导致构建按预期触发,但是当构建被触发时,它只是挂起 "Waiting for console output from an agent":
代理好像没什么问题:
- 显示为运行(签入services.msc)
- 它没有 SSL 依赖项
- 端口 9191 已添加到 TFS 服务器防火墙的入站规则中
- 代理有运行"Project Collection Build Service"权限
- 代理在 Web 访问中显示为绿色:
当我取消构建和下载日志文件时,zip 文件是空的。
当我手动对构建进行排队时(针对特定的提交#)也会发生同样的情况:没有构建运行,也没有日志文件。
我应该do/check怎样才能使我的构建进度或生成日志文件?
任何人都可以提出前进的方向吗?
确保代理 运行 所属的帐户处于 "Agent Pool Service Account" 角色。
确保队列已在集合中配置 (https://your-tfs-server:8080/tfs/your-collection/_admin/_AgentQueue)。如果不是 - select "New queue.." 和 select 现有队列。
确保完全按照 this article 部署 Windows 构建代理。
尝试更改属于 "Agent Pool Service Account" 角色的 Build Agent Service Accounts 组成员的域帐户,以查看代理是否工作。
重新部署 windows 代理。
好的,已找到解决方案!在我的特殊情况下,我使用防火墙接口 (Windows Server 2012 R2) 设置了端口 9191,并且它的入站规则看起来不错且活跃。但它撒谎了。
当我请我的一位好同事 Marc 检查端口是否真的正常时,他在 TFS 机器上的 PowerShell 中 运行 Get-NetFirewallPortFilter我的端口不在列表中!
他建议的解决方案是 运行 以下 PowerShell 脚本(因为正在运行防火墙):
$port = New-Object -ComObject HNetCfg.FWOpenPort
$port.Port = 9191
$port.Name = 'TFS CI Port:9191'
$port.Enabled = $true
$fwMgr = New-Object -ComObject HNetCfg.FwMgr
$profile = $fwMgr.LocalPolicy.CurrentProfile
$profile.GloballyOpenPorts.Add($port)
曾经是 运行,防火墙入站规则中出现了端口 9191 的入站规则。
然后我手动将构建排队,这是我第一次看到它失败了(不是挂起!),而且还有日志文件! :)