コード例 #1
0
        public static BuildTemplate DialogShow(BuildTemplate editTemplate, IBuildDefinition buildDefinition,
                                               FormActionMode mode)
        {
            bool saveChanges;

            return(DialogShow(editTemplate, buildDefinition, mode, out saveChanges));
        }
コード例 #2
0
        public void FocusAndSelectBuildTemplate(BuildTemplate buildTemplate)
        {
            EnsureSelectedTeamProject(buildTemplate.TeamProject, false);
            ButtonClick(this.btnBuildDefinitions, EventArgs.Empty);

            this.controlDefinitions.FocusAndSelectBuildTemplate(buildTemplate);
        }
コード例 #3
0
        public void TestingFullSetup()
        {
            var template = new BuildTemplate
            {
                BuildId            = "bt1",
                BuildName          = "Build1",
                BuildCount         = 15,
                BuildNumberPattern = "1.{0}",
                StartBuildNumber   = 2,
                FinishBuildNumber  = 4,
                StartBuildPackages = new Dictionary <string, string> {
                    { "Package1", "1.0" }, { "Package2", "1.0" }
                },
                FinishBuildPackages = new Dictionary <string, string> {
                    { "Package1", "1.1" }, { "Package2", "1.0" }
                },
                IssueCount        = 5,
                NestedIssueDepth  = 1,
                NestedIssueChance = 80,
                CreateNuGetPackageChangeManifests = true
            };

            var resolver = TestHelpers.CreateMockedAggregateBuildDeltaResolver(new[] { template });
            var result   = resolver.CreateChangeManifestFromBuildTypeId("bt1", null, "1.2", "1.4", false, true);

            //Assert
            Assert.AreEqual(2, result.ChangeDetails.Count);
            Assert.AreEqual(2, result.NuGetPackageChanges.Count);
        }
