Exemplo n.º 1
0
        private AppVeyorBuildStatus GetBuildStatus(BuildDefinitionSetting buildDefinitionSetting,
            CiEntryPointSetting ciEntryPointSetting)
        {
            var token = ciEntryPointSetting.GetPassword();
            var projectInfo = AppVeyorBuildDefinition.FromId(buildDefinitionSetting.Id);


            var serviceClient = CreateClient(ciEntryPointSetting.Url, token);

            var request = new GetProjectLastBuild
            {
                AccountName = projectInfo.AccountName,
                ProjectSlug = projectInfo.Slug
            };

            try
            {
                var response = serviceClient.Get(request);
                if (response.Build == null)
                {
                    throw new BuildDefinitionNotFoundException(buildDefinitionSetting);
                }

                return new AppVeyorBuildStatus(CreateProjectUrl(projectInfo), response.Project, response.Build,
                    buildDefinitionSetting);
            }
            catch (WebServiceException)
            {
                throw new BuildDefinitionNotFoundException(buildDefinitionSetting);
            }
        }
Exemplo n.º 2
0
        private BambooBuildStatus GetBuildStatus(string rootUrl, BuildDefinitionSetting buildDefinitionSetting, string userName, string password)
        {
            try
            {
                string planUrl = rootUrl + "/rest/api/latest/plan/" + buildDefinitionSetting.Id + "?os_authType=basic";
                XDocument planDoc = DownloadXml(planUrl, userName, password);
                var isBuilding = planDoc.Root.ElementValueAsBool("isBuilding", false);
                if (isBuilding != null && isBuilding.Value)
                {
                    return BambooBuildStatus.CreateIsBuilding(buildDefinitionSetting);
                }

                XDocument buildDoc;
                try
                {
                    string buildUrl = rootUrl + "/rest/api/latest/result/" + buildDefinitionSetting.Id + "-latest?expand=changes.change&os_authType=basic";
                    buildDoc = DownloadXml(buildUrl, userName, password);
                }
                catch (Exception)
                {
                    string buildUrl = rootUrl + "/rest/api/latest/build/" + buildDefinitionSetting.Id + "-latest?expand=changes.change&os_authType=basic";
                    buildDoc = DownloadXml(buildUrl, userName, password);
                }
                if (buildDoc.Root == null) throw new Exception("Could not get project status");
                return BambooBuildStatus.CreateBuildResult(buildDoc, buildDefinitionSetting, rootUrl);
            }
            catch (SosException ex)
            {
                if (ex.Message.Contains("not found"))
                {
                    throw new BuildDefinitionNotFoundException(buildDefinitionSetting);
                }
                throw;
            }
        }
        public void TeamCityBuildStatus_PassingBuildNoComment()
        {
            var teamCityFailingBuild = ResourceManager.TeamCityFailingBuild;
            var teamCityFailingChange = ResourceManager.TeamCityFailingChange;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting
                                                                {
                                                                    Name = "Name",
                                                                    Id = "BuildDefinitionId"
                                                                };
            var buildStatus = new TeamCityBuildStatus(buildDefinitionSetting, teamCityFailingBuild, teamCityFailingChange);

            Assert.AreEqual(BuildStatusEnum.Broken, buildStatus.BuildStatusEnum);
            Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId);
            Assert.AreEqual("BuildConfig4", buildStatus.Name);
            Assert.AreEqual("lee", buildStatus.RequestedBy);
            Assert.AreEqual(new DateTime(2012, 1, 27, 0, 15, 45, 0), buildStatus.StartedTime, HudsonBuildStatusTest.DateAsCode(buildStatus.StartedTime.Value));
            string expectedComment = @"Merge branch 'master' of C:\dev\CiTest

            Conflicts:
            CiTest/Program.cs".Replace("\r", "");
            Assert.AreEqual(expectedComment.Replace("\r\n", "\r"), buildStatus.Comment);
            Assert.AreEqual(new DateTime(2012, 1, 27, 0, 16, 2, 0), buildStatus.FinishedTime, HudsonBuildStatusTest.DateAsCode(buildStatus.FinishedTime.Value)); // timestamp+duration
            Assert.AreEqual("http://win7ci:8080/viewLog.html?buildId=35&buildTypeId=bt2", buildStatus.Url);
            Assert.AreEqual("35", buildStatus.BuildId);
        }
