Build 生成代理仅在特定时间段内可用

Build 生成代理仅在特定时间段内可用,build,teamcity,agents,Build,Teamcity,Agents,有三个生成代理可以运行我的TC配置。我只希望这些代理中的一个在白天运行构建,这样其他两个系统就可以用于手动测试。eve下午6点后,由于这些将不用于手动测试,我希望TeamCity构建在所有三个系统上运行。你知道我该怎么做吗 提前感谢。使用泳池系统: 您的池中有一个受项目影响的可用代理 在下午6点,使用teamcity构建配置,您可以执行自定义脚本,这将影响您的计算机对池使用代理的响应 早上6点,另一个脚本会将此代理影响到另一个池:不可用的代理,它不会影响任何配置 以下是teamcity资源: 在

有三个生成代理可以运行我的TC配置。我只希望这些代理中的一个在白天运行构建,这样其他两个系统就可以用于手动测试。eve下午6点后,由于这些将不用于手动测试,我希望TeamCity构建在所有三个系统上运行。你知道我该怎么做吗

提前感谢。

使用泳池系统:

您的池中有一个受项目影响的可用代理

在下午6点,使用teamcity构建配置,您可以执行自定义脚本,这将影响您的计算机对池使用代理的响应

早上6点,另一个脚本会将此代理影响到另一个池:不可用的代理,它不会影响任何配置

以下是teamcity资源:

在powershell中,实现的基础是:

在本例中,AgentId是您要移动的代理的id。 PoolId是目标池标识符

您可以在此URL上获取池的ID: 您可以在此URL上获取代理的ID:

下午六时开始执行:

正在运行的Powershell配置:AgentToPool.ps1 参数为-AgentId:2-PoolId:1

正在运行的Powershell配置:AgentToPool.ps1 参数为-AgentId:3-PoolId:1

上午6点执行:

正在运行的Powershell配置:AgentToPool.ps1 带有参数-AgentId:2-PoolId:2

正在运行的Powershell配置:AgentToPool.ps1
通过参数-AgentId:3-PoolId:2

我试图寻找一个更简单的解决方案。我不是一个强力外壳专家。我现在就试试看。
#
# 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
}
| Id | Pool | | 1 | Usage agents | | 2 | Unusable agents | | Id | Agent | | 1 | AllDay | | 2 | Nightly1 | | 3 | Nightly2 |