diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 3522d345d..b623b74da 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -8,6 +8,12 @@ on: - 'cake/**' - '.github/**' workflow_dispatch: + inputs: + publish: + type: boolean + required: false + default: false + description: "Set to 'true' to publish packages" jobs: build: @@ -31,4 +37,10 @@ jobs: GH_TOKEN : ${{ secrets.GH_TOKEN }} GH_USER : ${{ secrets.GH_USER }} run: dotnet run --project cake/Build.csproj --do-test --do-pack --test-level 2 + - name: "Publish packages" + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true' }} + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} + GH_USER: ${{ secrets.GH_USER }} + run: dotnet run --project cake/Build.csproj --do-publish-only --do-publish --do-publish-release diff --git a/cake/BuildParameters.cs b/cake/BuildParameters.cs index 3cd80ec1e..4e036d12c 100644 --- a/cake/BuildParameters.cs +++ b/cake/BuildParameters.cs @@ -51,4 +51,7 @@ public class BuildParameters [Option('a', "apps-run", Required = false, Default = false, HelpText = "Download and run apps")] public bool AppsRun{ get; set; } + + [Option('o', "do-publish-only", Required = false, Default = false, HelpText = "Skips all steps and publishes from pre-build artefacts.")] + public bool PublishOnly { get; set; } } \ No newline at end of file diff --git a/cake/Program.cs b/cake/Program.cs index 667417cbc..65f07400c 100644 --- a/cake/Program.cs +++ b/cake/Program.cs @@ -74,6 +74,12 @@ public sealed class CleanUpTask : FrostingTask { public override void Run(BuildContext context) { + if (context.BuildParameters.PublishOnly) + { + context.Log.Information("Skipping. Publish only."); + return; + } + context.Log.Information("Build running with following parameters:"); context.Log.Information(context.BuildParameters.ToJson(Formatting.Indented)); @@ -104,6 +110,12 @@ public sealed class ProvisionTask : FrostingTask { public override void Run(BuildContext context) { + if (context.BuildParameters.PublishOnly) + { + context.Log.Information("Skipping. Publish only."); + return; + } + ProvisionTools(context); foreach (var library in context.Libraries) @@ -128,6 +140,12 @@ public sealed class ApaxUpdateTask : FrostingTask { public override void Run(BuildContext context) { + if (context.BuildParameters.PublishOnly) + { + context.Log.Information("Skipping. Publish only."); + return; + } + if (!context.BuildParameters.DoApaxUpdate) return; @@ -147,6 +165,12 @@ public sealed class CatalogInstallTask : FrostingTask { public override void Run(BuildContext context) { + if (context.BuildParameters.PublishOnly) + { + context.Log.Information("Skipping. Publish only."); + return; + } + context.Libraries.ToList().ForEach(lib => { foreach (var apaxfile in context.GetApaxFiles(lib)) @@ -165,6 +189,12 @@ public sealed class BuildTask : FrostingTask { public override void Run(BuildContext context) { + if (context.BuildParameters.PublishOnly) + { + context.Log.Information("Skipping. Publish only."); + return; + } + if (context.BuildParameters.DoPack) { context.Libraries.ToList().ForEach(lib => @@ -215,6 +245,12 @@ public sealed class TestsTask : FrostingTask // Tasks can be asynchronous public override void Run(BuildContext context) { + if (context.BuildParameters.PublishOnly) + { + context.Log.Information("Skipping. Publish only."); + return; + } + if (!context.BuildParameters.DoTest) { context.Log.Warning($"Skipping tests"); @@ -816,6 +852,12 @@ public sealed class CreateArtifactsTask : FrostingTask { public override void Run(BuildContext context) { + if (context.BuildParameters.PublishOnly) + { + context.Log.Information("Skipping. Publish only."); + return; + } + if (context.BuildParameters.DoPack) { //context.Libraries.ToList().ForEach(lib =>