Mit dem Pool-System:
Sie haben einen Agenten in Ihrem Pool "benutzbar Agenten" zu einem Projekt betroffen.
Um 18:00 Uhr können Sie mit einer teamcity-Build-Konfiguration ein benutzerdefiniertes Skript ausführen, das Ihre Maschinen auf die "Nutzungsagenten" des Pools auswirkt.
Um 6 Uhr wirkt sich ein anderes Skript auf diese Agenten auf einen anderen Pool aus: "unbrauchbarer Agent", der von keiner Konfiguration betroffen ist.
Hier ist die Teamcity Ressource: https://confluence.jetbrains.com/display/TCD10/REST+API#RESTAPI-AgentPools
Eine Basis Implementierung wäre, in Powershell:
In diesem Fall ist AgentID die ID des Agenten Ihrer verschieben möchten. Und PoolId ist die Zielpool-ID.
Sie können die IDs Ihres Pools auf dieser URL erhalten: http://teamcityURL/app/rest/agentPools/ Sie können die IDs Ihrer Agenten auf dieser URL erhalten: 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
}
Ihre aktuelle Benutzer muss die Rolle haben: Manage agent pools
In meinem Fall, wenn man bedenkt Pools wie:
| Id | Pool |
| 1 | Usage agents |
| 2 | Unusable agents |
| Id | Agent |
| 1 | AllDay |
| 2 | Nightly1 |
| 3 | Nightly2 |
bei 06.00 Executing:
Powershell-Konfiguration: AgentToPool.ps1 Mit den Parametern -AgentId:2 -PoolId:1
Powershell-Konfiguration läuft: AgentToPool.ps1 Mit den Parametern -AgentId:3 -PoolId:1
bei 06.00 Executing:
Powershell-Konfiguration wird ausgeführt: AgentToPool.ps1 Wit h Parameter -AgentId:2 -PoolId:2
Powershell-Konfiguration läuft: AgentToPool.ps1 Mit den Parametern -AgentId:3 -PoolId:2
ich versucht wurde für eine einfachere Lösung zu suchen. Ich bin kein Power Shell Experte. Werde es jetzt versuchen. – user1220815