예제 #1
0
        private static int Redeployment(RedploymentOptions opts)
        {
            var logMessager = new OctopusLogMessages(opts.OctopusUrl);
            var notifier    = GetNotifier(opts.HideDeploymentProgress, opts.Teamcity, logMessager);

            var deploymentPlanner = new OctopusDeploymentPlanner(opts.OctopusUrl, opts.OctopusApiKey);
            var componentFilter   = GetComponentFilter(opts.ComponentFilterPath, opts.ComponentFilter);

            notifier.PrintActionMessage(string.Format("Retrieve mirror environment plans for TargetEnvironment=\"{0}\"", opts.TargetEnvironment));
            var redeployDeploymentPlans   = deploymentPlanner.GetRedeployDeploymentPlans(opts.TargetEnvironment, componentFilter);
            var environmentDeploymentPlan = redeployDeploymentPlans.EnvironmentDeploymentPlan;

            var deploymentScheduler   = new DeploymentScheduler();
            var componentGraph        = deploymentScheduler.GetComponentDeploymentGraph(environmentDeploymentPlan);
            var environmentDeployment = deploymentScheduler.GetEnvironmentDeployment(componentGraph);

            SetUpdateVariablesOnDeploymentPlan(environmentDeployment);

            notifier.PrintEnvironmentDeploy(environmentDeployment);
            SaveEnvironmentDeploy(opts.EnvironmentDeploymentPath, environmentDeployment);

            var deployers = GetDeployers(opts.TargetEnvironment, opts.UpdateVariables, opts.Deploy, opts.OctopusUrl, opts.OctopusApiKey);

            return(Deploy(notifier, logMessager, environmentDeployment, opts.MaximumParalleDeployments, deployers));
        }
        public void GetRedeployDeploymentPlans()
        {
            var octopusUrl        = ConfigurationManager.AppSettings["OctopusUrl"];
            var octopusApiKey     = ConfigurationManager.AppSettings["OctopusApiKey"];
            var deploymentPlanner = new OctopusDeploymentPlanner(octopusUrl, octopusApiKey);

            var environment = ConfigurationManager.AppSettings["EnvironmentFrom"];

            var dashboard = deploymentPlanner.GetRedeployDeploymentPlans(environment);

            var difference = JsonConvert.SerializeObject(dashboard.EnvironmentDeploymentPlan.DeploymentPlans.Where(x => x.Action != PlanAction.Skip));

            dashboard.EnvironmentDeploymentPlan.DeploymentPlans.Count.Should().BeGreaterThan(0);
        }
        public void Redeployment()
        {
            if (!CanRedeployment)
            {
                return;
            }

            IsLoadingData = true;
            Task.Factory.StartNew(() =>
            {
                try
                {
                    var deploymentPlanner = new OctopusDeploymentPlanner(_octopusUrl, _octopusApiKey);
                    var componentFilter   = new ComponentFilter
                    {
                        Expressions = ComponentFilterExpressions.Select(x => x.Text).ToList(),
                        Include     = ComponentFilterInclude
                    };
                    var redeployDeploymentPlans = deploymentPlanner.GetRedeployDeploymentPlans(_selectedRedeploymentEnvironment.Name, componentFilter);
                    EnvironmentDeploymentPlan   = redeployDeploymentPlans.EnvironmentDeploymentPlan;

                    var deploymentScheduler = new DeploymentScheduler();
                    var componentGraph      = deploymentScheduler.GetComponentDeploymentGraph(EnvironmentDeploymentPlan);
                    Graph = componentGraph.ToBidirectionalGraph();
                    EnvironmentDeployment             = deploymentScheduler.GetEnvironmentDeployment(componentGraph);
                    EnvironmentDeploymentSaveFileName = "redeploy " + _selectedRedeploymentEnvironment.Name + ".json";
                    EnvironmentToDeployTo             = _selectedRedeploymentEnvironment;
                }
                catch
                {
                    EnvironmentDeploymentPlan = new EnvironmentDeploymentPlan(new List <ComponentDeploymentPlan>());
                    Graph = null;
                    EnvironmentDeployment             = new EnvironmentDeployment(new List <ProductDeployment>());
                    EnvironmentDeploymentSaveFileName = string.Empty;
                    EnvironmentToDeployTo             = null;
                }
            }).ContinueWith(task =>
            {
                IsLoadingData = false;
            });
        }