예제 #1
0
 protected virtual IConfiguration GetSampleConfig()
 {
     return(new Configuration
     {
         ApiKey = languageProvider.GetString(LanguageSection.ConfigurationStrings, "SampleApiKey"),
         ChannelSeedProjectName = languageProvider.GetString(LanguageSection.ConfigurationStrings, "SampleChannelSeedAppName"),
         OctopusUrl = languageProvider.GetString(LanguageSection.ConfigurationStrings, "SampleOctopusUrl"),
         ProjectGroupFilterString = languageProvider.GetString(LanguageSection.ConfigurationStrings, "SampleProjectGroupFilterString"),
         DefaultChannel = "master"
     });
 }
예제 #2
0
 public void AddRow(bool selected, bool selectable = true, params string[] values)
 {
     if (values.Count() != _columns.Count())
     {
         throw new Exception(String.Format(_languageProvider.GetString(LanguageSection.UiStrings, "ErrorColumnHeadingMismatch"), values.Count(), _columns.Count()));
     }
     _rows.Add(values);
     if (selected && selectable)
     {
         _selected.Add(_rows.Count() - 1);
     }
     if (!selectable)
     {
         _unselectable.Add(_rows.Count() - 1);
     }
 }
        /// <summary>
        /// Gets the string.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <returns>Localized string if found; otherwise the requested name.</returns>
        public static string GetString(string name)
        {
            var providers = _providers;

            foreach (var provider in providers)
            {
                var str = provider.GetString(name);
                if (str != null)
                {
                    return(str);
                }
            }

            return(_default.GetString(name) ?? name);
        }
예제 #4
0
 private static void ShowNewVersionMessage(VersionCheckResult checkResult, ILanguageProvider languageProvider)
 {
     System.Console.WriteLine("-------------------------------------");
     System.Console.WriteLine(languageProvider.GetString(LanguageSection.UiStrings, "NewVersionAvailable"));
     System.Console.WriteLine(string.Format(languageProvider.GetString(LanguageSection.UiStrings, "CurrentVersion"), checkResult.Release.CurrentVersion));
     System.Console.WriteLine(string.Format(languageProvider.GetString(LanguageSection.UiStrings, "NewVersion"), checkResult.Release.TagName));
     if (checkResult.Release.Assets != null && checkResult.Release.Assets.Any())
     {
         foreach (var asset in checkResult.Release.Assets)
         {
             System.Console.WriteLine(string.Format(languageProvider.GetString(LanguageSection.UiStrings, "DownloadAvailableHere"), asset.Name, asset.DownloadUrl));
         }
     }
     else
     {
         System.Console.WriteLine(string.Format(languageProvider.GetString(LanguageSection.UiStrings, "UpdateAvailableHere"), checkResult.Release.Url));
     }
     if (!string.IsNullOrEmpty(checkResult.Release.ChangeLog))
     {
         System.Console.WriteLine(languageProvider.GetString(LanguageSection.UiStrings, "ChangeLog"));
         System.Console.WriteLine(checkResult.Release.ChangeLog);
     }
     System.Console.WriteLine("-------------------------------------");
 }
예제 #5
0
        public async Task StartJob(string pathToProfile, string message, string releaseVersion,
                                   bool forceDeploymentIfSamePackage)
        {
            if (!File.Exists(pathToProfile))
            {
                this.WriteLine("Couldn't find file at " + pathToProfile);
                return;
            }
            try
            {
                var job =
                    StandardSerialiser.DeserializeFromJsonNet <EnvironmentDeployment>(File.ReadAllText(pathToProfile));

                var projects = new List <ProjectDeployment>();

                foreach (var project in job.ProjectDeployments)
                {
                    var octoProject =
                        await
                        this.helper.GetProject(project.ProjectId, job.EnvironmentId,
                                               project.ChannelVersionRange, project.ChannelVersionTag);

                    var packages =
                        await this.helper.GetPackages(octoProject.ProjectId, project.ChannelVersionRange, project.ChannelVersionTag);

                    IList <PackageStep> defaultPackages = null;
                    foreach (var package in project.Packages)
                    {
                        if (package.PackageId == "latest")
                        {
                            // Filter to packages specifically for this package step, then update the package versions
                            var availablePackages = packages.Where(pack => pack.StepId == package.StepId);

                            // If there are no packages for this step, check if we've been asked to jump back to default channel.
                            if ((!availablePackages.Any() || availablePackages.First().SelectedPackage == null) && job.FallbackToDefaultChannel && !string.IsNullOrEmpty(configuration.DefaultChannel))
                            {
                                if (defaultPackages == null)
                                {
                                    var defaultChannel = await this.helper.GetChannelByName(project.ProjectId, configuration.DefaultChannel);

                                    defaultPackages = await this.helper.GetPackages(project.ProjectId, defaultChannel.VersionRange, defaultChannel.VersionTag);

                                    //  We're now using the default channel, so update the project release to have the correct channel info for the deployment.
                                    project.ChannelId           = defaultChannel.Id;
                                    project.ChannelName         = defaultChannel.Name;
                                    project.ChannelVersionRange = defaultChannel.VersionRange;
                                    project.ChannelVersionTag   = defaultChannel.VersionTag;
                                }
                                availablePackages = defaultPackages.Where(pack => pack.StepId == package.StepId);
                            }

                            var selectedPackage = availablePackages.First().SelectedPackage;

                            if (selectedPackage != null)
                            {
                                package.PackageId   = selectedPackage.Id;
                                package.PackageName = selectedPackage.Version;
                                package.StepName    = selectedPackage.StepName;
                            }
                            else
                            {
                                System.Console.Out.WriteLine(string.Format(languageProvider.GetString(LanguageSection.UiStrings, "NoSuitablePackageFound"), package.StepName, project.ProjectName));
                                continue;
                            }
                        }
                    }
                    if (!forceDeploymentIfSamePackage)
                    {
                        if (!await IsDeploymentRequired(job, project))
                        {
                            continue;
                        }
                    }
                    if (!string.IsNullOrEmpty(message))
                    {
                        project.ReleaseMessage = message;
                    }
                    if (!string.IsNullOrEmpty(releaseVersion))
                    {
                        project.ReleaseVersion = releaseVersion;
                    }
                    projects.Add(project);
                }

                job.ProjectDeployments = projects;

                await this.deployer.StartJob(job, this, true);
            }
            catch (Exception e)
            {
                this.WriteLine("Couldn't deploy! " + e.Message + e.StackTrace);
            }
        }