Exemplo n.º 4
0
 public BuildDefinitionSetting FindAddBuildDefinition(MyBuildDefinition buildDefinition, string buildServer)
 {
     BuildDefinitionSetting buildDefinitionSetting = BuildDefinitionSettings.FirstOrDefault(bd => bd.Id == buildDefinition.Id);
     if (buildDefinitionSetting != null) return buildDefinitionSetting;
     buildDefinitionSetting = new BuildDefinitionSetting(buildDefinition, buildServer);
     BuildDefinitionSettings.Add(buildDefinitionSetting);
     return buildDefinitionSetting;
 }
Exemplo n.º 5
0
        public IList<HudsonBuildStatus> GetBuildsStatuses(string rootUrl, string userName, string password, BuildDefinitionSetting[] watchedBuildDefinitions)
        {
            rootUrl = GetRootUrl(rootUrl);

            var parallelResult = from buildDefinitionSetting in watchedBuildDefinitions
                                 select GetBuildStatus(rootUrl, buildDefinitionSetting, userName, password);
            return parallelResult.AsParallel().ToList();
        }
Exemplo n.º 6
0
        public IList<BuildBotBuildStatus> GetBuildsStatuses(string rootUrl, string userName, string password, BuildDefinitionSetting[] watchedBuildDefinitions)
        {
            var results = new List<BuildBotBuildStatus>();
            rootUrl = GetRootUrl(rootUrl);
            var webClient = new WebClient
            {
                Credentials = new NetworkCredential(userName, password),
                CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore),
            };

            foreach (var watchedBuildDefinition in watchedBuildDefinitions)
            {
                var projectUrl = new Uri(rootUrl + "/json/builders/" + watchedBuildDefinition.Name + "/builds?select=-1");
                
                try
                {
                    var resultString = webClient.DownloadString(projectUrl);
                    results.Add(new BuildBotBuildStatus(resultString, rootUrl));
                }
                catch (WebException webException)
                {
                    if (webException.Response != null)
                    {
                        var response = webException.Response;
                        using (Stream s1 = response.GetResponseStream())
                        {
                            if (s1 != null)
                            {
                                using (StreamReader sr = new StreamReader(s1))
                                {
                                    var errorResult = sr.ReadToEnd();

                                    string message = "Error connecting to server with the following url: " + projectUrl.ToString() + "\n\n" + errorResult;
                                    _log.Error(message, webException);
                                    throw new SosException(message, webException);
                                }
                            }
                        }
                    }
                    if (webException.Status == WebExceptionStatus.Timeout)
                    {
                        throw new ServerUnavailableException();
                    }
                    if (webException.Status == WebExceptionStatus.NameResolutionFailure)
                    {
                        throw new ServerUnavailableException();
                    }
                    if (webException.Status == WebExceptionStatus.ConnectFailure)
                    {
                        throw new ServerUnavailableException();
                    }

                    _log.Error("Error connecting to " + projectUrl.ToString() + ". WebException.Status = " + webException.Status);
                    throw;
                }
            }
            return results;
        }
 private static Dictionary<string, string> GetBuildQueryParams(BuildDefinitionSetting[] watchedBuildDefinitions)
 {
     var buildIds = watchedBuildDefinitions.Select(i => i.Id);
     var result = new Dictionary<string, string>
     {
         { "maxBuildsPerDefinition", "1" },
         { "statusFilter", "inProgress,completed" },
         { "definitions", string.Join(",", buildIds) },
     };
     return result;
 }
 public void ServerIsDoingACleanup()
 {
     FakeTeamCityService teamCityService = new FakeTeamCityService();
     BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
     XDocument xDoc = ResourceManager.TeamCityServerCleanup;
     teamCityService.GetBuildStatusAndCommentsFromXDocumentFake(
         "fakeurl",
         "username",
         "password",
         buildDefinitionSetting,
         xDoc);
 }
