如何以编程方式触发清理?

时间:2015-05-06 05:43:54

标签: teamcity teamcity-9.0

我的构建服务器非常繁忙。在美好的一天,我们创造了近200GB的文物。清理策略可以每天运行一次,这对我的情况来说是不够的。我搜索了teamcity文档,发现零API端点以手动支持触发器清理。

是否可以从脚本/程序手动触发清理?怎么做到这一点?

在最糟糕的情况下,我可以摆弄并追踪当我手动强制清理时会发生什么,但是它的路很乱,我不想继续下去。

这里也是C#版

void Main()
{
    var cookieContainer = new CookieContainer();
    var baseAddress = new Uri("http://teamcity");

    var contentDictionary = new Dictionary<string,string>();
    contentDictionary["cleanupPageAction"]= "startCleanup";

    using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer,
    Credentials = new NetworkCredential("user","password","domain")})
    using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
    {
        var content = new FormUrlEncodedContent(contentDictionary);

        var result = client.PostAsync("/admin/cleanupPolicies.html", content).Result;
        result.EnsureSuccessStatusCode();
    }
}

1 个答案:

答案 0 :(得分:1)

API中没有端点。如果你确定你很高兴使用相同的HTTP POST,仪表板用于手动清理,在我看来这很简单:

curl -d "cleanupPageAction=startCleanup" \
    http://user:password@builds.company.com/admin/cleanupPolicies.html