public override void Execute()
        {
            if (string.IsNullOrWhiteSpace(ProjectName))
            {
                throw new CommandException("Please specify a project name using the parameter: --project=XYZ");
            }
            if (DeployToEnvironmentNames.Count == 0)
            {
                throw new CommandException("Please specify an environment using the parameter: --deployto=XYZ");
            }
            if (string.IsNullOrWhiteSpace(VersionNumber))
            {
                throw new CommandException("Please specify a release version using the parameter: --version=1.0.0.0");
            }

            Log.Debug("Finding project: " + ProjectName);
            var project = Session.GetProject(ProjectName);

            Log.Debug("Finding environments...");
            var environments = Session.FindEnvironments(DeployToEnvironmentNames);

            Log.Debug("Finding release: " + VersionNumber);
            var release = Session.GetRelease(project, VersionNumber);

            if (environments != null)
            {
                var linksToDeploymentTasks = Session.GetDeployments(release, environments, Force, Log);

                if (WaitForDeployment)
                {
                    deploymentWatcher.WaitForDeploymentsToFinish(Session, linksToDeploymentTasks, DeploymentTimeout, DeploymentStatusCheckSleepCycle);
                }
            }
        }
Ejemplo n.º 2
0
        public override void Execute()
        {
            if (string.IsNullOrWhiteSpace(ProjectName))
            {
                throw new CommandException("Please specify a project name using the parameter: --project=XYZ");
            }

            Log.Debug("Finding project: " + ProjectName);
            var project = Session.GetProject(ProjectName);

            Log.Debug("Finding environments...");
            var environments = Session.FindEnvironments(DeployToEnvironmentNames);

            Log.Debug("Finding steps for project...");
            var steps = Session.FindStepsForProject(project);

            Log.Debug("Getting package versions for each step...");
            var selected = new List <SelectedPackage>();

            foreach (var step in steps)
            {
                SelectedPackage version;
                if (string.IsNullOrEmpty(PackageVersionNumber))
                {
                    version = Session.GetLatestPackageForStep(step);
                }
                else
                {
                    version = Session.GetPackageForStep(step, PackageVersionNumber);
                }

                Log.DebugFormat("{0} - latest: {1}", step.Description, version.NuGetPackageVersion);
                selected.Add(version);
            }

            var versionNumber = VersionNumber;

            if (string.IsNullOrWhiteSpace(versionNumber))
            {
                versionNumber = selected.Select(p => SemanticVersion.Parse(p.NuGetPackageVersion)).OrderByDescending(v => v).First().ToString();
                Log.Warn("A --version parameter was not specified, so a version number was automatically selected based on the highest package version: " + versionNumber);
            }

            Log.Debug("Creating release: " + versionNumber);
            var release = Session.CreateRelease(project, selected, versionNumber, ReleaseNotes);

            Log.Info("Release created successfully!");

            if (environments != null)
            {
                var linksToDeploymentTasks = RequestDeployments(release, environments);

                if (WaitForDeployment)
                {
                    deploymentWatcher.WaitForDeploymentsToFinish(Session, linksToDeploymentTasks, DeploymentTimeout, DeploymentStatusCheckSleepCycle);
                }
            }
        }
Ejemplo n.º 3
0
        public override void Execute()
        {
            if (string.IsNullOrWhiteSpace(ProjectName))
            {
                throw new CommandException("Please specify a project name using the parameter: --project=XYZ");
            }

            Log.Debug("Finding project: " + ProjectName);
            var project = Session.GetProject(ProjectName);

            Log.Debug("Finding environments...");
            var environments = Session.FindEnvironments(DeployToEnvironmentNames);

            Log.Debug("Finding steps for project...");
            var steps = Session.FindStepsForProject(project);

            var plan = new ReleasePlan(steps, versionResolver);

            if (plan.UnresolvedSteps.Count > 0)
            {
                Log.Debug("Resolving NuGet package versions...");
                foreach (var unresolved in plan.UnresolvedSteps)
                {
                    Log.Debug("  - Finding latest NuGet package for step: " + unresolved.StepName);
                    unresolved.SetVersionFromLatest(Session.GetLatestPackageForStep(unresolved.Step).NuGetPackageVersion);
                }
            }

            var versionNumber = VersionNumber;

            if (string.IsNullOrWhiteSpace(versionNumber))
            {
                Log.Warn("A --version parameter was not specified, so a version number was automatically selected based on the highest package version.");
                versionNumber = plan.GetHighestVersionNumber();
            }

            Log.Info("Release plan for release:    " + versionNumber);
            Log.Info("Steps: ");
            Log.Info(plan.FormatAsTable());

            Log.Debug("Creating release...");
            var release = Session.CreateRelease(project, plan.GetSelections(), versionNumber, ReleaseNotes);

            Log.Info("Release created successfully!");

            Log.ServiceMessage("setParameter", new { name = "octo.releaseNumber", value = release.Version });

            if (environments == null || environments.Count <= 0)
            {
                return;
            }
            var linksToDeploymentTasks = Session.GetDeployments(release, environments, Force, ForcePackageDownload, Log).ToList();

            if (WaitForDeployment)
            {
                deploymentWatcher.WaitForDeploymentsToFinish(Session, linksToDeploymentTasks, DeploymentTimeout, DeploymentStatusCheckSleepCycle);
            }
        }