Skip to content

Commit 6ae32cc

Browse files
committed
[TeamcitySharp] - Add pin and unpin method by a build number
DESCRIPTION: Add pin and unpin method by a build number Reorder method in the Ibuild interface TEST: Manual test REVIEWER: REFERENCES: -TP Task: None -Defect: None -Wiki: None
1 parent 61efa09 commit 6ae32cc

File tree

4 files changed

+57
-17
lines changed

4 files changed

+57
-17
lines changed

src/TeamCitySharp/ActionTypes/Builds.cs

+24
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using EasyHttp.Http;
45
using TeamCitySharp.Connection;
56
using TeamCitySharp.DomainEntities;
67
using TeamCitySharp.Locators;
@@ -261,6 +262,29 @@ public void DownloadLogs(string projectId, bool zipped, Action<string> downloadH
261262
m_caller.GetDownloadFormat(downloadHandler, url);
262263
}
263264

265+
/// <summary>
266+
/// Pin a build by build number
267+
/// </summary>
268+
/// <param name="buildConfigId"></param>
269+
/// <param name="buildNumber"></param>
270+
/// <param name="comment"></param>
271+
public void PinBuildByBuildNumber(string buildConfigId, string buildNumber, string comment)
272+
{
273+
const string urlPart = "/app/rest/builds/buildType:{0},number:{1}/pin/";
274+
m_caller.PutFormat(comment, HttpContentTypes.TextPlain, urlPart, buildConfigId, buildNumber );
275+
}
276+
277+
/// <summary>
278+
/// Unpin a build by build number
279+
/// </summary>
280+
/// <param name="buildConfigId"></param>
281+
/// <param name="buildNumber"></param>
282+
public void UnPinBuildByBuildNumber(string buildConfigId, string buildNumber)
283+
{
284+
var urlPart = $"/app/rest/builds/buildType:{buildConfigId},number:{buildNumber}/pin/";
285+
m_caller.Delete(urlPart);
286+
}
287+
264288
#endregion
265289

266290
#region Private Methods

src/TeamCitySharp/ActionTypes/IBuilds.cs

