示例#1
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"- name: Run '{Command}'");
            writer.WriteLine($"  run: {Command}");

            if (Imports.Count > 0)
            {
                using (writer.Indent())
                {
                    writer.WriteLine("env:");
                    using (writer.Indent())
                    {
                        Imports.ForEach(x => writer.WriteLine($"{x.Key}: {x.Value}"));
                    }
                }
            }
        }
示例#2
0
        public virtual void WriteSteps(CustomFileWriter writer)
        {
            using (writer.WriteBlock("steps"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (Partition != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} {Partition.Part}";
                }

                using (writer.WriteBlock("exec"))
                {
                    writer.WriteLine($"path = {BuildCmdPath.DoubleQuote()}");
                    writer.WriteLine($"arguments = {arguments.DoubleQuote()}");
                }
            }
        }
示例#3
0
        protected virtual void WriteSteps(CustomFileWriter writer)
        {
            // using (writer.WriteBlock("- task: DownloadBuildArtifacts@0"))
            // {
            //     // writer.WriteLine("displayName: Download Artifacts");
            //     using (writer.WriteBlock("inputs:"))
            //     {
            //         writer.WriteLine($"artifactName: {Name}");
            //         writer.WriteLine($"downloadPath: {Path.SingleQuote()}");
            //     }
            // }

            using (writer.WriteBlock("- task: CmdLine@2"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (PartitionName != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} $(System.JobPositionInPhase)";
                }

                using (writer.WriteBlock("inputs:"))
                {
                    writer.WriteLine($"script: './{BuildCmdPath} {arguments}'");
                }

                if (Imports.Count > 0)
                {
                    using (writer.WriteBlock("env:"))
                    {
                        Imports.ForEach(x => writer.WriteLine($"{x.Key}: {x.Value}"));
                    }
                }
            }

            PublishArtifacts.ForEach(x =>
            {
                using (writer.WriteBlock("- task: PublishBuildArtifacts@1"))
                {
                    using (writer.WriteBlock("inputs:"))
                    {
                        writer.WriteLine($"artifactName: {x.Split('/').Last()}");
                        writer.WriteLine($"pathtoPublish: {x.SingleQuote()}");
                    }
                }
            });
        }
示例#4
0
 public override void Write(CustomFileWriter writer)
 {
     if (Cpu != null || Memory != null)
     {
         using (writer.WriteBlock($"resources"))
         {
             if (Cpu != null)
             {
                 writer.WriteLine($"cpu = {Cpu}");
             }
             if (Memory != null)
             {
                 writer.WriteLine($"memory = {Memory}");
             }
         }
     }
 }
        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);
                    }
                }
            }
        }
示例#6
0
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock("project"))
            {
                if (Description != null)
                {
                    writer.WriteLine($"description = {Description}");
                }

                writer.WriteLine($"vcsRoot({VcsRoot.Id})");
                writer.WriteLine();

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

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

                if (Parameters.Any())
                {
                    using (writer.WriteBlock("params"))
                    {
                        foreach (var parameter in Parameters)
                        {
                            parameter.Write(writer);
                        }
                    }
                }
            }
        }
示例#7
0
        public virtual void WriteArtifacts(CustomFileWriter writer)
        {
            if (!ArtifactRules?.Any() ?? true)
            {
                return;
            }

            writer.WriteLine("artifactRules = \"\"\"");
            using (writer.Indent())
            {
                foreach (var artifactRule in ArtifactRules)
                {
                    writer.WriteLine(artifactRule);
                }
            }

            writer.WriteLine("\"\"\".trimIndent()");
        }
示例#8
0
        public override void Write(CustomFileWriter writer)
        {
            if (Only.Length > 0)
            {
                using (writer.WriteBlock("only:"))
                {
                    Only.ForEach(x => writer.WriteLine($"- {x}"));
                }
            }

            if (Except.Length > 0)
            {
                using (writer.WriteBlock("except:"))
                {
                    Except.ForEach(x => writer.WriteLine($"- {x}"));
                }
            }
        }
示例#9
0
 public void Write(CustomFileWriter writer, string parameters)
 {
     using (writer.WriteBlock(
                $"- pwsh: {ScriptPath} {InvokedTargets.JoinSpace()} --skip {parameters}".TrimEnd()
                ))
     {
         writer.WriteLine($"displayName: {DisplayName.SingleQuote()}");
     }
 }