Exemplo n.º 9
0
        public BuildDefinitionSetting FindAddBuildDefinition(MyBuildDefinition buildDefinition, string buildServer)
        {
            BuildDefinitionSetting buildDefinitionSetting = BuildDefinitionSettings.FirstOrDefault(bd => bd.Id == buildDefinition.Id);

            if (buildDefinitionSetting != null)
            {
                return(buildDefinitionSetting);
            }
            buildDefinitionSetting = new BuildDefinitionSetting(buildDefinition, buildServer);
            BuildDefinitionSettings.Add(buildDefinitionSetting);
            return(buildDefinitionSetting);
        }
        public TeamCityBuildStatus(BuildDefinitionSetting buildDefinitionSetting, XDocument buildResultXDoc, XDocument changeResultXDoc)
            : this(buildDefinitionSetting)
        {
            try
            {

                if (changeResultXDoc != null)
                {
                    XElement firstComment = changeResultXDoc.Descendants("comment").FirstOrDefault();
                    if (firstComment != null)
                        Comment = firstComment.Value.Trim();
                    RequestedBy = changeResultXDoc.Root.AttributeValueOrDefault("username");
                }

                string status = buildResultXDoc.Root.AttributeValueOrDefault("status");
                string startedTimeStr = buildResultXDoc.Root.ElementValueOrDefault("startDate");
                string finishedTimeStr = buildResultXDoc.Root.ElementValueOrDefault("finishDate");

                var buildType = buildResultXDoc.Descendants("buildType").ToList();
                if (buildType.Any())
                {
                    var name = buildType.First().AttributeValueOrDefault("name");
                    Name = name;
                }

                StartedTime = GetTeamCityDate(startedTimeStr);
                if (string.IsNullOrEmpty(finishedTimeStr))
                {
                    BuildStatusEnum = BuildStatusEnum.InProgress;
                }
                else
                {
                    FinishedTime = GetTeamCityDate(finishedTimeStr);
                    BuildStatusEnum = ToBuildStatusEnum(status);

                    if (BuildStatusEnum == BuildStatusEnum.Unknown)
                    {
                        _log.Debug("Received an unknown build status from the following buildResult: " + buildResultXDoc);
                    }
                }

                Url = buildResultXDoc.Root.AttributeValueOrDefault("webUrl");
                if (Url != null) Url = Url.Trim();

                BuildId = buildResultXDoc.Root.AttributeValueOrDefault("id");
            }
            catch (Exception ex)
            {
                _log.Error("Error parsing xml. BuildResultXDoc: " + buildResultXDoc + "\r\n\r\n ChangeResultXDoc: " + changeResultXDoc, ex);
                throw;
            }
        }
 public TeamCityBuildStatus GetBuildStatusAndCommentsFromXDocumentFake(
     string rootUrl,
     string userName,
     string password,
     BuildDefinitionSetting buildDefinitionSetting,
     XDocument buildResultXDoc)
 {
     return GetBuildStatusAndCommentsFromXDocument(rootUrl,
                                                        userName,
                                                        password,
                                                        buildDefinitionSetting,
                                                        buildResultXDoc);
 }
 public AppVeyorBuildStatus(string buildUrl, Project project, ProjectBuild build,
     BuildDefinitionSetting buildDefinitionSetting)
 {
     BuildDefinitionId = buildDefinitionSetting.Id;
     Name = "{0} ({1})".Fmt(project.Name, build.Version);
     BuildStatusEnum = BuildStatusEnum.Unknown;
     StartedTime = build.Started;
     FinishedTime = build.Finished;
     BuildStatusMessage = build.Status;
     Url = buildUrl;
     BuildId = build.BuildId;
     BuildStatusEnum = ToBuildStatusEnum(build.Status);
     RequestedBy = (string.IsNullOrEmpty(build.AuthorName)) ? build.AuthorName : build.CommitterName;
     Comment = build.Message;
 }
 public IList<CruiseControlNetBuildStatus> GetBuildsStatuses(string rootUrl, string userName, string password, BuildDefinitionSetting[] watchedBuildDefinitions)
 {
     var buildStatuses = GetBuildStatuses(rootUrl, userName, password).ToList();
     var results = new List<CruiseControlNetBuildStatus>();
     foreach (var watchedBuildDefinition in watchedBuildDefinitions)
     {
         var buildStatus = buildStatuses.FirstOrDefault(s => s.BuildDefinitionId == watchedBuildDefinition.Id);
         if (buildStatus == null)
         {
             throw new BuildDefinitionNotFoundException(watchedBuildDefinition);
         }
         results.Add(buildStatus);
     }
     return results;
 }
 public async Task<IEnumerable<TfsRestBuildStatus>> GetBuildsStatuses(CiEntryPointSetting ciEntryPointSetting, BuildDefinitionSetting[] watchedBuildDefinitions)
 {
     var connection = new TfsConnectionDetails(ciEntryPointSetting);
     var buildDefinitionsByProjectCollection = watchedBuildDefinitions.GroupBy(bd => bd.Parent);
     List<TfsRestBuildStatus> resultingBuildStatuses = new List<TfsRestBuildStatus>();
     foreach (var buildDefinitionGroup in buildDefinitionsByProjectCollection)
     {
         var projectCollection = buildDefinitionGroup.Key;
         var buildQueryParams = GetBuildQueryParams(buildDefinitionGroup.ToArray());
         var projects = await _tfsJsonService.GetBuildsStatuses(connection, buildQueryParams, projectCollection);
         await _commentsCache.FetchNewComments(projects, connection, tfsJsonBuilds => GetComment(tfsJsonBuilds, connection, projectCollection));
         var buildStatuses = projects.Select(i => new TfsRestBuildStatus(i, _commentsCache));
         resultingBuildStatuses.AddRange(buildStatuses);
     }
     return resultingBuildStatuses;
 }
        public void TravisBuildStatus_FunkyDate()
        {
            var travisCiWorkingBuild = ResourceManager.TravisFunkyDate;
            var travisCiBuildDefinition = TravisCiBuildDefinition.FromIdString("ownerName/projectName/59");
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            TravisCiBuildStatus buildStatus = new TravisCiBuildStatus(travisCiBuildDefinition, travisCiWorkingBuild, buildDefinitionSetting);

            Assert.AreEqual(BuildStatusEnum.InProgress, buildStatus.BuildStatusEnum);
            Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId);
            Assert.AreEqual("Name", buildStatus.Name);
            Assert.AreEqual("Garima Singh", buildStatus.RequestedBy);
            Assert.AreEqual("Adding rake db:migrate for sample app in code", buildStatus.Comment);
            Assert.AreEqual("https://api.travis-ci.org/ownerName/projectName/builds/1791928", buildStatus.Url);
            Assert.AreEqual("1791928", buildStatus.BuildId);
        }
        public void TravisBuildStatus_PassingBuildNoComment()
        {
            var travisCiWorkingBuild = ResourceManager.TravisCiWorkingBuild;
            var travisCiBuildDefinition = TravisCiBuildDefinition.FromIdString("ownerName/projectName/59");
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            TravisCiBuildStatus buildStatus = new TravisCiBuildStatus(travisCiBuildDefinition, travisCiWorkingBuild, buildDefinitionSetting);

            Assert.AreEqual(BuildStatusEnum.Working, buildStatus.BuildStatusEnum);
            Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId);
            Assert.AreEqual("Name", buildStatus.Name);
            Assert.AreEqual("Bob Smith", buildStatus.RequestedBy);
            Assert.AreEqual("Merge branch 'master' of https://github.com/travis-ci/travis-ci", buildStatus.Comment);
            Assert.AreEqual("https://api.travis-ci.org/ownerName/projectName/builds/1591278", buildStatus.Url);
            Assert.AreEqual("1591278", buildStatus.BuildId);
        }
        public void BambooBuildStatus_FailedWithComment()
        {
            var bambooFailingBuild = ResourceManager.BambooFailingBuild;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            var buildStatus = BambooBuildStatus.CreateBuildResult(bambooFailingBuild, buildDefinitionSetting, "http://win7ci:8085");

            Assert.AreEqual(BuildStatusEnum.Broken, buildStatus.BuildStatusEnum);
            Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId);
            Assert.AreEqual("Name", buildStatus.Name);
            Assert.AreEqual("Lee", buildStatus.RequestedBy);
            Assert.AreEqual(new DateTime(2012, 3, 4, 0, 4, 23, 98), buildStatus.StartedTime.Value.ToUniversalTime(), HudsonBuildStatusTest.DateAsCode(buildStatus.StartedTime.Value.ToUniversalTime()));
            Assert.AreEqual("breaking the build", buildStatus.Comment);
            Assert.AreEqual(new DateTime(2012, 3, 4, 0, 4, 27, 61), buildStatus.FinishedTime.Value.ToUniversalTime(), HudsonBuildStatusTest.DateAsCode(buildStatus.FinishedTime.Value.ToUniversalTime())); // timestamp+duration
            Assert.AreEqual("2", buildStatus.BuildId);
            Assert.AreEqual("http://win7ci:8085/browse/CITEST-CITESTPLANKEY-2", buildStatus.Url);
        }