コード例 #4
0
    void FormatReportGUI(BuildTemplate template, BuildReport report)
    {
        var summary = report.summary;

        if (template != null)
        {
            GUILayout.Label($"{(template.Name == string.Empty? template.name : template.Name)} {(template.Category == string.Empty?"":$"({template.Category})")}", Styles.boldLabelLarge);
        }
コード例 #5
0
        public static BuildTemplate CreateAssetAtPath(string path)
        {
            BuildTemplate asset = ScriptableObject.CreateInstance <BuildTemplate>();

            asset.name = Path.GetFileName(path);
            AssetDatabase.CreateAsset(asset, path);
            return(asset);
        }
コード例 #6
0
        public void FocusAndSelectBuildTemplate(BuildTemplate buildTemplate)
        {
            this.lvBuildTemplates.SelectedItems.Clear();

            SelectBuildTemplates(new List <BuildTemplate> {
                buildTemplate
            });
        }
コード例 #7
0
    void MenuSetProfile(object o)
    {
        CurrentProfile = (BuildProfile)o;
        if (CurrentTemplate != null && !CurrentTemplate.name.EndsWith("*"))
        {
            CurrentTemplate       = Instantiate <BuildTemplate>(CurrentTemplate) as BuildTemplate;
            CurrentTemplate.name += "*";
        }

        CurrentTemplate.Profile = CurrentProfile;
    }
コード例 #8
0
    void MenuSetSceneList(object o)
    {
        CurrentSceneList = (SceneList)o;
        if (CurrentTemplate != null && !CurrentTemplate.name.EndsWith("*"))
        {
            CurrentTemplate       = Instantiate <BuildTemplate>(CurrentTemplate) as BuildTemplate;
            CurrentTemplate.name += "*";
        }

        CurrentTemplate.SceneList = CurrentSceneList;
    }
コード例 #9
0
        public void Execute(ServiceObject service)
        {
            BuildTemplate.CreateProxyClass(service);

            var projectPath = String.Format("{0}/{1}.csproj", service.Path, service.Name);

            BuildTemplate.Restore(@"\Modules\Build\Resource\nuget.exe", projectPath);

            BuildTemplate.Build(projectPath, service.MsBuildPath);

            BuildSite.Create(service.Name, service.Port, service.IISPath);

            var binWebSitePath = String.Format("{0}/{1}", service.IISPath, service.Name);

            BuildTemplate.MoveBin(service.Path, binWebSitePath);
        }
コード例 #10
0
        public static BuildTemplate DialogShow(BuildTemplate editTemplate, IBuildDefinition buildDefinition,
                                               FormActionMode mode, out bool saveChanges)
        {
            if (form == null)
            {
                form = new FormBuildTemplateEdit();
            }

            if (mode == FormActionMode.New)
            {
                editTemplate = new BuildTemplate(buildDefinition);
            }
            else
            {
                editTemplate = editTemplate.Clone();
            }

            form.editTemplate    = editTemplate;
            form.buildDefinition = buildDefinition;
            form.mode            = mode;
            form.Initialize();

            BuildTemplate result = null;

            saveChanges = false;

            if (form.ShowDialog() == DialogResult.OK)
            {
                editTemplate.TemplateName        = form.edName.Text;
                editTemplate.Description         = form.edDescription.Text;
                editTemplate.TeamProject         = form.cmbTeamProject.SelectedItem as string;
                editTemplate.DefinitionName      = form.SelectedDefinitionName;
                editTemplate.BuildControllerName = form.SelectedBuildController;
                editTemplate.BuildControllerUri  = form.SelectedBuildControllerUri;
                editTemplate.DefaultDropLocation = form.edDropFolder.Text;
                editTemplate.RunPriority         =
                    (QueuePriority)Enum.Parse(typeof(QueuePriority), form.cmbPriority.SelectedItem as string, true);
                editTemplate.CommandLineArguments = form.edCmdArgs.Text;
                editTemplate.Postponed            = form.chPostponed.Checked;

                result      = editTemplate;
                saveChanges = form.chSaveChanges.Checked;
            }

            return(result);
        }
コード例 #11
0
    void PopulateAssets()
    {
        var buildTemplates = AssetDatabase.FindAssets("t:BuildTemplate");
        var buildProfiles  = AssetDatabase.FindAssets("t:BuildProfile");
        var sceneLists     = AssetDatabase.FindAssets("t:SceneList");

        m_BuildTemplates = new Dictionary <string, List <BuildTemplate> >();
        m_BuildProfiles  = new List <BuildProfile>();
        m_SceneLists     = new List <SceneList>();

        TemplateMenu = new GenericMenu();
        foreach (var templateGUID in buildTemplates)
        {
            string        templatePath = AssetDatabase.GUIDToAssetPath(templateGUID);
            BuildTemplate template     = (BuildTemplate)AssetDatabase.LoadAssetAtPath(templatePath, typeof(BuildTemplate));
            if (!m_BuildTemplates.ContainsKey(template.Category))
            {
                m_BuildTemplates.Add(template.Category, new List <BuildTemplate>());
            }

            m_BuildTemplates[template.Category].Add(template);

            TemplateMenu.AddItem(new GUIContent(template.MenuEntry), false, MenuSetTemplate, template);
        }

        ProfileMenu = new GenericMenu();
        foreach (var profileGUID in buildProfiles)
        {
            string       profilePath = AssetDatabase.GUIDToAssetPath(profileGUID);
            BuildProfile profile     = (BuildProfile)AssetDatabase.LoadAssetAtPath(profilePath, typeof(BuildProfile));
            m_BuildProfiles.Add(profile);
            ProfileMenu.AddItem(new GUIContent(profile.MenuEntry), false, MenuSetProfile, profile);
        }

        SceneListMenu = new GenericMenu();
        foreach (var sceneListGUID in sceneLists)
        {
            string    sceneListPath = AssetDatabase.GUIDToAssetPath(sceneListGUID);
            SceneList sceneList     = (SceneList)AssetDatabase.LoadAssetAtPath(sceneListPath, typeof(SceneList));
            m_SceneLists.Add(sceneList);
            SceneListMenu.AddItem(new GUIContent(sceneList.MenuEntry), false, MenuSetSceneList, sceneList);
        }
    }
コード例 #12
0
        private void mniCreateBuildTemplate_Click(object sender, EventArgs e)
        {
            if (Context.BuildTemplates == null)
            {
                MessageBox.Show(
                    "Use 'Open Templates' or 'New Templates' to setup storage for team build templates first.",
                    "Team build templates", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            var definition = (IBuildDefinition)this.lvDefinitions.SelectedItems[0].Tag;

            BuildTemplate buildTemplate = FormBuildTemplateEdit.DialogShow(null, definition, FormActionMode.New);

            if (buildTemplate != null)
            {
                Context.BuildTemplates.Templates.Add(buildTemplate);
                Context.BuildTemplates.SaveToFile(Context.BuildTemplates.Filename);
                PopulateBuildTemplates(true);
                SelectBuildTemplate(buildTemplate);
            }
        }
コード例 #13
0
        private void mniChangeDefaultDropLocation_Click(object sender, EventArgs e)
        {
            if (lvBuildTemplates.SelectedIndices.Count == 0)
            {
                return;
            }

            BuildTemplate buildTemplate = lvBuildTemplates.SelectedItems[0].Tag as BuildTemplate;

            string newValue = buildTemplate.DefaultDropLocation;

            if (FormEditBox.DialogShow("Change Default Drop Location", "Enter new default drop location", "Ok", null,
                                       true, true, ref newValue) == DialogResult.OK)
            {
                var buildTemplates = this.lvBuildTemplates.SelectedItems.ToCollection(o => (o as ListViewItem).Tag as BuildTemplate);

                MakeMultipleChangesOnBuildTemplates(buildTemplates, true,
                                                    delegate(BuildTemplate template)
                {
                    template.DefaultDropLocation = newValue;
                });
            }
        }
コード例 #14
0
        private void mniQueueMultiBuildTemplate_Click(object sender, EventArgs e)
        {
            Dictionary <string, BuildTemplate> buildTemplates = new Dictionary <string, BuildTemplate>();
            List <string> buildTemplateNames = new List <string>();

            foreach (ListViewItem item in this.lvBuildTemplates.SelectedItems)
            {
                BuildTemplate buildTemplate = item.Tag as BuildTemplate;
                string        name          = string.Format("{0} ({1})", buildTemplate.TemplateName, buildTemplate.TeamProject);
                buildTemplates.Add(name, buildTemplate);
                buildTemplateNames.Add(name);
            }

            if (FormCheckedList.DialogShow("Queue Multiple Team Build Templates",
                                           "Select which team build templates will be queued at once:", buildTemplateNames, true))
            {
                foreach (string itemName in buildTemplateNames)
                {
                    BuildTemplate buildTemplate = buildTemplates[itemName];
                    QueueBuildTemplate(buildTemplate, true);
                }
            }
        }
コード例 #15
0
 void MenuSetTemplate(object o)
 {
     CurrentTemplate  = (BuildTemplate)o;
     CurrentProfile   = CurrentTemplate.Profile;
     CurrentSceneList = CurrentTemplate.SceneList;
 }
コード例 #16
0
    private void OnGUI()
    {
        System.Action nextAction = null;

        using (new GUILayout.HorizontalScope(GUILayout.Height(88)))
        {
            var rect = GUILayoutUtility.GetRect(88, 88, Styles.Icon, GUILayout.Width(88));
            GUI.DrawTexture(rect, Contents.icon);
            using (new GUILayout.VerticalScope())
            {
                GUILayout.Space(8);
                GUILayout.Label(Contents.title, Styles.Title);
                GUILayout.FlexibleSpace();
                DrawProgressBar();
                GUILayout.Space(8);
            }
            GUILayout.Space(8);

            using (new GUILayout.VerticalScope(GUILayout.Width(116)))
            {
                GUILayout.Space(8);
                if (GUILayout.Button("Build All", Styles.BuildButton, GUILayout.Height(32)))
                {
                    // Run Build
                    nextAction = DoAllBuild;
                }

                BuildTemplate template = (Selection.activeObject as BuildTemplate);
                GUILayout.Space(2);
                using (new GUILayout.HorizontalScope())
                {
                    EditorGUI.BeginDisabledGroup(template == null);
                    if (GUILayout.Button("Build Selected", Styles.MiniButtonLeft))
                    {
                        nextAction = () =>
                        {
                            var report = template.DoBuild();
                            if (report != null)
                            {
                                Reports[template] = report;
                            }

                            m_SelectedReport = report;
                            Repaint();
                        };
                    }
                    if (GUILayout.Button("+ Run", Styles.MiniButtonRight, GUILayout.Width(48)))
                    {
                        nextAction = () =>
                        {
                            var report = template.DoBuild(true);
                            if (report != null)
                            {
                                Reports[template] = report;
                            }

                            m_SelectedReport = report;
                            Repaint();
                        };
                    }
                }

                EditorGUI.EndDisabledGroup();

                EditorGUI.BeginDisabledGroup(template == null || !template.canRunBuild);
                if (GUILayout.Button("Run Last Build", Styles.MiniButton))
                {
                    nextAction = () =>
                    {
                        template.RunBuild();
                        EditorUtility.ClearProgressBar();
                        Repaint();
                    };
                }
                EditorGUI.EndDisabledGroup();
            }
            GUILayout.Space(8);
        }

        using (new GUILayout.HorizontalScope(EditorStyles.toolbar))
        {
            if (GUILayout.Button("Refresh", EditorStyles.toolbarButton))
            {
                PopulateAssets();
            }
            GUILayout.FlexibleSpace();
        }

        using (new GUILayout.HorizontalScope())
        {
            DrawTemplateList();
            DrawReport();
        }

        if (nextAction != null)
        {
            var selected = Selection.activeObject;
            nextAction.Invoke();
            Selection.activeObject = selected;
        }
    }
コード例 #17
0
 public NavigateToTeamBuildDefinitionHandler(BuildTemplate buildTemplate)
 {
     this.buildTemplate = buildTemplate;
 }
コード例 #18
0
 private void QueueBuildTemplate(BuildTemplate buildTemplate)
 {
     QueueBuildTemplate(buildTemplate, false);
 }
コード例 #19
0
        private void QueueBuildTemplate(BuildTemplate buildTemplate, bool queueingMultiple)
        {
            IBuildDefinition buildDefinition = Context.BuildServer.GetBuildDefinition(buildTemplate.TeamProject,
                                                                                      buildTemplate.DefinitionName);

            bool         started     = buildDefinition != null;
            string       exc_msg     = "-";
            IQueuedBuild queuedBuild = null;

            if (started)
            {
                try
                {
                    IBuildRequest request = buildDefinition.CreateBuildRequest();
                    //IBuildAgent buildAgent = Context.BuildServer.GetBuildAgent(new Uri(buildTemplate.BuildControllerUri));
                    IBuildController buildController = Context.BuildServer.GetBuildController(buildTemplate.BuildControllerName);

                    /*request.BuildAgent = buildAgent;
                     * request.CommandLineArguments = buildTemplate.CommandLineArguments;*/
                    request.BuildController = buildController;

                    BuildProcessParameters buildProcessParameters = buildDefinition.GetBuildProcessParameters();
                    buildProcessParameters.MSBuildArguments = buildTemplate.CommandLineArguments;

                    request.ProcessParameters = buildProcessParameters.SaveToXml();
                    request.DropLocation      = buildTemplate.DefaultDropLocation;
                    request.Postponed         = buildTemplate.Postponed;
                    request.Priority          = buildTemplate.RunPriority;
                    request.RequestedFor      = Context.LoggedUser;

                    queuedBuild = Context.BuildServer.QueueBuild(request);

                    if (!queueingMultiple)
                    {
                        started = queuedBuild.WaitForBuildStart(10000, 10000);
                    }
                }
                catch (Exception e)
                {
                    exc_msg = e.Message;
                }
            }

            if (!queueingMultiple)
            {
                string message = started
                    ? string.Format("Team build template '{0}' started successfully", buildTemplate.TemplateName)
                    : string.Format("Team build template '{0}' failed to start, message: {1}", buildTemplate.TemplateName, exc_msg);

                ToolTipIcon icon    = started ? ToolTipIcon.Info : ToolTipIcon.Warning;
                string      caption = string.Format("Queue team build template '{0}'", buildTemplate.TemplateName);

                UIContext.Instance.ShowTrayTooltip(caption, message, icon, new NavigateToTeamBuildDefinitionHandler(buildTemplate));

                //MessageBox.Show(message, string.Format("Queue team build template '{0}'", buildTemplate.TemplateName), MessageBoxButtons.OK, icon););

                if (started && queuedBuild != null)
                {
                    //this.parentControl.FocusAndSelectTeamBuild(queuedBuild);
                    UIContext.Instance.ControlTeamBuilds.FocusAndSelectTeamBuild(queuedBuild);
                }
            }
        }
コード例 #20
0
        public override void Action(int instanceId, string pathName, string resourceFile)
        {
            BuildTemplate asset = BuildTemplateAssetFactory.CreateAssetAtPath(pathName);

            ProjectWindowUtil.ShowCreatedAsset(asset);
        }
コード例 #21
0
 private void SelectBuildTemplate(BuildTemplate buildTemplate)
 {
     SelectBuildTemplates(new List <BuildTemplate> {
         buildTemplate
     });
 }