コード例 #1
0
        public static void BuildDefinition(string collection, string teamProject, string buildController, string buildName, string buildDescription, string user, string password)
        {
            string teamProjectPath = "$/" + teamProject;
            // Get a reference to our Team Foundation Server.
            TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(collection),
                                                                        new System.Net.NetworkCredential(user, password));

            tpc.EnsureAuthenticated();
            VersionControlServer versionControl = tpc.GetService <VersionControlServer>();
            IBuildServer         buildServer    = tpc.GetService <IBuildServer>();

            //Create build definition and give it a name and desription
            IBuildDefinition buildDef = buildServer.CreateBuildDefinition(teamProject);

            buildDef.Name        = buildName;
            buildDef.Description = buildDescription;
            buildDef.ContinuousIntegrationType = ContinuousIntegrationType.Individual; //CI

            //Controller and default build process template
            buildDef.BuildController = buildServer.GetBuildController(buildController);
            var defaultTemplate = buildServer.QueryProcessTemplates(teamProject).First(p => p.TemplateType == ProcessTemplateType.Default);

            buildDef.Process = defaultTemplate;

            buildDef.Workspace.AddMapping(teamProjectPath, "$(SourceDir)", WorkspaceMappingType.Map);
            buildDef.Workspace.AddMapping(teamProjectPath + "/Drops", "$(SourceDir)", WorkspaceMappingType.Cloak);
            //What to build
            string pattern       = "$/*.sln";
            var    lists         = versionControl.GetItems(pattern, VersionSpec.Latest, RecursionType.Full, DeletedState.NonDeleted, ItemType.File);
            var    processParams = new Dictionary <string, string[]>();


            if (lists.Items.Any())
            {
                var list = lists.Items
                           .Select(i => i.ServerItem)
                           .ToList();
                processParams.Add("ProjectsToBuild", list.ToArray());
            }
            processParams.Add("ConfigurationsToBuild", new[] { "Any CPU|Debug" });

            buildDef.ProcessParameters = SerializeParams(processParams);

            buildDef.RetentionPolicyList.Clear();
            buildDef.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Succeeded, 10, DeleteOptions.All);
            buildDef.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Failed, 10, DeleteOptions.All);
            buildDef.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Stopped, 1, DeleteOptions.All);
            buildDef.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.PartiallySucceeded, 10, DeleteOptions.All);

            //Lets save it
            buildDef.Save();
        }
コード例 #2
0
 private static void CloneRetentionPolicies(IBuildDefinition bd, IBuildDefinition newBuildDefinition)
 {
     newBuildDefinition.RetentionPolicyList.Clear();
     foreach (var retpol in bd.RetentionPolicyList)
     {
         newBuildDefinition.AddRetentionPolicy(retpol.BuildReason, retpol.BuildStatus, retpol.NumberToKeep, retpol.DeleteOptions);
     }
 }
コード例 #3
0
 public static void SetRetentionPolicies(IBuildDefinition definition, int succeeded, int partiallySucceeded, int failed, int stopped)
 {
     definition.RetentionPolicyList.Clear();
     definition.AddRetentionPolicy(BuildReason.ValidateShelveset, BuildStatus.Succeeded, succeeded, DeleteOptions.Details | DeleteOptions.DropLocation | DeleteOptions.Label | DeleteOptions.TestResults);
     definition.AddRetentionPolicy(BuildReason.ValidateShelveset, BuildStatus.PartiallySucceeded, partiallySucceeded, DeleteOptions.All);
     definition.AddRetentionPolicy(BuildReason.ValidateShelveset, BuildStatus.Failed, failed, DeleteOptions.All);
     definition.AddRetentionPolicy(BuildReason.ValidateShelveset, BuildStatus.Stopped, stopped, DeleteOptions.All);
     definition.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Succeeded, succeeded, DeleteOptions.Details | DeleteOptions.DropLocation | DeleteOptions.Label | DeleteOptions.TestResults);
     definition.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.PartiallySucceeded, partiallySucceeded, DeleteOptions.All);
     definition.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Failed, failed, DeleteOptions.All);
     definition.AddRetentionPolicy(BuildReason.Triggered, BuildStatus.Stopped, stopped, DeleteOptions.All);
 }
コード例 #4
0
        private static void UpdateRetentionPolicy(IBuildDefinition bd, BuildReason reason, int keep, DeleteOptions options, BuildStatus status)
        {
            var rp = bd.RetentionPolicyList.FirstOrDefault(r => r.BuildReason == reason && r.BuildStatus == status);

            if (rp == null)
            {
                bd.AddRetentionPolicy(reason, BuildStatus.Stopped, keep, options);
            }
            else
            {
                rp.NumberToKeep  = keep;
                rp.DeleteOptions = options;
            }
        }
コード例 #5
0
        private static void CopyRetentionPolicies(IBuildDefinition source, IBuildDefinition target)
        {
            target.RetentionPolicyList.Clear();

            foreach (var policy in source.RetentionPolicyList)
            {
                target.AddRetentionPolicy(
                    policy.BuildReason,
                    policy.BuildStatus,
                    policy.NumberToKeep,
                    policy.DeleteOptions
                    );
            }
        }
コード例 #6
0
        private static void CopyRetentionPolicies(IBuildDefinition source, IBuildDefinition target)
        {
            target.RetentionPolicyList.Clear();

            foreach (var policy in source.RetentionPolicyList)
            {
                target.AddRetentionPolicy(
                    policy.BuildReason,
                    policy.BuildStatus,
                    policy.NumberToKeep,
                    policy.DeleteOptions
                    );
            }
        }
コード例 #7
0
 private static void UpdateRetentionPolicy(IBuildDefinition bd, BuildReason reason, int keep, DeleteOptions options, BuildStatus status)
 {
     var rp = bd.RetentionPolicyList.FirstOrDefault(r => r.BuildReason == reason && r.BuildStatus == status);
     if (rp == null)
     {
         bd.AddRetentionPolicy(reason, BuildStatus.Stopped, keep, options);
     }
     else
     {
         rp.NumberToKeep = keep;
         rp.DeleteOptions = options;
     }
 }
コード例 #8
0
 private static void CloneRetentionPolicies(IBuildDefinition bd, IBuildDefinition newBuildDefinition)
 {
     newBuildDefinition.RetentionPolicyList.Clear();
     foreach (var retpol in bd.RetentionPolicyList)
     {
         newBuildDefinition.AddRetentionPolicy(retpol.BuildReason, retpol.BuildStatus, retpol.NumberToKeep, retpol.DeleteOptions);
     }
 }