public override void Write(CustomFileWriter writer)
        {
            if (VariableGroups.Length > 0)
            {
                using (writer.WriteBlock("variables:"))
                {
                    VariableGroups.ForEach(x => writer.WriteLine($"- group: {x}"));
                    writer.WriteLine();
                }
            }

            if (VcsPushTrigger != null)
            {
                using (writer.WriteBlock("trigger:"))
                {
                    VcsPushTrigger.Write(writer);
                    writer.WriteLine();
                }
            }

            using (writer.WriteBlock("stages:"))
            {
                Stages.ForEach(x => x.Write(writer));
            }
        }
示例#2
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine("#");
            if (Parameters.Length > 0)
            {
                using (writer.WriteBlock("parameters:"))
                {
                    foreach (var item in Parameters)
                    {
                        item.Write(writer);
                    }
                }
            }

            using (writer.WriteBlock("steps:"))
            {
#pragma warning disable CA1308
                var parameters = Parameters
                                 .Select(z => $"--{z.Name.ToLowerInvariant()} '${{{{ parameters.{z.Name} }}}}'")
                                 .ToArray()
                                 .JoinSpace();
#pragma warning restore CA1308

                foreach (var step in Steps)
                {
                    step.Write(writer, parameters);
                }
            }
        }
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"{Name}:");

            using (writer.Indent())
            {
                writer.WriteLine($"strategy:");
                using (writer.Indent())
                {
                    writer.WriteLine($"fail-fast: false");
                    writer.WriteLine($"matrix:");

                    using (writer.Indent())
                    {
                        var images = string.Join(", ", Images.Select(image => image.GetValue().Replace(".", "_")));
                        writer.WriteLine($"os: [{images}]");
                    }
                }

                writer.WriteLine($"runs-on: ${{{{ matrix.os }}}}");
                writer.WriteLine("steps:");
                using (writer.Indent())
                {
                    foreach (var step in Steps)
                    {
                        step.Write(writer);
                    }
                }
            }
        }
示例#4
0
 public override void Write(CustomFileWriter writer)
 {
     using (writer.WriteBlock($"artifacts({BuildType.Id})"))
     {
         writer.WriteArray("artifactRules", ArtifactRules);
     }
 }
示例#5
0
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock("project"))
            {
                if (Description != null)
                {
                    writer.WriteLine($"description = {Description}");
                }

                foreach (var buildType in BuildTypes)
                {
                    writer.WriteLine($"buildType({buildType.Id})");
                }
                writer.WriteLine();

                writer.WriteLine($"buildTypesOrder = arrayListOf({BuildTypes.Select(x => x.Id).JoinCommaSpace()})");
                writer.WriteLine();

                if (Parameters.Any())
                {
                    using (writer.WriteBlock("params"))
                    {
                        foreach (var parameter in Parameters)
                        {
                            parameter.Write(writer);
                        }
                    }
                }
            }
        }
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock("- checkout: self"))
            {
                if (IncludeLargeFileStorage.HasValue)
                {
                    writer.WriteLine($"lfs: {IncludeLargeFileStorage.Value}".ToLower());
                }

                if (InclueSubmodules.HasValue)
                {
                    writer.WriteLine($"submodules: {InclueSubmodules.Value}".ToLower());
                }

                if (FetchDepth.HasValue)
                {
                    writer.WriteLine($"fetchDepth: {FetchDepth.Value}");
                }

                if (Clean.HasValue)
                {
                    writer.WriteLine($"clean: {Clean.Value}".ToLower());
                }
            }
        }
示例#7
0
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock($"- job: {Name}"))
            {
                writer.WriteLine($"displayName: {DisplayName.SingleQuote()}");
                writer.WriteLine($"dependsOn: [ {Dependencies.Select(x => x.Name).JoinCommaSpace()} ]");

                if (Image != null)
                {
                    using (writer.WriteBlock("pool:"))
                    {
                        writer.WriteLine($"vmImage: {Image.Value.GetValue().SingleQuote().SingleQuote()}");
                    }
                }

                if (Parallel > 1)
                {
                    using (writer.WriteBlock("strategy:"))
                    {
                        writer.WriteLine($"parallel: {Parallel}");
                    }
                }

                using (writer.WriteBlock("steps:"))
                {
                    Steps.ForEach(x => x.Write(writer));
                }
            }
        }
