コード例 #1
0
        public async Task <CruiseControlJob> GetProjectStatus(CancellationToken cancellationToken, string projectName, int interval)
        {
            var pollInterval = new TimeSpan(0, 0, 0, interval, 0);

            if (DateTime.Now - this.lastPolled > pollInterval)
            {
                log.Trace("Polling server {@server}", new { Address = this.ReportUrl, LastPolled = this.lastPolled, CallingProject = projectName });
                this.lastPolled = DateTime.Now;
                this.cache      = await this.GetStatusAsync <CruiseControlJobs>(cancellationToken, this.ReportUrl);
            }

            log.Trace("Retrieving value from cache for project {projectName}", projectName);
            return(this.cache?.CruiseControlProject?.FirstOrDefault(job => job.Name == projectName));
        }
コード例 #2
0
ファイル: CruiseControlPlugin.cs プロジェクト: sven-n/whatson
        /// <summary>
        /// Gets the projects.
        /// </summary>
        /// <param name="address">The address.</param>
        /// <returns>
        /// The projects from the server.
        /// </returns>
        public override async Task <IList <Project> > GetProjects(string address)
        {
            var result = new List <Project>();
            var server = CruiseControlManager.GetServer(address, false);
            CruiseControlJobs allProjects = null;

            try
            {
                allProjects = await server.GetAllProjects();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (allProjects == null)
            {
                throw new Exception();
            }

            var serverProjects = new List <Project>();

            foreach (var project in allProjects.CruiseControlProject)
            {
                var serverProjectTreeItem = new Project(address, project.Name, address + "server/" + project.ServerName + "/project/" + project.Name + "/ViewProjectReport.aspx");
                if (string.IsNullOrWhiteSpace(project.ServerName))
                {
                    result.Add(serverProjectTreeItem);
                }
                else
                {
                    var serverProject = serverProjects.FirstOrDefault(s => s.Name == project.ServerName);
                    if (serverProject == null)
                    {
                        serverProject = new Project(null, project.ServerName, address + "server/" + project.ServerName + "/viewServerReport.aspx", project.Name, address + "server/" + project.ServerName + "/project/" + project.Name);
                        serverProjects.Add(serverProject);
                        result.Add(serverProject);
                    }

                    serverProject.Children.Add(serverProjectTreeItem);
                    serverProjectTreeItem.Parent = serverProject;
                }
            }

            return(result);
        }