示例#10
0
文件: RunStep.cs 项目: eaba/Nuke
 public override void Write(CustomFileWriter writer)
 {
     base.Write(writer);
     using (writer.Indent())
     {
         if (!string.IsNullOrWhiteSpace(Shell))
         {
             writer.WriteLine($"shell: {Shell}");
         }
         writer.WriteLine($"run: |");
         using (writer.Indent())
         {
             foreach (var line in Run.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries))
             {
                 writer.WriteLine(line.Trim());
             }
         }
     }
 }
 public override void Write(CustomFileWriter writer)
 {
     writer.WriteLine("workflow_dispatch:");
     using (writer.Indent())
     {
         writer.WriteLine("inputs:");
         using (writer.Indent())
         {
             foreach (var input in Inputs)
             {
                 writer.WriteLine($"{input}:");
                 using (writer.Indent())
                 {
                     writer.WriteLine($"description: {input.SplitCamelHumpsWithSeparator(" ", Constants.KnownWords).DoubleQuote()}");
                 }
             }
         }
     }
 }
示例#12
0
        public override void Write(CustomFileWriter writer)
        {
            if (Disabled)
            {
                writer.WriteLine("none");
                return;
            }

            if (Batch.HasValue)
            {
                writer.WriteLine($"batch: {Batch.ToString().ToLowerInvariant()}");
            }

            if (AutoCancel.HasValue)
            {
                writer.WriteLine($"autoCancel: {AutoCancel.ToString().ToLowerInvariant()}");
            }

            if (BranchesInclude.Length > 0 || BranchesExclude.Length > 0)
            {
                using (writer.WriteBlock("branches:"))
                {
                    WriteInclusionsAndExclusions(writer, BranchesInclude, BranchesExclude);
                }
            }

            if (TagsInclude.Length > 0 || TagsExclude.Length > 0)
            {
                using (writer.WriteBlock("tags:"))
                {
                    WriteInclusionsAndExclusions(writer, TagsInclude, TagsExclude);
                }
            }

            if (PathsInclude.Length > 0 || PathsExclude.Length > 0)
            {
                using (writer.WriteBlock("paths:"))
                {
                    WriteInclusionsAndExclusions(writer, PathsInclude, PathsExclude);
                }
            }
        }
示例#13
0
        public virtual void WriteSteps(CustomFileWriter writer)
        {
            using (writer.WriteBlock("steps"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (Partition != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} {Partition.Part}";
                }

                using (writer.WriteBlock("exec"))
                {
                    var path = Platform == TeamCityAgentPlatform.Windows
                        ? BuildCmdPath
                        : BuildCmdPath.Replace(".cmd", ".sh");
                    writer.WriteLine($"path = {path.DoubleQuote()}");
                    writer.WriteLine($"arguments = {arguments.DoubleQuote()}");
                }
            }
        }
 public override void Write(CustomFileWriter writer)
 {
     using (writer.WriteBlock($"stage('{Name}')"))
     {
         writer.WriteLine("failFast true");
         using (writer.WriteBlock($"parallel"))
         {
             Stages.ForEach(x => x.Write(writer));
         }
     }
 }
示例#15
0
        private static void WriteInclusionsAndExclusions(
            CustomFileWriter writer,
            IReadOnlyCollection <string> inclusions,
            IReadOnlyCollection <string> exclusions)
        {
            if (inclusions.Count > 0)
            {
                using (writer.WriteBlock("include:"))
                {
                    inclusions.ForEach(x => writer.WriteLine($"- {x}"));
                }
            }

            if (exclusions.Count > 0)
            {
                using (writer.WriteBlock("exclude:"))
                {
                    exclusions.ForEach(x => writer.WriteLine($"- {x}"));
                }
            }
        }
示例#16
0
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock($"- stage: {Name}"))
            {
                writer.WriteLine($"displayName: {DisplayName.SingleQuote()}");
                writer.WriteLine($"dependsOn: [ {Dependencies.Select(x => x.Name).JoinComma()} ]");

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

                using (writer.WriteBlock("jobs:"))
                {
                    Jobs.ForEach(x => x.Write(writer));
                }
            }
        }
示例#17
0
    protected override void WriteSteps(CustomFileWriter writer)
    {
        DownloadArtifacts.ForEach(x =>
        {
            using (writer.WriteBlock("- task: DownloadBuildArtifacts@0"))
            {
                writer.WriteLine("displayName: Download Artifacts");
                using (writer.WriteBlock("inputs:"))
                {
                    string[] parts = x.Split('/');
                    var path       = parts.SkipLast(1).Join('/').SingleQuote();
                    writer.WriteLine("buildType: 'current'");
                    writer.WriteLine("downloadType: 'single'");
                    writer.WriteLine($"artifactName: {parts.Last()}");
                    writer.WriteLine($"downloadPath: {path}");
                }
            }
        });

        base.WriteSteps(writer);
    }
