예제 #1
0
        private async Task <bool> IsRunningABuild(string buildId)
        {
            Logger.Debug("Retrieving from TeamCity if {buildId} is running", buildId);
            return(await Task.Run(() =>
            {
                try
                {
                    return _client
                    .Builds
                    .ByBuildLocator(BuildLocator.WithDimensions(BuildTypeLocator.WithId(buildId), running: true))
                    .Count > 0;
                }
                catch (Exception ex)
                {
                    Logger.Error(ex, "Error retrieving from TeamCity if {buildId} is running", buildId);
                }

                return false;
            }));
        }
        private BuildStatus GetStatus(string buildTypeId)
        {
            var pendingChanges = this.teamCityClient.Changes.ByBuildConfigId(buildTypeId).FirstOrDefault();
            var queuedBuild    = this.teamCityClient.BuildQueue.ByBuildTypeLocator(BuildTypeLocator.WithId(buildTypeId)).FirstOrDefault();
            var runningBuild   = this.teamCityClient.Builds.ByBuildLocator(BuildLocator.WithDimensions(BuildTypeLocator.WithId(buildTypeId), running: true)).FirstOrDefault();
            var lastBuild      = this.teamCityClient.Builds
                                 .GetFields(BuildsField
                                            .WithFields(BuildField.WithFields(
                                                            true,
                                                            true,
                                                            changes: ChangesField.WithFields(ChangeField.WithFields(true)),
                                                            status: true))
                                            .ToString()).ByBuildConfigId(buildTypeId).OrderByDescending(x => x.Number).FirstOrDefault();

            if (lastBuild != null)
            {
                return(new BuildStatus(queuedBuild != null | runningBuild != null | GetHasPendingChanges(pendingChanges, lastBuild), lastBuild.Status));
            }

            return(new BuildStatus(false, "None"));
        }
예제 #3
0
            public void ReturnsWithMaxResults()
            {
                var locator = BuildLocator.WithDimensions(maxResults: 9999);

                Assert.AreEqual("count:9999", locator.ToString());
            }
예제 #4
0
            public void ReturnsWithStartIndex()
            {
                var locator = BuildLocator.WithDimensions(startIndex: 9999);

                Assert.AreEqual("start:9999", locator.ToString());
            }
예제 #5
0
 public List <Build> FailedBuildsByBuildConfigId(string buildConfigId)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(BuildTypeLocator.WithId(buildConfigId),
                                                       status: BuildStatus.FAILURE
                                                       )));
 }
예제 #6
0
 public List <Build> AllBuildsOfStatusSinceDate(DateTime date, BuildStatus buildStatus)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(sinceDate: date, status: buildStatus)));
 }
예제 #7
0
 public List <Build> AllSinceDate(DateTime date)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(sinceDate: date)));
 }
예제 #8
0
 public List <Build> ByConfigIdAndTag(string buildConfigId, string[] tags)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(BuildTypeLocator.WithId(buildConfigId),
                                                       tags: tags
                                                       )));
 }
예제 #9
0
 public Build LastBuildByAgent(string agentName, List <String> param = null)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(agentName: agentName, maxResults: 1), param).SingleOrDefault());
 }
예제 #10
0
            public void ReturnsWithStatusERROR()
            {
                var locator = BuildLocator.WithDimensions(status: BuildStatus.ERROR);

                Assert.AreEqual("status:ERROR", locator.ToString());
            }
예제 #11
0
            public void ReturnsWithAgentName()
            {
                var locator = BuildLocator.WithDimensions(agentName: "AGENTNAME");

                Assert.AreEqual("agentName:AGENTNAME", locator.ToString());
            }
예제 #12
0
            public void ReturnsWithSinceBuild()
            {
                var locator = BuildLocator.WithDimensions(sinceBuild: BuildLocator.WithId(9999));

                Assert.AreEqual("sinceBuild:(id:9999)", locator.ToString());
            }
예제 #13
0
            public void ReturnsWithBranch()
            {
                var locator = BuildLocator.WithDimensions(branch: "BRANCHNAME");

                Assert.AreEqual("branch:(BRANCHNAME)", locator.ToString());
            }
예제 #14
0
            public void ReturnsWithUserName()
            {
                var locator = BuildLocator.WithDimensions(user: UserLocator.WithUserName("USERNAME"));

                Assert.AreEqual("user:(username:USERNAME)", locator.ToString());
            }
예제 #15
0
            public void ReturnsWithUserId()
            {
                var locator = BuildLocator.WithDimensions(user: UserLocator.WithId("9999"));

                Assert.AreEqual("user:(id:9999)", locator.ToString());
            }
예제 #16
0
            public void ReturnsWithNullUser()
            {
                var locator = BuildLocator.WithDimensions(user: null);

                Assert.AreEqual(string.Empty, locator.ToString());
            }
예제 #17
0
            public void ReturnsWithStatusFAILURE()
            {
                var locator = BuildLocator.WithDimensions(status: BuildStatus.FAILURE);

                Assert.AreEqual("status:FAILURE", locator.ToString());
            }
예제 #18
0
            public void ReturnsWithStatusSUCCESS()
            {
                var locator = BuildLocator.WithDimensions(status: BuildStatus.SUCCESS);

                Assert.AreEqual("status:SUCCESS", locator.ToString());
            }
예제 #19
0
 public List <Build> ByBuildConfigId(string buildConfigId)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(BuildTypeLocator.WithId(buildConfigId)
                                                       )));
 }
예제 #20
0
            public void ReturnsWithPersonalTrue()
            {
                var locator = BuildLocator.WithDimensions(personal: true);

                Assert.AreEqual("personal:True", locator.ToString());
            }
예제 #21
0
 public List <Build> ByUserName(string userName)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(
                               user: UserLocator.WithUserName(userName)
                               )));
 }
예제 #22
0
            public void ReturnsWithCancelledTrue()
            {
                var locator = BuildLocator.WithDimensions(canceled: true);

                Assert.AreEqual("canceled:True", locator.ToString());
            }
예제 #23
0
 public List <Build> ByBranch(string branchName)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(branch: branchName)));
 }
예제 #24
0
            public void ReturnsWithRunningTrue()
            {
                var locator = BuildLocator.WithDimensions(running: true);

                Assert.AreEqual("running:True", locator.ToString());
            }
예제 #25
0
 public List <Build> SuccessfulBuildsByBuildConfigId(string buildConfigId)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(BuildTypeLocator.WithId(buildConfigId),
                                                       status: BuildStatus.SUCCESS
                                                       )));
 }
예제 #26
0
            public void ReturnsWithPinnedTrue()
            {
                var locator = BuildLocator.WithDimensions(pinned: true);

                Assert.AreEqual("pinned:True", locator.ToString());
            }
예제 #27
0
 public List <Build> ErrorBuildsByBuildConfigId(string buildConfigId)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(BuildTypeLocator.WithId(buildConfigId),
                                                       status: BuildStatus.ERROR
                                                       )));
 }
예제 #28
0
 public Build LastBuildByAgent(string agentName)
 {
     return(ByBuildLocator(BuildLocator.WithDimensions(agentName: agentName, maxResults: 1)).SingleOrDefault());
 }