Ejemplo n.º 1
0
        /// <summary>
        /// Show builds details
        /// </summary>
        /// <param name="TeamProjectName"></param>
        /// <param name="buildDef"></param>
        private static void ListBuilds(string TeamProjectName, BuildDefinitionReference buildDef)
        {
            List <Build> builds = BuildClient.GetBuildsAsync(TeamProjectName, new List <int> {
                buildDef.Id
            }).Result;

            if (builds.Count > 0)
            {
                Console.WriteLine("+====================BUILDS================================================================================");
                Console.WriteLine("+    ID      |        NUMBER        |      STATUS     |     START DATE     |    FINISH DATE     | COMMITS");
                Console.WriteLine("+----------------------------------------------------------------------------------------------------------");

                for (int i = 0; i < builds.Count && i < 10; i++)
                {
                    var changes = BuildClient.GetBuildChangesAsync(TeamProjectName, builds[i].Id).Result;
                    Console.WriteLine(" {0, -12}|{1, -22}|{2, -17}|{3, -20}|{4, -20}|{5}", builds[i].Id, builds[i].BuildNumber, builds[i].Status,
                                      (builds[i].StartTime.HasValue) ? builds[i].StartTime.Value.ToString() : "",
                                      (builds[i].FinishTime.HasValue) ? builds[i].FinishTime.Value.ToString() : "", changes.Count);
                }
            }
            else
            {
                Console.WriteLine("+=======================================================================================");
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BuildDefinitionCard"/> class.
        /// </summary>
        /// <param name="buildDefinition">A  build definition.</param>
        public BuildDefinitionCard(BuildDefinitionReference buildDefinition)
        {
            buildDefinition.ThrowIfNull(nameof(buildDefinition));

            this.Title = buildDefinition.Name;

            this.Buttons.Add(new CardAction(ActionTypes.ImBack, Labels.Queue, value: FormattableString.Invariant($"queue {buildDefinition.Id}")));
        }
        /// <summary>
        /// Converts a <see cref="BuildDefinitionReference"/> to an <see cref="AzureDevOpsBuildDefinition"/>.
        /// </summary>
        /// <param name="buildDefinitionReference">Build definition reference to convert.</param>
        /// <returns>Converted build definition.</returns>
        public static AzureDevOpsBuildDefinition ToAzureDevOpsBuildDefinition(this BuildDefinitionReference buildDefinitionReference)
        {
            buildDefinitionReference.NotNull(nameof(buildDefinitionReference));

            return
                (new AzureDevOpsBuildDefinition
            {
                Id = buildDefinitionReference.Id,
                Name = buildDefinitionReference.Name,
                QueueStatus = buildDefinitionReference.QueueStatus.ToAzureDevOpsDefinitionQueueStatus(),
            });
        }
        public void Constructor()
        {
            var buildDefinition = new BuildDefinitionReference {
                Id = 1, Name = "Build 1"
            };

            var target = new BuildDefinitionCard(buildDefinition);

            target.Title.Should().Be(buildDefinition.Name);

            target.Buttons.First().Value.Should().Be("queue 1");
        }
Ejemplo n.º 5
0
        private async Task <BuildDefinition> GetExistingDefinitionAsync(string definitionName, CancellationToken cancellationToken)
        {
            Logger.LogDebug("Attempting to get existing definition '{0}'.", definitionName);
            var projectReference = await Context.GetProjectReferenceAsync(cancellationToken);

            var sourceRepository = await Context.GetSourceRepositoryAsync(cancellationToken);

            var buildClient = await Context.GetBuildHttpClientAsync(cancellationToken);

            if (pipelineReferences == default)
            {
                var definitionReferences = await buildClient.GetDefinitionsAsync(
                    project : projectReference.Id,
                    path : Context.DevOpsPath
                    );

                pipelineReferences = new Dictionary <string, BuildDefinitionReference>();
                foreach (var definition in definitionReferences)
                {
                    if (pipelineReferences.ContainsKey(definition.Name))
                    {
                        Logger.LogDebug($"Found more then one definition with name {definition.Name}, picking the first one {pipelineReferences[definition.Name].Id} and not {definition.Id}");
                    }
                    else
                    {
                        pipelineReferences.Add(definition.Name, definition);
                    }
                }
                Logger.LogDebug($"Cached {definitionReferences.Count} pipelines.");
            }

            BuildDefinitionReference definitionReference = null;

            pipelineReferences.TryGetValue(definitionName, out definitionReference);

            if (definitionReference != null)
            {
                Logger.LogDebug("Existing definition '{0}' found at '{1}'.", definitionName, definitionReference.GetWebUrl());
                return(await buildClient.GetDefinitionAsync(
                           project : projectReference.Id,
                           definitionId : definitionReference.Id,
                           cancellationToken : cancellationToken
                           ));
            }
            else
            {
                Logger.LogDebug("No definition named '{0}' was found.", definitionName);
                return(null);
            }
        }
Ejemplo n.º 6
0
        public Build QueueBuild(BuildDefinitionReference definition)
        {
            DefinitionReference definitionReference = new DefinitionReference();

            definitionReference.Id      = definition.Id;
            definitionReference.Project = definition.Project;
            Build build = new Build();

            build.Definition = definitionReference;
            build.Project    = definition.Project;
            var result = _buildClient.QueueBuildAsync(build).GetAwaiter().GetResult();

            return(result);
        }
        public TestPlanWebApi.TestPlan UpdateTestPlan()
        {
            string projectName = ClientSampleHelpers.FindAnyProject(this.Context).Name;

            // Get a testplan client instance
            VssConnection      connection     = Context.Connection;
            TestPlanHttpClient testPlanClient = connection.GetClient <TestPlanHttpClient>();

            BuildDefinitionReference buildDefinition     = this._getBuildReference();
            TestOutcomeSettings      testOutcomeSettings = new TestOutcomeSettings()
            {
                SyncOutcomeAcrossSuites = true
            };
            ReleaseEnvironmentDefinitionReference releaseEnvironmentDefinition = this._getReleaseEnvironmentDefinitionReference();


            TestPlanWebApi.TestPlan newplan1;
            Context.TryGetValue <TestPlanWebApi.TestPlan>("$newPlan1", out newplan1);
            if (newplan1 != null)
            {
                int id = newplan1.Id;
                TestPlanWebApi.TestPlanUpdateParams testPlanUpdateParams = new TestPlanWebApi.TestPlanUpdateParams()
                {
                    Name            = "updatedPlan1",
                    AreaPath        = this._getArea(),
                    Iteration       = this._getIteration(),
                    Description     = "description of the test plan",
                    StartDate       = DateTime.Now.AddDays(2),
                    EndDate         = DateTime.Now.AddDays(9),
                    State           = "Inactive",
                    BuildId         = this._getBuildId(),
                    Revision        = newplan1.Revision,
                    BuildDefinition = buildDefinition,
                    ReleaseEnvironmentDefinition = releaseEnvironmentDefinition,
                    TestOutcomeSettings          = testOutcomeSettings
                };


                // update a test plan
                TestPlanWebApi.TestPlan plan = testPlanClient.UpdateTestPlanAsync(testPlanUpdateParams, projectName, id).Result;


                Context.Log("{0} {1}", plan.Id, plan.Name);
                return(plan);
            }
            return(null);
        }
        /// <summary>
        /// Gets the builds for the parameter <paramref name="settings"/>.
        /// </summary>
        /// <param name="log">The Cake log context.</param>
        /// <param name="settings">Settings for getting the build.</param>
        /// <returns>The builds or an empty list of builds if no builds were found for the <paramref name="settings"/>.</returns>
        /// <exception cref="InvalidOperationException">If no build definition was found for the <paramref name="settings"/>.</exception>
        internal static IEnumerable <AzureDevOpsBuild> GetAzureDevOpsBuilds(
            ICakeLog log,
            AzureDevOpsBuildsSettings settings)
        {
            log.NotNull(nameof(log));
            settings.NotNull(nameof(settings));

            var azureDevOpsBuilds = new List <AzureDevOpsBuild>();

            using (var buildHttpClient = new BuildClientFactory().CreateBuildClient(settings.CollectionUrl, settings.Credentials, out var authorizedIdenity))
            {
                log.Verbose(
                    "Authorized Identity:\n  Id: {0}\n  DisplayName: {1}",
                    authorizedIdenity.Id,
                    authorizedIdenity.DisplayName);

                BuildDefinitionReference buildDefinition = null;

                if (!string.IsNullOrEmpty(settings.BuildDefinitionName))
                {
                    buildDefinition = GetBuildDefinition(log, buildHttpClient, settings);
                    if (buildDefinition == null)
                    {
                        throw new InvalidOperationException($"Build definition '{settings.BuildDefinitionName}' not found");
                    }
                }

                List <int> buildsDefinitionIds =
                    buildDefinition == null ? null : new List <int>()
                {
                    buildDefinition.Id
                };

                List <Build> builds = null;

                if (settings.ProjectGuid != Guid.Empty)
                {
                    builds =
                        buildHttpClient
                        .GetBuildsAsync(
                            settings.ProjectGuid,
                            definitions: buildsDefinitionIds,
                            statusFilter: settings.BuildStatus?.ToBuildStatus(),
                            resultFilter: settings.BuildResult?.ToBuildResult(),
                            queryOrder: settings.BuildQueryOrder?.ToBuildQueryOrder(),
                            branchName: settings.BranchName,
                            top: settings.Top,
                            maxBuildsPerDefinition: settings.MaxBuildsPerDefinition)
                        .ConfigureAwait(false)
                        .GetAwaiter()
                        .GetResult();
                }
                else if (!string.IsNullOrWhiteSpace(settings.ProjectName))
                {
                    builds =
                        buildHttpClient
                        .GetBuildsAsync(
                            settings.ProjectName,
                            definitions: buildsDefinitionIds,
                            statusFilter: settings.BuildStatus?.ToBuildStatus(),
                            resultFilter: settings.BuildResult?.ToBuildResult(),
                            queryOrder: settings.BuildQueryOrder?.ToBuildQueryOrder(),
                            branchName: settings.BranchName,
                            top: settings.Top,
                            maxBuildsPerDefinition: settings.MaxBuildsPerDefinition)
                        .ConfigureAwait(false)
                        .GetAwaiter()
                        .GetResult();
                }
                else
                {
                    throw new ArgumentOutOfRangeException(
                              nameof(settings),
                              "Either ProjectGuid or ProjectName needs to be set");
                }

                azureDevOpsBuilds.AddRange(builds.Select(x => new AzureDevOpsBuild(log, settings, x)));
            }

            log.Verbose(
                "{0} builds found",
                azureDevOpsBuilds.Count);

            return(azureDevOpsBuilds);
        }
 private IBuildDefinition Convert(BuildDefinitionReference definition)
 {
     return(new TfsBuildDefinition(definition));
 }
Ejemplo n.º 10
0
 public TaskContext(TestResultSyncTaskOptions task, BuildDefinitionReference buildDefinitionReference)
 {
     Task = task;
     BuildDefinitionReference = buildDefinitionReference;
 }
        public static string GetWebUrl(this BuildDefinitionReference definitionReference)
        {
            var referenceLink = (ReferenceLink)definitionReference.Links.Links["web"];

            return(referenceLink.Href);
        }