示例#8
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"name: {Name}");
            writer.WriteLine();

            if (ShortTriggers.Length > 0)
            {
                writer.WriteLine($"on: [{ShortTriggers.Select(x => x.GetValue().ToLowerInvariant()).JoinComma()}]");
            }
            else
            {
                writer.WriteLine("on:");
                using (writer.Indent())
                {
                    DetailedTriggers.ForEach(x => x.Write(writer));
                }
            }

            writer.WriteLine();

            writer.WriteLine("jobs:");
            using (writer.Indent())
            {
                Jobs.ForEach(x => x.Write(writer));
            }
        }
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock($"stage('{Name}')"))
            {
                Agent.Write(writer);

                using (writer.WriteBlock($"steps"))
                {
                    Unstashes?.ForEach(s => s.Write(writer));

                    if (IsCheckoutScm)
                    {
                        writer.WriteLine($"checkout scm");
                    }

                    if (!string.IsNullOrWhiteSpace(InvokedTarget))
                    {
                        if (Agent.AgentPlatform == JenkinsAgentPlatform.Unix)
                        {
                            writer.WriteLine($"sh 'sh ./build.sh --target {InvokedTarget} --skip'");
                        }
                        else if (Agent.AgentPlatform == JenkinsAgentPlatform.Windows)
                        {
                            writer.WriteLine($"bat './build.cmd --target {InvokedTarget} --skip'");
                        }
                    }

                    Stashes?.ForEach(s => s.Write(writer));
                }
            }
        }
示例#10
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"object {Id} : GitVcsRoot({{");
            using (writer.Indent())
            {
                writer.WriteLine($"name = {Name.DoubleQuote()}");
                writer.WriteLine($"url = {Url.DoubleQuote()}");
                writer.WriteLine($"branch = {Branch.DoubleQuote()}");
                writer.WriteLine($"pollInterval = {PollInterval}");
                if (BranchSpec != null)
                {
                    writer.WriteLine("branchSpec = \"\"\"");
                    using (writer.Indent())
                    {
                        foreach (var branchSpec in BranchSpec)
                        {
                            writer.WriteLine(branchSpec);
                        }
                    }

                    writer.WriteLine("\"\"\".trimIndent()");
                }
            }

            writer.WriteLine("})");
        }
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"{Type.ToString().ToLowerInvariant()} (");
            using (writer.Indent())
            {
                writer.WriteLine($"{("env." + Name).DoubleQuote()},");
                writer.WriteLine($"label = {Name.DoubleQuote()},");

                if (Description != null)
                {
                    writer.WriteLine($"description = {Description.DoubleQuote()},");
                }

                writer.WriteLine($"value = {DefaultValue.DoubleQuote()},");

                if (AllowMultiple)
                {
                    writer.WriteLine("allowMultiple = true,");
                    writer.WriteLine($"valueSeparator = {ValueSeparator.DoubleQuote()},");
                }

                if (Options != null)
                {
                    var mappings = Options.Select(x => $"{x.Key.DoubleQuote()} to {x.Value.ToString().DoubleQuote()}");
                    writer.WriteLine($"options = listOf({mappings.JoinComma()}),");
                }

                if (Options == null)
                {
                    writer.WriteLine($"allowEmpty = {(Display != TeamCityParameterDisplay.Prompt).ToString().ToLowerInvariant()},");
                }

                writer.WriteLine($"display = ParameterDisplay.{Display.ToString().ToUpperInvariant()})");
            }
        }
示例#12
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"object {Id} : BuildType({{");
            using (writer.Indent())
            {
                writer.WriteLine($"name = {Name.DoubleQuote()}");

                if (Description != null)
                {
                    writer.WriteLine($"description = {Description.DoubleQuote()}");
                }

                if (IsComposite)
                {
                    writer.WriteLine("type = Type.COMPOSITE");
                }

                VcsRoot.Write(writer);
                WriteArtifacts(writer);

                if (!IsComposite)
                {
                    WriteSteps(writer);
                }

                WriteParameters(writer);
                WriteTriggers(writer);
                WriteDependencies(writer);
            }

            writer.WriteLine("})");
        }
示例#13
0
 public override void Write(CustomFileWriter writer)
 {
     using (writer.WriteBlock("finishBuildTrigger"))
     {
         writer.WriteLine($"buildType = {$"${{{BuildType.Id}.id}}".DoubleQuote()}");
     }
 }
