FluentTc icon indicating copy to clipboard operation
FluentTc copied to clipboard

Get Changes by ChangeId and By BuildLocator

Open sebingel opened this issue 8 years ago • 2 comments

Feature Request

Expose a method from which i can get changes from the TeamCity API. Something like IConnectedTc.GetChanges(IChangesHavingBuilder having) Changes are already present but are only accessible from an IBuild. It would be nice to i.e. retrieve changes by the corresponding git commit hash: /app/rest/changes/version:GITHASH or get pending changes for a branch in a buildconfiguration: /app/rest/changes?locator=buildType:(id:BUILDCONFIGID),pending:true,branch:BRANCHNAME


[Test]
public void GetChangesByChangeId()
{
    var changes = new RemoteTc(c=>c.ToHost("HOST").AsGuest())
        .GetChanges(c => c.ChangeId("GITHASH"))
}

[Test]
public void GetChangesByBuildLocator()
{
    var changes = new RemoteTc(c=>c.ToHost("HOST").AsGuest())
        .GetChanges(
            c => c.Build( 
                b => b.BuildConfiguration(
                    t => t.Id("BUILDCONFIGID"))
                .IsPending()
                .OnBranch(b => b.Name("BRANCHNAME"))
        )
    );
}

Affected versions

Product Version
FluentTc 0.0.0.249
TeamCity 2017.2.2 (build 50909)
Autofac
EasyHttp
SharpZipLib
System.IO.Abstractions
TeamCity.ServiceMessages

sebingel avatar Feb 09 '18 12:02 sebingel

@sebingel thank you for opening this issue. Does the tests I've added make sense?

borismod avatar Feb 12 '18 19:02 borismod

@borismod sort of. Test 1 should be .GetChanges(c => c.Version("GITHASH")). TeamCity API calls the VCS revision Version. Although a .GetChanges(c => c.ChangeId("CHANGEID")) would be nice too.

In Test 2 it looks like you want to get the changes for a certain build. Am i right? The API call /app/rest/changes?locator=buildType:(id:BUILDCONFIGID),pending:true,branch:BRANCHNAME gets changes for a certain buildconfiguration and branch and pending refers to the changes too, not the build.

var changes = new RemoteTc(c=>c.ToHost("HOST").AsGuest())
				.GetChanges(c => c.BuildConfiguration(bc => bc.Id("BUILDCONFIGID"))
				.IsPending().OnBranch("BRANCHNAME"));

I hope that makes some sense.

sebingel avatar Feb 13 '18 13:02 sebingel