Beispiel #1
0
        public static DeploymentResource PromoteRelease(string projectName, string releaseVersion,
                                                        SingleReleasePromotingSettings settings)
        {
            var project   = new OctoProject(projectName);
            var sourceEnv = WebClient.GetWebClientRef().GetEnvironmentByName(settings.SourceEnvironmentName);

            settings.Release = releaseVersion is null ? null : project.GetReleaseByVersion(releaseVersion);
            return(PromoteRelease(project, sourceEnv, settings));
        }
Beispiel #2
0
        public static DeploymentResource PromoteRelease(string projectName, string sourceEnvName, string targetEnvName,
                                                        string releaseVersion = null)
        {
            var settings = new SingleReleasePromotingSettings()
            {
                SourceEnvironmentName = sourceEnvName,
                TargetEnvironmentName = targetEnvName,
                WaitingForFinish      = true
            };

            return(PromoteRelease(projectName, releaseVersion, settings));
        }
Beispiel #3
0
 /// <summary>
 /// Promote Release from one environment to another. If the releaseVersion is not specified.
 /// The release has the latest deployment at sourceEnv will be chosen to deploy to the targetEnv.
 /// Skip creating the deployment if there is no release at the input Env
 /// </summary>
 /// <param name="project"></param>
 /// <param name="sourceEnv"></param>
 /// <param name="settings"></param>
 /// <returns></returns>
 public static DeploymentResource PromoteRelease(OctoProject project, EnvironmentResource sourceEnv,
                                                 SingleReleasePromotingSettings settings)
 {
     if (settings.Release == null)
     {
         var releaseRepo  = WebClient.GetWebClientRef().GetReleaseRepo();
         var sourceDeploy = project.GetDeployment(sourceEnv);
         settings.Release = sourceDeploy == null ? null : releaseRepo.Get(sourceDeploy.ReleaseId);
     }
     return(settings.Release == null ? null : CreateDeployment(project, settings.Release,
                                                               new SingleProjectDeploymentSettings(settings)));
 }
Beispiel #4
0
        public void PromoteProjects()
        {
            var projects = Configs.Property("ProjectsToDeploy");

            if (projects == null)
            {
                return;
            }
            Console.WriteLine("Start to deploy projects");
            foreach (var g in projects.Value)
            {
                var name = g["Name"];

                if (name is null)
                {
                    continue;
                }

                var time     = g["DeployAt"];
                var settings = new SingleReleasePromotingSettings()
                {
                    SourceEnvironmentName = SourceEnvironmentName,

                    TargetEnvironmentName = TargetEnvironmentName,

                    SpecificMachineNames = g["SpecificMachineNames"]?.ToObject <string[]>() ?? new string[0],

                    SkipSteps = g["SkipSteps"]?.ToObject <string[]>() ?? new string[0],

                    WaitingForFinish = g["WaitingForFinish"]?.ToObject <bool>() ?? false,

                    UpdateVariableSetNow = g["UpdateVariableSetNow"]?.ToObject <bool>() ?? false,

                    Force = g["Force"]?.ToObject <bool>() ?? false,

                    DeployAt = time == null ? DateTime.Now  : DateTime.Parse(time.ToString())
                };
                Deployments.PromoteRelease(name.ToString(), settings);
            }
        }
Beispiel #5
0
 public static DeploymentResource PromoteRelease(string projectName, SingleReleasePromotingSettings settings)
 {
     return(PromoteRelease(projectName, null, settings));
 }