示例#14
0
        public static void CreateGanttChartForRessource(JobInProgress jobInProgress, IJobQueue scopeQueue, Agent agent)
        {
            List <GanttChartItem> ganttData = new List <GanttChartItem>();

            if (jobInProgress.IsSet)
            {
                ganttData.AddRange(CreateGanttProcessingQueueLog(new[] { jobInProgress.GanttItem }, true, "Processing", jobInProgress, agent));
                // add from scope
            }
            ganttData.AddRange(CreateGanttProcessingQueueLog(jobInProgress.GanttItems.ToArray(), false, "ReadyElement", jobInProgress, agent));

            var jobs = scopeQueue.GetAllJobs().OrderBy(x => x.Job.Priority(agent.CurrentTime)).ToList();

            ganttData.AddRange(CreateGanttProcessingQueueLog(jobs.ToArray(), false, "ScopeQueue", jobInProgress, agent));

            CustomFileWriter.WriteToFile($"Logs//ResourceScheduleAt-{agent.CurrentTime}.log",
                                         JsonConvert.SerializeObject(ganttData).Replace("[", "").Replace("]", ","));


            if (jobs.Count > 0)
            {
                if (jobs.First().ScopeConfirmation.GetScopeStart() < jobInProgress.ResourceIsBusyUntil)
                {
                    agent.DebugMessage("Seems wrong");
                }
            }
        }
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine(Kind.GetValue() + ":");

            using (writer.Indent())
            {
                if (Branches.Length > 0)
                {
                    writer.WriteLine("branches:");
                    using (writer.Indent())
                    {
                        Branches.ForEach(x => writer.WriteLine($"- {x}"));
                    }
                }

                if (Tags.Length > 0)
                {
                    writer.WriteLine("tags:");
                    using (writer.Indent())
                    {
                        Tags.ForEach(x => writer.WriteLine($"- {x}"));
                    }
                }

                if (IncludePaths.Length > 0 || ExcludePaths.Length > 0)
                {
                    writer.WriteLine("paths:");
                    using (writer.Indent())
                    {
                        IncludePaths.ForEach(x => writer.WriteLine($"- {x}"));
                        ExcludePaths.ForEach(x => writer.WriteLine($"- !{x}"));
                    }
                }
            }
        }
示例#16
0
 public override void Write(CustomFileWriter writer)
 {
     // WithProperties(x => x.Underscore().Dasherize().ToLowerInvariant());
     if (!string.IsNullOrWhiteSpace(DotNetVersion))
     {
         With.Add("dotnet-version", DotNetVersion);
     }
     if (!string.IsNullOrWhiteSpace(SourceUrl))
     {
         With.Add("source-url", SourceUrl);
     }
     if (!string.IsNullOrWhiteSpace(Owner))
     {
         With.Add("owner", Owner);
     }
     if (!string.IsNullOrWhiteSpace(SourceUrl))
     {
         NuGetAuthToken = string.IsNullOrWhiteSpace(NuGetAuthToken) ? "${{ secrets.GITHUB_TOKEN }}" : NuGetAuthToken;
     }
     if (!string.IsNullOrWhiteSpace(NuGetAuthToken))
     {
         Environment.Add("NUGET_AUTH_TOKEN", NuGetAuthToken);
     }
     base.Write(writer);
 }
示例#17
0
        public override void Write(CustomFileWriter writer)
        {
            var variableGroups = VariableGroups;

            if (variableGroups.Length > 0)
            {
                VariableGroups = Array.Empty <string>();
            }

            using (writer.WriteBlock("variables:"))
            {
                variableGroups.ForEach(x => writer.WriteLine($"- group: {x}"));
                Variables.ForEach(x =>
                {
                    using (writer.WriteBlock($"- name: {x.Name}"))
                    {
                        writer.WriteLine($"value: {x.Value}");
                    }
                });
                writer.WriteLine();
            }

            base.Write(writer);

            VariableGroups = variableGroups;
        }
示例#18
0
 public override void Write(CustomFileWriter writer)
 {
     using (writer.WriteBlock("stages:"))
     {
         Stages.ForEach(x => x.Write(writer));
     }
 }
