Использование системы бассейна:
У вас есть агент в пуле «используемые агенты» влияет на ваш проект.
На этапе 6PM, используя конфигурацию сборки teamcity, вы можете выполнить собственный скрипт, который повлияет на ваши машины на пул «агенты использования».
В 6 утра другой скрипт повлияет на этих агентов на другой пул: «непригодный для использования агент», который не влияет на какую-либо конфигурацию.
Вот TeamCity ресурс: https://confluence.jetbrains.com/display/TCD10/REST+API#RESTAPI-AgentPools
Основание реализации будет, в PowerShell:
В этом случае AgentId является идентификатором вашего агента вашего хотят переместить. И PoolId, является идентификатором целевого пула.
Вы можете получить идентификаторы вашего бассейна по этому адресу: http://teamcityURL/app/rest/agentPools/ Вы можете получить идентификаторы ваших агентов по этому адресу: http://teamcityURL/app/rest/agents
#
# AgentToPool.ps1
#
Param(
[Parameter(Mandatory=$true)][string]$AgentId = "0",
[Parameter(Mandatory=$true)][string]$PoolId = "0"
)
Begin {
$username = "guest"
$password = "guest"
$serverURL = "http://teamcityURL/"
function Execute-HTTPPostCommand() {
param(
[string] $target = $null,
[string] $data = ""
)
$PostStr = [System.Text.Encoding]::UTF8.GetBytes($data)
$request = [System.Net.WebRequest]::Create($target)
$request.PreAuthenticate = $true
$request.Method = "POST"
$request.ContentLength = $PostStr.Length
$request.ContentType = "application/xml"
$request.Headers.Add("AUTHORIZATION", "Basic");
$request.Accept = "*"
$request.Credentials = New-Object System.Net.NetworkCredential($username, $password)
$requestStream = $request.GetRequestStream()
$requestStream.Write($PostStr, 0,$PostStr.length)
$requestStream.Close()
$response = $request.GetResponse()
$xmlout = ""
if($response)
{
$sr = [Io.StreamReader]($response.GetResponseStream())
$xmlout = $sr.ReadToEnd()
}
return $xmlout;
}
$data = "<agent id='$AgentId'/>"
Execute-HTTPPostCommand $serverURL/app/rest/agentPools/id:$PoolId/agents $data
}
Ваш текущий пользователь должен иметь роль: Manage agent pools
В моем случае, учитывая бассейны, как:
| Id | Pool |
| 1 | Usage agents |
| 2 | Unusable agents |
| Id | Agent |
| 1 | AllDay |
| 2 | Nightly1 |
| 3 | Nightly2 |
Выполнение на 6PM:
конфигурации Powershell работает: AgentToPool.ps1 С параметрами -AgentId:2 -PoolId:1
конфигурации Powershell работает: AgentToPool.ps1 С параметрами -AgentId:3 -PoolId:1
Исполнительные на 6AM:
Конфигурация Powershell: AgentToPool.ps1 Wit ч Параметры -AgentId:2 -PoolId:2
Конфигурация Powershell бегущего AgentToPool.ps1 с параметрами -AgentId:3 -PoolId:2
Я пытался искать более простое решение. Я не эксперт по силовой оболочке. Попробуем попробовать. – user1220815