+19-17
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,35 @@ namespace TeamCitySharp.ActionTypes
77
{
88
public interface IBuilds
99
{
10-
Builds GetFields(string fields);
11-
List<Build> SuccessfulBuildsByBuildConfigId(string buildConfigId, List<String> param = null);
12-
Build LastSuccessfulBuildByBuildConfigId(string buildConfigId, List<String> param = null);
13-
List<Build> FailedBuildsByBuildConfigId(string buildConfigId, List<String> param = null);
14-
Build LastFailedBuildByBuildConfigId(string buildConfigId, List<String> param = null);
10+
Build ById(string id);
11+
Build LastBuildByAgent(string agentName, List<String> param = null);
1512
Build LastBuildByBuildConfigId(string buildConfigId, List<String> param = null);
16-
List<Build> ErrorBuildsByBuildConfigId(string buildConfigId, List<String> param = null);
1713
Build LastErrorBuildByBuildConfigId(string buildConfigId, List<String> param = null);
18-
Build LastBuildByAgent(string agentName, List<String> param = null);
19-
Build ById(string id);
14+
Build LastFailedBuildByBuildConfigId(string buildConfigId, List<String> param = null);
15+
Build LastSuccessfulBuildByBuildConfigId(string buildConfigId, List<String> param = null);
16+
Builds GetFields(string fields);
17+
List<Build> AffectedProject(string projectId, long count = 100, List<string> param = null);
18+
List<Build> AllBuildsOfStatusSinceDate(DateTime date, BuildStatus buildStatus);
19+
List<Build> AllRunningBuild();
20+
List<Build> AllSinceDate(DateTime date, long count = 100, List<string> param = null);
21+
List<Build> ByBranch(string branchName);
2022
List<Build> ByBuildConfigId(string buildConfigId);
21-
List<Build> RunningByBuildConfigId(string buildConfigId);
2223
List<Build> ByBuildConfigId(string buildConfigId, List<String> param);
24+
List<Build> ByBuildLocator(BuildLocator locator);
2325
List<Build> ByBuildLocator(BuildLocator locator, List<String> param);
2426
List<Build> ByConfigIdAndTag(string buildConfigId, string tag);
2527
List<Build> ByUserName(string userName);
26-
List<Build> ByBuildLocator(BuildLocator locator);
27-
List<Build> AllSinceDate(DateTime date, long count = 100, List<string> param = null);
28-
List<Build> AllBuildsOfStatusSinceDate(DateTime date, BuildStatus buildStatus);
28+
List<Build> ErrorBuildsByBuildConfigId(string buildConfigId, List<String> param = null);
29+
List<Build> FailedBuildsByBuildConfigId(string buildConfigId, List<String> param = null);
30+
List<Build> NextBuilds(string buildid, long count = 100, List<string> param = null);
2931
List<Build> NonSuccessfulBuildsForUser(string userName);
30-
List<Build> ByBranch(string branchName);
31-
void Add2QueueBuildByBuildConfigId(string buildConfigId);
32-
List<Build> AllRunningBuild();
3332
List<Build> RetrieveEntireBuildChainFrom(string buildConfigId, bool includeInitial = true, List<string> param = null);
3433
List<Build> RetrieveEntireBuildChainTo(string buildConfigId, bool includeInitial = true, List<string> param = null);
35-
List<Build> NextBuilds(string buildid, long count = 100, List<string> param = null);
36-
List<Build> AffectedProject(string projectId, long count = 100, List<string> param = null);
34+
List<Build> RunningByBuildConfigId(string buildConfigId);
35+
List<Build> SuccessfulBuildsByBuildConfigId(string buildConfigId, List<String> param = null);
36+
void Add2QueueBuildByBuildConfigId(string buildConfigId);
3737
void DownloadLogs(string projectId, bool zipped, Action<string> downloadHandler);
38+
void PinBuildByBuildNumber(string buildConfigId, string buildNumber, string comment);
39+
void UnPinBuildByBuildNumber(string buildConfigId, string buildNumber);
3840
}
3941
}

src/Tests/IntegrationTests/App.config

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<add key="Password" value="password" />
99
<add key="GoodBuildConfigId" value="YouTrackSharp_ContinuousIntegration" />
1010
<add key="GoodProjectId" value="YouTrackSharp" />
11+
<add key="GoodNumber" value="" />
1112
<add key="QueuedBuildConfigId" value="bt864"/>
1213
<add key="QueuedProjectId" value="R2rml4net"/>
1314

src/Tests/IntegrationTests/SampleBuildsUsage.cs

+13
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class when_interacting_to_get_build_status_info
1919
private readonly string m_password;
2020
private readonly string m_goodBuildConfigId;
2121
private readonly string m_goodProjectId;
22+
private readonly string m_goodNumber;
2223

2324

2425
public when_interacting_to_get_build_status_info()
@@ -29,6 +30,7 @@ public when_interacting_to_get_build_status_info()
2930
m_password = ConfigurationManager.AppSettings["Password"];
3031
m_goodBuildConfigId = ConfigurationManager.AppSettings["GoodBuildConfigId"];
3132
m_goodProjectId = ConfigurationManager.AppSettings["GoodProjectId"];
33+
m_goodNumber = ConfigurationManager.AppSettings["GoodNumber"];
3234
}
3335
[SetUp]
3436
public void SetUp()
@@ -249,5 +251,16 @@ public void it_returns_correct_next_builds_with_filter()
249251
}
250252

251253
}
254+
[Test]
255+
public void it_pin_by_config()
256+
{
257+
m_client.Builds.PinBuildByBuildNumber(m_goodBuildConfigId, m_goodNumber, "Automated Comment");
258+
259+
}
260+
[Test]
261+
public void it_unpin_by_config()
262+
{
263+
m_client.Builds.UnPinBuildByBuildNumber(m_goodBuildConfigId, m_goodNumber);
264+
}
252265
}
253266
}

0 commit comments

Comments
 (0)