示例#19
0
 public override void Write(CustomFileWriter writer)
 {
     Header.ForEach(writer.WriteLine);
     Project.Write(writer);
     Project.VcsRoot.Write(writer);
     Project.BuildTypes.ForEach(x => x.Write(writer));
 }
示例#20
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"name: {Name}");
            writer.WriteLine();

            if (ShortTriggers.Count > 0)
            {
                writer.WriteLine($"on: [{ShortTriggers.Select(x => x.GetValue().ToLowerInvariant()).JoinComma()}]");
            }
            else
            {
                writer.WriteLine("on:");
                using (writer.Indent())
                {
                    DetailedTriggers.ForEach(x => x.Write(writer));
                }
            }

            writer.WriteLine();

            writer.WriteLine("jobs:");
            using (writer.Indent())
            {
                Jobs.ForEach(x => x.Write(writer));
            }
            if (Environment?.Any() == true)
            {
                writer.WriteLine("env:");
                using (writer.Indent())
                {
                    Environment.ForEach(x => writer.WriteLine($"{x.Key}: {x.Value}"));
                }
            }
        }
示例#21
0
 public override void Write(CustomFileWriter writer)
 {
     using (writer.WriteBlock("vcs"))
     {
         writer.WriteArray("branchFilter", BranchFilters);
         writer.WriteArray("triggerRules", TriggerRules);
     }
 }
示例#22
0
 public virtual void WriteExecStep(CustomFileWriter writer, string arguments)
 {
     using (writer.WriteBlock("exec"))
     {
         writer.WriteLine("path = \"build.sh\"");
         writer.WriteLine($"arguments = \"{arguments}\"");
     }
 }
示例#23
0
 public override void Write(CustomFileWriter writer)
 {
     using (writer.WriteBlock("vcs"))
     {
         writer.WriteLine($"branchFilter = {BranchFilter.DoubleQuote()}");
         writer.WriteLine($"triggerRules = {TriggerRules.DoubleQuote()}");
     }
 }
示例#24
0
 public virtual void WriteExecStep(CustomFileWriter writer, string arguments)
 {
     using (writer.WriteBlock("exec"))
     {
         writer.WriteLine($"path = {BashScript.DoubleQuote()}");
         writer.WriteLine($"arguments = {arguments.DoubleQuote()}");
     }
 }
示例#25
0
 public override void Write(CustomFileWriter writer)
 {
     writer.WriteLine("schedule:");
     using (writer.Indent())
     {
         writer.WriteLine($"- cron: '{Cron}'");
     }
 }
示例#26
0
 public virtual void WritePowerShellStep(CustomFileWriter writer, string arguments)
 {
     using (writer.WriteBlock("powerShell"))
     {
         writer.WriteLine("scriptMode = file { path = \"build.ps1\" }");
         writer.WriteLine($"param(\"jetbrains_powershell_scriptArguments\",\"{arguments}\")");
         writer.WriteLine("noProfile = true");
     }
 }
示例#27
0
 public void Write(CustomFileWriter writer, string parameters)
 {
     using (writer.WriteBlock(
                $"- pwsh: {ScriptPath} {InvokedTargets.JoinSpace()} --skip {parameters}".TrimEnd()
                ))
     {
         writer.WriteLine($"displayName: {DisplayName.SingleQuote()}");
     }
 }
示例#28
0
 public override void Write(CustomFileWriter writer)
 {
     using (writer.WriteBlock("vcs"))
     {
         writer.WriteLine($"root({Root.Id})");
         if (ShowDependenciesChanges)
             writer.WriteLine("showDependenciesChanges = true");
     }
 }
示例#29
0
 public virtual void WritePowerShellStep(CustomFileWriter writer, string arguments)
 {
     using (writer.WriteBlock("powerShell"))
     {
         writer.WriteLine($"scriptMode = file {{ path = {PowerShellScript.DoubleQuote()} }}");
         writer.WriteLine($"param(\"jetbrains_powershell_scriptArguments\", {arguments.DoubleQuote()})");
         writer.WriteLine("noProfile = true");
     }
 }
 public static IDisposable WriteBlock(this CustomFileWriter writer, string text)
 {
     return(DelegateDisposable
            .CreateBracket(
                () => writer.WriteLine(string.IsNullOrWhiteSpace(text)
                 ? "{"
                 : $"{text} {{"),
                () => writer.WriteLine("}"))
            .CombineWith(writer.Indent()));
 }