Exemplo n.º 18
0
 private TravisCiBuildStatus GetBuildStatus(BuildDefinitionSetting buildDefinitionSetting)
 {
     var webClient = new WebClient();
     var travisBuildDef = TravisCiBuildDefinition.FromIdString(buildDefinitionSetting.Id);
     var buildDefinitionUrl = "http://travis-ci.org/" + travisBuildDef.OwnerName + "/" + travisBuildDef.ProjectName + ".json";
     try
     {
         var json = webClient.DownloadString(buildDefinitionUrl);
         var lastBuildId = GetJsonValue(json, "last_build_id");
         var buildUrl = "http://travis-ci.org/builds/" + lastBuildId + ".json";
         json = webClient.DownloadString(buildUrl);
         return new TravisCiBuildStatus(travisBuildDef, json, buildDefinitionSetting);
     }
     catch (WebException webException)
     {
         throw WebClientXml.ToServerUnavailableException(buildDefinitionUrl, webException);
     }
 }
        public void HudsonBuildStatus_PassingBuildNoComment()
        {
            var jenkinsBuildStatusForIssue10 = ResourceManager.JenkinsPassingBuild;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            HudsonBuildStatus buildStatus = new HudsonBuildStatus(jenkinsBuildStatusForIssue10, buildDefinitionSetting, null, treatUnstableAsSuccess: false);

            Assert.AreEqual(BuildStatusEnum.Working, buildStatus.BuildStatusEnum);
            Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId);
            Assert.AreEqual("Name", buildStatus.Name);
            Assert.AreEqual("anonymous", buildStatus.RequestedBy);
            Assert.AreEqual(new DateTime(2011, 12, 23, 21, 8, 21), buildStatus.StartedTime, DateAsCode(buildStatus.StartedTime.Value));
            Assert.AreEqual("Started by user anonymous", buildStatus.Comment);
            Assert.AreEqual(new DateTime(2011, 12, 23, 21, 8, 22, 465), buildStatus.FinishedTime, DateAsCode(buildStatus.FinishedTime.Value)); // timestamp+duration
            Assert.AreEqual("http://win7ci:8081/job/SvnTest/30/", buildStatus.Url);
            Assert.AreEqual("30", buildStatus.BuildId);
        }
        public void HudsonBuildStatus_Bug152HudsonDuration()
        {
            var jenkinsBuildStatusForIssue10 = ResourceManager.Bug152HudsonDuration;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            HudsonBuildStatus buildStatus = new HudsonBuildStatus(jenkinsBuildStatusForIssue10, buildDefinitionSetting, null, treatUnstableAsSuccess: false);

            Assert.AreEqual(BuildStatusEnum.Working, buildStatus.BuildStatusEnum);
            Assert.AreEqual(null, buildStatus.RequestedBy);

            // 2/15/2012 5:00:54 PM
            Assert.AreEqual(new DateTime(2012, 2, 15, 17, 0, 54, 361), buildStatus.StartedTime, DateAsCode(buildStatus.StartedTime.Value));
            Assert.IsNull(buildStatus.Comment);
            Assert.AreEqual(new DateTime(2012, 2, 15, 17, 6, 4, 51), buildStatus.FinishedTime, DateAsCode(buildStatus.FinishedTime.Value));
            Assert.AreEqual("277", buildStatus.BuildId);
            Assert.AreEqual("https://tr-w03.statoil.net:10945/jenkins-prod/view/eBOSS/job/eBOSS/49/", buildStatus.Url);
        }
        public void HudsonBuildStatus_Issues10_AlwaysUseTimestampIfAvailable()
        {
            var jenkinsBuildStatusForIssue10 = ResourceManager.JenkinsBuildStatusForIssue10;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            HudsonBuildStatus buildStatus = new HudsonBuildStatus(jenkinsBuildStatusForIssue10, buildDefinitionSetting, null, treatUnstableAsSuccess: false);

            Assert.AreEqual(BuildStatusEnum.Working, buildStatus.BuildStatusEnum);
            Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId);
            Assert.AreEqual("Name", buildStatus.Name);
            Assert.AreEqual("STCO", buildStatus.RequestedBy);
            Assert.AreEqual(new DateTime(2012, 1, 19, 12, 45, 17, 736), buildStatus.StartedTime, "" + buildStatus.StartedTime.Value.Millisecond);
            Assert.IsNull(buildStatus.Comment);
            Assert.AreEqual(new DateTime(2012, 1, 19, 12, 50, 56, 422), buildStatus.FinishedTime, "" + buildStatus.FinishedTime.Value.Millisecond); // timestamp+duration
            Assert.AreEqual("https://tr-w03.statoil.net:10945/jenkins-prod/view/eBOSS/job/eBOSS/49/", buildStatus.Url);
            Assert.AreEqual("49", buildStatus.BuildId);
        }
        public void CruiseControlNetBuildStatus_BrokenWithAuthor()
        {
            var document = ResourceManager.CruiseControlNetBrokenWithAuthor;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            XElement projectElement = document.Root.Element("Project");
            CruiseControlNetBuildStatus.ClearCache();
            CruiseControlNetBuildStatus buildStatus = new CruiseControlNetBuildStatus(projectElement, null);

            Assert.AreEqual(BuildStatusEnum.Broken, buildStatus.BuildStatusEnum);
            Assert.AreEqual("Lee", buildStatus.RequestedBy);
            Assert.IsNotNull(buildStatus.StartedTime);
            AssertAreClose(new DateTime(2012, 8, 16, 19, 23, 34, 276), buildStatus.StartedTime.Value);
            Assert.IsNull(buildStatus.Comment);
            Assert.IsNotNull(buildStatus.FinishedTime);
            AssertAreClose(new DateTime(2012, 8, 16, 19, 23, 34, 276), buildStatus.FinishedTime.Value);
            Assert.AreEqual("20120816192334", buildStatus.BuildId);
        }
        public void TeamCityFailureDueToCleanup()
        {
            var teamCityFailureDueToCleanup = ResourceManager.TeamCityFailureDueToCleanup;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting
                                                                {
                                                                    Name = "Name",
                                                                    Id = "BuildDefinitionId"
                                                                };
            var buildStatus = new TeamCityBuildStatus(buildDefinitionSetting, teamCityFailureDueToCleanup, null);

            Assert.AreEqual(BuildStatusEnum.Unknown, buildStatus.BuildStatusEnum);
            Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId);
            Assert.AreEqual("db_maintenance Database [GRAVIS1]", buildStatus.Name);
            Assert.AreEqual(null, buildStatus.RequestedBy);
            Assert.AreEqual(new DateTime(2012, 5, 29, 21, 0, 7, 0), buildStatus.StartedTime, HudsonBuildStatusTest.DateAsCode(buildStatus.StartedTime.Value));
            Assert.AreEqual(null, buildStatus.Comment);
            Assert.AreEqual(new DateTime(2012, 5, 29, 21, 0, 12, 0), buildStatus.FinishedTime, HudsonBuildStatusTest.DateAsCode(buildStatus.FinishedTime.Value)); // timestamp+duration
            Assert.AreEqual("http://teamcity.com/viewLog.html?buildId=32470&buildTypeId=bt231", buildStatus.Url);
            Assert.AreEqual("32470", buildStatus.BuildId);
        }