示例#18
0
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock($"container({Image.DoubleQuote()})"))
            {
                Resources.Write(writer);

                using (writer.WriteBlock("shellScript"))
                {
                    writer.WriteLine($"content = {$"./{BuildScript} {InvokedTargets.JoinSpace()}".DoubleQuote()}");
                }
            }
        }
示例#19
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));
            }
        }
示例#20
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"{Kind.GetValue()}:");

            void WriteValue(string value) => writer.WriteLine($"- {value.SingleQuoteIfNeeded('*', '!')}");

            using (writer.Indent())
            {
                if (Branches.Length > 0)
                {
                    writer.WriteLine("branches:");
                    using (writer.Indent())
                    {
                        Branches.ForEach(WriteValue);
                    }
                }

                if (BranchesIgnore.Length > 0)
                {
                    writer.WriteLine("branches-ignore:");
                    using (writer.Indent())
                    {
                        BranchesIgnore.ForEach(WriteValue);
                    }
                }

                if (Tags.Length > 0)
                {
                    writer.WriteLine("tags:");
                    using (writer.Indent())
                    {
                        Tags.ForEach(WriteValue);
                    }
                }

                if (TagsIgnore.Length > 0)
                {
                    writer.WriteLine("tags-ignore:");
                    using (writer.Indent())
                    {
                        TagsIgnore.ForEach(WriteValue);
                    }
                }

                if (IncludePaths.Length > 0 || ExcludePaths.Length > 0)
                {
                    writer.WriteLine("paths:");
                    using (writer.Indent())
                    {
                        IncludePaths.ForEach(WriteValue);
                        ExcludePaths.Select(x => $"!{x}").ForEach(WriteValue);
                    }
                }
            }
        }
示例#21
0
        protected virtual void WriteSteps(CustomFileWriter writer)
        {
            // using (writer.WriteBlock("- task: DownloadBuildArtifacts@0"))
            // {
            //     // writer.WriteLine("displayName: Download Artifacts");
            //     using (writer.WriteBlock("inputs:"))
            //     {
            //         writer.WriteLine($"artifactName: {Name}");
            //         writer.WriteLine($"downloadPath: {Path.SingleQuote()}");
            //     }
            // }

            using (writer.WriteBlock("- task: PowerShell@2"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (PartitionName != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} $(System.JobPositionInPhase)";
                }

                using (writer.WriteBlock("inputs:"))
                {
                    writer.WriteLine($"filePath: {ScriptPath.SingleQuote()}");
                    writer.WriteLine($"arguments: {arguments.SingleQuote()}");
                }
            }

            PublishArtifacts.ForEach(x =>
            {
                using (writer.WriteBlock("- task: PublishBuildArtifacts@1"))
                {
                    using (writer.WriteBlock("inputs:"))
                    {
                        writer.WriteLine($"artifactName: {x}");
                        writer.WriteLine($"pathtoPublish: {StringExtensions.SingleQuote(x)}");
                    }
                }
            });
        }
示例#22
0
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock("schedule"))
            {
                using (writer.WriteBlock("schedulingPolicy = daily"))
                {
                    writer.WriteLine("hour = 3");
                }

                writer.WriteArray("branchFilter", BranchFilters);
                writer.WriteArray("triggerRules", TriggerRules);

                if (TriggerBuildAlways)
                {
                    writer.WriteLine("triggerBuild = always()");
                }

                writer.WriteLine("withPendingChangesOnly = false");
                writer.WriteLine($"enableQueueOptimization = {EnableQueueOptimization.ToString().ToLowerInvariant()}");
                writer.WriteLine("param(\"cronExpression_min\", \"3\")");
            }
        }
示例#23
0
 public override void Write(CustomFileWriter writer)
 {
     writer.WriteLine($"- name: {GetStepName(StepName)}");
     using (writer.Indent())
     {
         if (!string.IsNullOrWhiteSpace(Id))
         {
             writer.WriteLine($"id: {Id}");
         }
         if (!string.IsNullOrWhiteSpace(If))
         {
             writer.WriteLine($"if: {If}");
         }
         if (Environment?.Any() == true)
         {
             writer.WriteLine("env:");
             using (writer.Indent())
             {
                 Environment.ForEach(x => { writer.WriteLine($"{x.Key}: {x.Value}"); });
             }
         }
     }
 }
