예제 #1
0
 public virtual List <ReleaseDefinition> GetReleaseDefinitions(string projectId, ReleaseHttpClient rmClient)
 {
     return(rmClient.GetReleaseDefinitionsAsync(
                project: projectId,
                searchText: "DEMO_DEPLOYER",
                expand: ReleaseDefinitionExpands.Artifacts
                ).Result);
 }
예제 #2
0
        public IEnumerable <ReleaseDefinition> GetReleaseDefinitions(
            string definitionName,
            string accessToken)
        {
            if (string.IsNullOrWhiteSpace(accessToken))
            {
                throw new ArgumentException("parameter cannot be null or whitespace", nameof(accessToken));
            }

            this.logger.LogDebug($"getting release definitions. definition name:[{definitionName}]");

            ReleaseHttpClient client = this.GetClient <ReleaseHttpClient>(accessToken);

            return(client.GetReleaseDefinitionsAsync(
                       this.vstsConfig.ProjectName,
                       searchText: definitionName,
                       expand: ReleaseDefinitionExpands.Artifacts | ReleaseDefinitionExpands.Environments).Result);
        }
예제 #3
0
        public List <ReleaseDefinition> ListAllReleaseDefinitionsWithArtifactsExpanded()
        {
            string projectName = ClientSampleHelpers.FindAnyProject(this.Context).Name;

            // Get a release client instance
            VssConnection     connection    = Context.Connection;
            ReleaseHttpClient releaseClient = connection.GetClient <ReleaseHttpClient>();

            // Show the release definitions
            List <ReleaseDefinition> releaseDefinitions = releaseClient.GetReleaseDefinitionsAsync(project: projectName, expand: ReleaseDefinitionExpands.Artifacts).Result;

            foreach (ReleaseDefinition releaseDefinition in releaseDefinitions)
            {
                Console.WriteLine("{0} {1}", releaseDefinition.Id.ToString().PadLeft(6), releaseDefinition.Name);
            }

            return(releaseDefinitions);
        }
예제 #4
0
        public async Task <ReleaseResults> GetReleaseDefinitions()
        {
            var defs = await _releaseClient.GetReleaseDefinitionsAsync(_projectName, null, ReleaseDefinitionExpands.Environments);

            var failingSolutions = (await _buildClient.GetBuildsAsync(_projectName))
                                   .GroupBy(x => new
            {
                x.Definition.Name,
                x.Status
            })
                                   .Select(x => x.FirstOrDefault(w => w.BuildNumber == x.Max(m => m.BuildNumber)))
                                   .Where(x => x != null && (x.Result == BuildResult.Failed || x.Status == BuildStatus.InProgress))
                                   .Select(x => new Tuple <string, string>(x.Definition.Name, x.Status.ToString()))
                                   .ToList();

            return(new ReleaseResults {
                FailingSolutions = failingSolutions, Defs = defs
            });
        }
예제 #5
0
        /// <summary>
        /// View all releases in a tream project
        /// </summary>
        /// <param name="teamProjectName"></param>
        private static void ViewProjectReleasDefinitions(string teamProjectName)
        {
            var reldefList = ReleaseClient.GetReleaseDefinitionsAsync(teamProjectName, expand: ReleaseDefinitionExpands.Environments).Result;

            foreach (var reldef in reldefList)
            {
                Console.WriteLine("===========RELEASE DEFINITION==================================");
                Console.WriteLine("ID: {0} PATH: {1} NAME: {2}", reldef.Id, reldef.Path, reldef.Name);
                Console.WriteLine("---------------------------------------------------------------");
                Console.Write("STAGES:");

                if (reldef.Environments != null)
                {
                    foreach (var env in reldef.Environments)
                    {
                        Console.Write(env.Name + "; ");
                    }
                }

                Console.WriteLine();
                ViewReleases(teamProjectName, reldef.Id);
            }
        }
예제 #6
0
        static void RunOptions(Options opts)
        {
            VssCredentials creds = new VssBasicCredential(string.Empty, personalAccessToken);

            // Connect to Azure DevOps Services
            VssConnection connection = new VssConnection(new Uri(collectionUri), creds);

            //GraphClient
            GraphHttpClient graphClient = new GraphHttpClient(new Uri(collectionUri), creds);

            // Get Project
            ProjectHttpClient projectClient = connection.GetClient <ProjectHttpClient>();
            var projects = projectClient.GetProjects().Result;

            ReleaseHttpClient releaseHttpClient = connection.GetClient <ReleaseHttpClient>();
            BuildHttpClient   buildClient       = connection.GetClient <BuildHttpClient>();

            // Results
            List <ProjectExtractInfo> projectExtracts = new List <ProjectExtractInfo>();
            List <BuildExtractInfo>   buildExtracts   = new List <BuildExtractInfo>();
            List <ReleaseExtractInfo> releaseExtracts = new List <ReleaseExtractInfo>();

            foreach (var p in projects)
            {
                Console.WriteLine($"Processing {p.Name} ...");

                //Builds
                var builds = buildClient.GetFullDefinitionsAsync(p.Id).Result;
                foreach (var b in builds)
                {
                    buildExtracts.Add(new BuildExtractInfo
                    {
                        Name                 = b.Name,
                        ProjectName          = p.Name,
                        RepoName             = b.Repository.Name,
                        RepoType             = b.Repository.Type,
                        DefaultAgent         = b.Queue.Pool.Name,
                        TriggerType          = b.Triggers.Count > 0 ?  b.Triggers[0].TriggerType.ToString() : "",
                        TriggerBranchFilters = b.Triggers.Count > 0 ? string.Join(",", ((ContinuousIntegrationTrigger)b.Triggers.First()).BranchFilters.ToArray()) : "",
                        Url   = b.Url,
                        Steps = b.Process != null ? ((DesignerProcess)b.Process).Phases[0].Steps.Select(s => s.DisplayName).ToList() : new List <string>()
                    });
                }

                //Releases
                var releases = releaseHttpClient.GetReleaseDefinitionsAsync(p.Name, expand: ReleaseDefinitionExpands.Environments).Result;
                foreach (var r in releases)
                {
                    releaseExtracts.Add(new ReleaseExtractInfo
                    {
                        Name        = r.Name,
                        ProjectName = p.Name
                    });
                }

                projectExtracts.Add(new ProjectExtractInfo {
                    Name = p.Name, BuildCount = builds.Count, ReleaseCount = releases.Count
                });
            }


            //Save Results
            ExcelSerializer.Serialize(projectExtracts, buildExtracts, releaseExtracts);

            Console.ReadLine();
        }
예제 #7
0
 public async Task <List <ReleaseDefinition> > GetReleaseDefinitions()
 {
     return(await _client.GetReleaseDefinitionsAsync(_projectName, null, ReleaseDefinitionExpands.Environments));
 }