Exemplo n.º 24
0
 public TravisCiBuildStatus(TravisCiBuildDefinition travisCiBuildDefinition, string jsonDoc, BuildDefinitionSetting buildDefinitionSetting)
 {
     try
     {
         BuildStatusEnum = ToBuildStatusEnum(TravisCiService.GetJsonValue(jsonDoc, "result"));
         BuildDefinitionId = buildDefinitionSetting.Id;
         Name = buildDefinitionSetting.Name;
         RequestedBy = TravisCiService.GetJsonValue(jsonDoc, "author_name");
         StartedTime = TravisCiService.GetJsonDate(jsonDoc, "started_at");
         Comment = TravisCiService.GetJsonValue(jsonDoc, "message");
         FinishedTime = TravisCiService.GetJsonDate(jsonDoc, "finished_at");
         Url = "http://travis-ci.org/" + travisCiBuildDefinition.OwnerName + "/" + travisCiBuildDefinition.ProjectName + "/builds/" + TravisCiService.GetJsonValue(jsonDoc, "id");
         BuildId = TravisCiService.GetJsonValue(jsonDoc, "id");
     }
     catch (Exception)
     {
         _log.Error("Error parsing the following json: " + jsonDoc);
         throw;
     }
 }
Exemplo n.º 25
0
        /// <param name="rootUrl">Must not end with /</param>
        public static BambooBuildStatus CreateBuildResult(XDocument doc, BuildDefinitionSetting buildDefinitionSetting, string rootUrl)
        {
            BambooBuildStatus result = new BambooBuildStatus
            {
                BuildDefinitionId = buildDefinitionSetting.Id,
                Name = buildDefinitionSetting.Name
            };

            if (doc.Root == null) throw new Exception("Invalid root element");

            var stateStr = doc.Root.AttributeValueOrDefault("state");

            result.StartedTime = ParseDateTime(doc.Root.ElementValueOrDefault("buildStartedTime"));
            result.FinishedTime = ParseDateTime(doc.Root.ElementValueOrDefault("buildCompletedTime"));

            result.BuildStatusEnum = ToBuildStatusEnum(stateStr);

            var changesElem = doc.Root.Element("changes");
            if (changesElem != null)
            {
                var changeElem = changesElem.Element("change");
                if (changeElem != null)
                {
                    result.RequestedBy = changeElem.AttributeValueOrDefault("author");
                    result.Comment = changeElem.ElementValueOrDefault("comment");
                }
            }

            result.BuildId = doc.Root.AttributeValueOrDefault("number");
            string buildKey = doc.Root.AttributeValueOrDefault("key"); // i.e. the "plan key"
            result.Url = rootUrl + "/browse/" + buildKey;

            if (string.IsNullOrWhiteSpace(result.RequestedBy) && string.IsNullOrWhiteSpace(result.Comment))
            {
                var buildReason = doc.Root.ElementValueOrDefault("buildReason");
                result.Comment = GetCommentFromBuildReason(buildReason);
                result.RequestedBy = GetUserFromBuildReason(buildReason);
            }

            return result;
        }