示例#24
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine("workflow_dispatch:");
            using (writer.Indent())
            {
                writer.WriteLine("inputs:");
                using (writer.Indent())
                {
                    void WriteInput(string input, bool required)
                    {
                        writer.WriteLine($"{input}:");
                        using (writer.Indent())
                        {
                            writer.WriteLine($"description: {input.SplitCamelHumpsWithSeparator(" ", Constants.KnownWords).DoubleQuote()}");
                            writer.WriteLine($"required: {required.ToString().ToLowerInvariant()}");
                        }
                    }

                    OptionalInputs.ForEach(x => WriteInput(x, required: false));
                    RequiredInputs.ForEach(x => WriteInput(x, required: true));
                }
            }
        }
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine("- uses: actions/checkout@v2");

            if (Submodules.HasValue || FetchDepth.HasValue)
            {
                using (writer.Indent())
                {
                    writer.WriteLine("with:");
                    using (writer.Indent())
                    {
                        if (Submodules.HasValue)
                        {
                            writer.WriteLine($"submodules: {Submodules.ToString().ToLowerInvariant()}");
                        }
                        if (FetchDepth.HasValue)
                        {
                            writer.WriteLine($"fetch-depth: {FetchDepth}");
                        }
                    }
                }
            }
        }
示例#26
0
        public virtual void WriteSteps(CustomFileWriter writer)
        {
            using (writer.WriteBlock("steps"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (Partition != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} {Partition.Part}";
                }

                void WriteConditionalExec(string path, string condition, string platform)
                {
                    using (writer.WriteBlock("exec"))
                    {
                        writer.WriteLine($"path = {path.DoubleQuote()}");
                        writer.WriteLine($"arguments = {arguments.DoubleQuote()}");
                        writer.WriteLine($"conditions {{ {condition}(\"teamcity.agent.jvm.os.name\", {platform.DoubleQuote()}) }}");
                    }
                }

                WriteConditionalExec(BuildCmdPath, "contains", "Windows");
                WriteConditionalExec(BuildCmdPath.Replace(".cmd", ".sh"), "doesNotContain", "Windows");
            }
        }
示例#27
0
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock("- task: CmdLine@2"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (PartitionSize != null)
                {
                    arguments += $" --partition $(System.JobPositionInPhase)/{PartitionSize}";
                }

                using (writer.WriteBlock("inputs:"))
                {
                    writer.WriteLine($"script: './{BuildCmdPath} {arguments}'");
                }

                if (Imports.Count > 0)
                {
                    using (writer.WriteBlock("env:"))
                    {
                        Imports.ForEach(x => writer.WriteLine($"{x.Key}: {x.Value}"));
                    }
                }
            }
        }
示例#28
0
        public static void WriteArray(this CustomFileWriter writer, string property, string[] values)
        {
            if (!values?.Any() ?? true)
            {
                return;
            }

            if (values.Length <= 1)
            {
                writer.WriteLine($"{property} = {values.Single().DoubleQuote()}");
                return;
            }

            writer.WriteLine($"{property} = \"\"\"");
            using (writer.Indent())
            {
                foreach (var value in values)
                {
                    writer.WriteLine(value);
                }
            }

            writer.WriteLine("\"\"\"");
        }
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock($"job({Name.DoubleQuote()})"))
            {
                if (VolumeSize != null)
                {
                    writer.WriteLine($"volumeSize = {VolumeSize}");
                    writer.WriteLine();
                }

                using (writer.WriteBlock("git"))
                {
                    writer.WriteLine("depth = UNLIMITED_DEPTH");

                    if (RefSpec != null)
                    {
                        using (writer.WriteBlock("refSpec"))
                        {
                            RefSpec.ForEach(x => writer.WriteLine($"+{x.DoubleQuote()}"));
                        }
                    }
                }

                writer.WriteLine();
                Container.Write(writer);

                if (Triggers.Any())
                {
                    writer.WriteLine();
                    using (writer.WriteBlock("startOn"))
                    {
                        Triggers.ForEach(x => x.Write(writer));
                    }
                }

                if (TimeoutInMinutes != null)
                {
                    writer.WriteLine();
                    using (writer.WriteBlock("failOn"))
                    {
                        writer.WriteLine($"timeOut {{ timeOutInMinutes = {TimeoutInMinutes} }}");
                    }
                }
            }
        }
示例#30
0
        public override void Write(CustomFileWriter writer)
        {
            IEnumerable <string> arguments = new[] { $"name: '{Name}'" };

            if (!string.IsNullOrWhiteSpace(Includes))
            {
                arguments = arguments.Append($"includes: '{Includes}'");
            }

            if (!string.IsNullOrWhiteSpace(Excludes))
            {
                arguments = arguments.Append($"excludes: '{Excludes}'");
            }

            writer.WriteLine($"stash {string.Join(", ", arguments)}");
        }