Пример #1
0
        /// <summary>
        /// Gets the projects.
        /// </summary>
        /// <param name="address">The address.</param>
        /// <returns>
        /// The projects list from the server.
        /// </returns>
        public override async Task <IList <Project> > GetProjects(string address)
        {
            var api            = new JenkinsApi();
            var serverProjects = new List <Project>();

            await this.GetProjectsLists(address, serverProjects, api);

            return(serverProjects);
        }
Пример #2
0
        /// <summary>
        /// Gets the projects.
        /// </summary>
        /// <param name="address">The address.</param>
        /// <returns>
        /// The projects list from the server.
        /// </returns>
        public override async Task <IList <Project> > GetProjects(string address)
        {
            var api            = new JenkinsApi();
            var serverProjects = new List <Project>();

            try
            {
                await this.GetProjectsLists(address, serverProjects, api);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(serverProjects);
        }
Пример #3
0
        /// <summary>
        /// Gets a project list from given jenkins server address.
        /// </summary>
        /// <param name="address">The server address.</param>
        /// <param name="projects">The list of projects to update.</param>
        /// <param name="jenkinsApi">Jenkins Api instance.</param>
        /// <returns>A task representing the job.</returns>
        private async Task GetProjectsLists(string address, IList <Project> projects, JenkinsApi jenkinsApi)
        {
            JenkinsJobs jenkinsJobs;

            try
            {
                jenkinsJobs = await jenkinsApi.GetJenkinsJobs(address, default);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (jenkinsJobs == null)
            {
                return;
            }

            if (jenkinsJobs?.Jobs == null)
            {
                return;
            }

            foreach (var jenkinsJob in jenkinsJobs.Jobs)
            {
                var newServerProject = this.AddProject(projects, jenkinsJob);
                if (string.Equals(jenkinsJob.ClassName.Trim(), "com.cloudbees.hudson.plugins.folder.Folder".Trim(), System.StringComparison.InvariantCultureIgnoreCase) ||
                    string.Equals(jenkinsJob.ClassName.Trim(), "org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject".Trim(), System.StringComparison.InvariantCultureIgnoreCase))
                {
                    await this.GetProjectsLists(jenkinsJob.Url, newServerProject.Children, jenkinsApi);

                    foreach (var child in newServerProject.Children)
                    {
                        child.Parent = newServerProject;
                    }
                }
            }
        }
        /// <summary>
        /// Gets a project list from given jenkins server address.
        /// </summary>
        /// <param name="address">The server address.</param>
        /// <param name="serverProjects">The list of projects to update.</param>
        /// <param name="jenkinsApi">Jenkins Api instance.</param>
        /// <returns>A task representing the job.</returns>
        private async Task GetProjectsLists(string address, List <ServerProjectTreeItem> serverProjects, JenkinsApi jenkinsApi)
        {
            var jenkinsJobs = await jenkinsApi.GetJenkinsJobs(address, default(System.Threading.CancellationToken));

            foreach (var jenkinsJob in jenkinsJobs.Jobs)
            {
                var newServerProject = this.AddServerProject(serverProjects, jenkinsJob);
                if (string.Equals(jenkinsJob.ClassName.Trim(), "com.cloudbees.hudson.plugins.folder.Folder".Trim(), System.StringComparison.InvariantCultureIgnoreCase) ||
                    string.Equals(jenkinsJob.ClassName.Trim(), "org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject".Trim(), System.StringComparison.InvariantCultureIgnoreCase))
                {
                    await this.GetProjectsLists(jenkinsJob.Url, newServerProject.ServerProjects, jenkinsApi);
                }
            }
        }