Exemplo n.º 26
0
        private TravisCiBuildStatus GetBuildStatus(CiEntryPointSetting ciEntryPointSetting, BuildDefinitionSetting buildDefinitionSetting)
        {
            var webClient = new WebClient();
            var authToken = ciEntryPointSetting.GetPassword();
            AddTravisHeaders(webClient, authToken);
            var travisBuildDef = TravisCiBuildDefinition.FromIdString(buildDefinitionSetting.Id);
            var buildDefinitionUrl = GetUrl(ciEntryPointSetting.Url, travisBuildDef.OwnerName, travisBuildDef.ProjectName);

            try
            {
                var json = webClient.DownloadString(buildDefinitionUrl);
                var lastBuildId = GetJsonValue(json, "last_build_id");
                var buildUrl = string.Format("{0}builds/{1}", ciEntryPointSetting.Url, lastBuildId);
                json = webClient.DownloadString(buildUrl);
                return new TravisCiBuildStatus(travisBuildDef, json, buildDefinitionSetting);
            }
            catch (WebException webException)
            {
                throw WebClientXml.ToServerUnavailableException(buildDefinitionUrl, webException);
            }
        }
Exemplo n.º 27
0
        public static BambooBuildStatus CreateIsBuilding(BuildDefinitionSetting buildDefinitionSetting)
        {
            BambooBuildStatus result = new BambooBuildStatus
            {
                BuildDefinitionId = buildDefinitionSetting.Id,
                Name = buildDefinitionSetting.Name,
                BuildStatusEnum = BuildStatusEnum.InProgress
            };

            DateTime startTime;
            if (_startTimeLookup.TryGetValue(buildDefinitionSetting.Id, out startTime))
            {
                result.StartedTime = startTime;
            }
            else
            {
                result.StartedTime = DateTime.Now;
                _startTimeLookup.Add(buildDefinitionSetting.Id, result.StartedTime.Value);
            }

            return result;
        }
        public void CruiseControlNetBuildStatus_InProgress()
        {
            var document = ResourceManager.CruiseControlNetJoesProject1;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            XElement projectElement = document.Root.Element("Project");
            CruiseControlNetBuildStatus.ClearCache();
            CruiseControlNetBuildStatus buildStatus = new CruiseControlNetBuildStatus(projectElement, null);

            Assert.AreEqual(BuildStatusEnum.InProgress, buildStatus.BuildStatusEnum);
            Assert.AreEqual("CruiseControlNetProj1", buildStatus.BuildDefinitionId);
            Assert.AreEqual("CruiseControlNetProj1", buildStatus.Name);
            Assert.AreEqual(null, buildStatus.RequestedBy);
            Assert.IsNotNull(buildStatus.StartedTime);
            Assert.AreEqual(new DateTime(2011, 8, 28, 17, 20, 5, 375), buildStatus.StartedTime.Value.ToUniversalTime(), HudsonBuildStatusTest.DateAsCode(buildStatus.StartedTime.Value.ToUniversalTime()));
            Assert.IsNull(buildStatus.Comment);
            Assert.IsNotNull(buildStatus.FinishedTime);
            Assert.AreEqual(new DateTime(2011, 8, 28, 17, 20, 5, 375), buildStatus.FinishedTime.Value.ToUniversalTime(), HudsonBuildStatusTest.DateAsCode(buildStatus.FinishedTime.Value.ToUniversalTime()));
            //Assert.AreEqual("http://win7ci:8081/job/SvnTest/30/", buildStatus.Url);
            //Assert.AreEqual(30, buildStatus.BuildId);
        }
Exemplo n.º 29
0
 private HudsonBuildStatus GetBuildStatus(BuildDefinitionSetting buildDefinitionSetting, CiEntryPointSetting ciEntryPointSetting)
 {
     string userName = ciEntryPointSetting.UserName;
     string password = ciEntryPointSetting.GetPassword();
     var rootUrl = GetRootUrl(ciEntryPointSetting.Url);
     var treatUnstableAsSuccess = ciEntryPointSetting.TreatUnstableAsSuccess;
     
     string url = rootUrl + "/job/" + buildDefinitionSetting.Id + "/api/xml";
     try
     {
         XDocument doc = DownloadXml(url, userName, password);
         if (doc.Root == null)
         {
             return new HudsonBuildStatus(null, buildDefinitionSetting, "Could not get project status", treatUnstableAsSuccess);
         }
         var lastBuildElem = doc.Root.Element("lastBuild");
         if (lastBuildElem == null)
         {
             return new HudsonBuildStatus(null, buildDefinitionSetting, "No project builds found", treatUnstableAsSuccess);
         }
         var buildNumber = lastBuildElem.ElementValueOrDefault("number");
         var buildUrl = rootUrl + "/job/" + buildDefinitionSetting.Id + "/" + buildNumber;
         if (string.IsNullOrWhiteSpace(buildUrl)) throw new Exception("Could not get build url");
         buildUrl += "/api/xml";
         doc = DownloadXml(buildUrl, userName, password);
         if (doc.Root == null) throw new Exception("Could not get project build status");
         return GetBuildStatusAndCommentsFromXDocument(buildDefinitionSetting, doc, treatUnstableAsSuccess);
     }
     catch (SosException ex)
     {
         if (ex.Message.ToLower(CultureInfo.CurrentCulture).Contains("not_found"))
         {
             throw new BuildDefinitionNotFoundException(buildDefinitionSetting);
         }
         throw;
     }
 }
Exemplo n.º 30
0
        public HudsonBuildStatus(XDocument doc, BuildDefinitionSetting buildDefinitionSetting, string defaultBuildStatusMessage = null)
        {
            try
            {
                InitialiseBuildStatus(buildDefinitionSetting, defaultBuildStatusMessage);
                if (doc == null) return;

                var docRoot = LocateDocumentRoot(doc);
                if (docRoot == null)
                {
                    _log.Error("Error parsing the following xml:" + Environment.NewLine + doc);
                    return;
                }

                DetermineBuildUrl(docRoot);
                DetermineBuildId(docRoot);
                DetermineBuildStatus(docRoot);

                var changeSet = GetElementByName(docRoot, "changeSet");
                if (changeSet == null)
                {
                    _log.Error("ChangeSet not found in the following xml:" + Environment.NewLine + doc);
                    return;
                }

                var changeSetItem = GetElementByName(changeSet, "item");

                DetermineBuildTimes(docRoot, changeSetItem);
                DetermineChangeDetails(docRoot, changeSetItem);
            }
            catch (Exception)
            {
                _log.Error("Error parsing the following xml:" + Environment.NewLine + doc);
                throw;
            }
        }
        public void CruiseControlNetBuildStatus_ChangesToInProgress()
        {
            var inProgressStatus = ResourceManager.CruiseControlNetJoesProject1;
            var notInProgressStatus = ResourceManager.CruiseControlNetJoesProject2;
            BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting();
            buildDefinitionSetting.Name = "Name";
            buildDefinitionSetting.Id = "BuildDefinitionId";
            XElement notInProgressStatusProjectElement = notInProgressStatus.Root.Element("Project");
            XElement inProgressStatusProjectElement = inProgressStatus.Root.Element("Project");
            CruiseControlNetBuildStatus.ClearCache();
            new CruiseControlNetBuildStatus(notInProgressStatusProjectElement, null);
            CruiseControlNetBuildStatus buildStatus = new CruiseControlNetBuildStatus(inProgressStatusProjectElement, null);

            Assert.AreEqual(BuildStatusEnum.InProgress, buildStatus.BuildStatusEnum);
            Assert.AreEqual("CruiseControlNetProj1", buildStatus.BuildDefinitionId);
            Assert.AreEqual("CruiseControlNetProj1", buildStatus.Name);
            Assert.AreEqual(null, buildStatus.RequestedBy);
            Assert.IsNotNull(buildStatus.StartedTime);
            Assert.AreEqual(DateTime.Now.ToString(), buildStatus.StartedTime.Value.ToString());
            Assert.IsNull(buildStatus.Comment);
            Assert.IsNull(buildStatus.FinishedTime);
            Assert.AreEqual("http://VMXP/ccnet/server/local/project/CruiseControlNetProj1/build/log20110828202005Lbuild.3.xml/ViewBuildReport.aspx", buildStatus.Url);
            Assert.AreEqual("3", buildStatus.BuildId);
        }