Skip to content

Commit 443fefe

Browse files
committed
(build) changes in task dependencies
1 parent 815eaa7 commit 443fefe

File tree

5 files changed

+38
-38
lines changed

5 files changed

+38
-38
lines changed

build.cake

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Install modules
2-
#module nuget:?package=Cake.DotNetTool.Module&version=0.2.0
2+
#module nuget:?package=Cake.DotNetTool.Module&version=0.3.0
33

44
// Install addins.
55
#addin "nuget:?package=Cake.Codecov&version=0.6.0"
@@ -11,16 +11,15 @@
1111
#addin "nuget:?package=Cake.Json&version=3.0.0"
1212
#addin "nuget:?package=Cake.Npm&version=0.17.0"
1313
#addin "nuget:?package=Cake.Tfx&version=0.9.0"
14-
#addin "nuget:?package=Cake.Gem&version=0.8.0"
1514

1615
#addin "nuget:?package=Newtonsoft.Json&version=9.0.1"
1716
#addin "nuget:?package=xunit.assert&version=2.4.1"
1817

1918
// Install tools.
2019
#tool "nuget:?package=vswhere&version=2.6.13-ga6d40ba5f4"
2120
#tool "nuget:?package=NUnit.ConsoleRunner&version=3.10.0"
22-
#tool "nuget:?package=ILRepack&version=2.0.16"
23-
#tool "nuget:?package=Codecov&version=1.5.0"
21+
#tool "nuget:?package=ILRepack&version=2.0.17"
22+
#tool "nuget:?package=Codecov&version=1.6.0"
2423
#tool "nuget:?package=nuget.commandline&version=5.0.2"
2524

2625
// Install .NET Core Global tools.
@@ -40,18 +39,20 @@ using System.Diagnostics;
4039
// PARAMETERS
4140
//////////////////////////////////////////////////////////////////////
4241
bool publishingError = false;
43-
42+
bool singleStageRun = false;
4443
///////////////////////////////////////////////////////////////////////////////
4544
// SETUP / TEARDOWN
4645
///////////////////////////////////////////////////////////////////////////////
4746

4847
Setup<BuildParameters>(context =>
4948
{
50-
var parameters = BuildParameters.GetParameters(Context);
49+
var parameters = BuildParameters.GetParameters(context);
5150
Build(parameters.Configuration);
5251
var gitVersion = GetVersion(parameters);
5352
parameters.Initialize(context, gitVersion);
5453

54+
singleStageRun = !parameters.EnabledMultiStageBuild;
55+
5556
// Increase verbosity?
5657
if (parameters.IsMainBranch && (context.Log.Verbosity != Verbosity.Diagnostic)) {
5758
Information("Increasing verbosity to diagnostic.");

build/docker.cake

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
var dockerBuild = Task("Docker-Build")
1+
Task("Docker-Build")
22
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsRunningOnMacOS, "Docker can be built only on Windows or Linux agents.")
33
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Docker-Build works only on AzurePipeline.")
4+
.IsDependentOnWhen("Copy-Files", singleStageRun)
45
.Does<BuildParameters>((parameters) =>
56
{
67
foreach(var dockerImage in parameters.Docker.Images)
@@ -9,9 +10,6 @@ var dockerBuild = Task("Docker-Build")
910
}
1011
});
1112

12-
dockerBuild
13-
.IsDependentOn("Copy-Files");
14-
1513
Task("Docker-Test")
1614
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsRunningOnMacOS, "Docker can be tested only on Windows or Linux agents.")
1715
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Docker-Test works only on AzurePipeline.")

build/publish.cake

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ Task("Release-Notes")
2929
Error(exception.Dump());
3030
});
3131

32-
var publishCoverage = Task("Publish-Coverage")
32+
Task("Publish-Coverage")
3333
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Coverage works only on Windows agents.")
3434
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-Coverage works only on AzurePipeline.")
3535
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-Coverage works only for releases.")
36+
.IsDependentOnWhen("Test", singleStageRun)
3637
.Does<BuildParameters>((parameters) =>
3738
{
3839
var coverageFiles = GetFiles(parameters.Paths.Directories.TestCoverageOutput + "/*.coverage.xml");
@@ -51,12 +52,10 @@ var publishCoverage = Task("Publish-Coverage")
5152
}
5253
});
5354

54-
publishCoverage
55-
.IsDependentOn("Test");
56-
57-
var publishAppVeyor = Task("Publish-AppVeyor")
55+
Task("Publish-AppVeyor")
5856
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-AppVeyor works only on Windows agents.")
5957
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor, "Publish-AppVeyor works only on AppVeyor.")
58+
.IsDependentOnWhen("Pack", singleStageRun)
6059
.Does<BuildParameters>((parameters) =>
6160
{
6261
foreach(var artifact in parameters.Artifacts.All)
@@ -80,13 +79,11 @@ var publishAppVeyor = Task("Publish-AppVeyor")
8079
publishingError = true;
8180
});
8281

83-
publishAppVeyor
84-
.IsDependentOn("Pack");
85-
86-
var publishAzurePipeline = Task("Publish-AzurePipeline")
82+
Task("Publish-AzurePipeline")
8783
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-AzurePipeline works only on Windows agents.")
8884
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-AzurePipeline works only on AzurePipeline.")
8985
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsPullRequest, "Publish-AzurePipeline works only for non-PR commits.")
86+
.IsDependentOnWhen("Pack", singleStageRun)
9087
.Does<BuildParameters>((parameters) =>
9188
{
9289
foreach(var artifact in parameters.Artifacts.All)
@@ -113,14 +110,12 @@ var publishAzurePipeline = Task("Publish-AzurePipeline")
113110
publishingError = true;
114111
});
115112

116-
publishAzurePipeline
117-
.IsDependentOn("Pack");
118-
119-
var publishVsix = Task("Publish-Vsix")
113+
Task("Publish-Vsix")
120114
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishVsix, "Publish-Vsix was disabled.")
121115
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Vsix works only on Windows agents.")
122116
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-Vsix works only on AzurePipeline.")
123117
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-Vsix works only for releases.")
118+
.IsDependentOnWhen("Pack-Vsix", singleStageRun)
124119
.Does<BuildParameters>((parameters) =>
125120
{
126121
var token = parameters.Credentials.Tfx.Token;
@@ -146,14 +141,12 @@ var publishVsix = Task("Publish-Vsix")
146141
publishingError = true;
147142
});
148143

149-
publishVsix
150-
.IsDependentOn("Pack-Vsix");
151-
152-
var publishGem = Task("Publish-Gem")
144+
Task("Publish-Gem")
153145
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishGem, "Publish-Gem was disabled.")
154146
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Gem works only on Windows agents.")
155147
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-Gem works only on AzurePipeline.")
156148
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-Gem works only for releases.")
149+
.IsDependentOnWhen("Pack-Gem", singleStageRun)
157150
.Does<BuildParameters>((parameters) =>
158151
{
159152
var apiKey = parameters.Credentials.RubyGem.ApiKey;
@@ -176,14 +169,12 @@ var publishGem = Task("Publish-Gem")
176169
publishingError = true;
177170
});
178171

179-
publishGem
180-
.IsDependentOn("Pack-Gem");
181-
182-
var publishNuGet = Task("Publish-NuGet")
172+
Task("Publish-NuGet")
183173
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishNuget, "Publish-NuGet was disabled.")
184174
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-NuGet works only on Windows agents.")
185175
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-NuGet works only on AzurePipeline.")
186176
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-NuGet works only for releases.")
177+
.IsDependentOnWhen("Pack-NuGet", singleStageRun)
187178
.Does<BuildParameters>((parameters) =>
188179
{
189180
var apiKey = parameters.Credentials.Nuget.ApiKey;
@@ -216,14 +207,12 @@ var publishNuGet = Task("Publish-NuGet")
216207
publishingError = true;
217208
});
218209

219-
publishNuGet
220-
.IsDependentOn("Pack-NuGet");
221-
222-
var publishChocolatey = Task("Publish-Chocolatey")
210+
Task("Publish-Chocolatey")
223211
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishChocolatey, "Publish-Chocolatey was disabled.")
224212
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Chocolatey works only on Windows agents.")
225213
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-Chocolatey works only on AzurePipeline.")
226214
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-Chocolatey works only for releases.")
215+
.IsDependentOnWhen("Pack-Chocolatey", singleStageRun)
227216
.Does<BuildParameters>((parameters) =>
228217
{
229218
var apiKey = parameters.Credentials.Chocolatey.ApiKey;
@@ -256,7 +245,4 @@ var publishChocolatey = Task("Publish-Chocolatey")
256245
Error(exception.Dump());
257246
publishingError = true;
258247
});
259-
260-
publishChocolatey
261-
.IsDependentOn("Pack-Chocolatey");
262248
#endregion

build/utils/parameters.cake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class BuildParameters
1717
public bool EnabledPublishNuget { get; private set; }
1818
public bool EnabledPublishChocolatey { get; private set; }
1919
public bool EnabledPublishDocker { get; private set; }
20+
public bool EnabledMultiStageBuild { get; private set; }
2021

2122
public bool IsRunningOnUnix { get; private set; }
2223
public bool IsRunningOnWindows { get; private set; }
@@ -75,6 +76,7 @@ public class BuildParameters
7576
EnabledPublishNuget = IsEnabled(context, "ENABLED_PUBLISH_NUGET"),
7677
EnabledPublishChocolatey = IsEnabled(context, "ENABLED_PUBLISH_CHOCOLATEY"),
7778
EnabledPublishDocker = IsEnabled(context, "ENABLED_PUBLISH_DOCKER"),
79+
EnabledMultiStageBuild = IsEnabled(context, "ENABLED_MULTI_STAGE_BUILD", false),
7880

7981
IsRunningOnUnix = context.IsRunningOnUnix(),
8082
IsRunningOnWindows = context.IsRunningOnWindows(),

build/utils/utils.cake

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,16 @@ void UpdateTaskVersion(FilePath taskJsonPath, string taskId, GitVersion gitVersi
155155
taskJson["version"]["Patch"] = gitVersion.Patch.ToString();
156156
SerializeJsonToPrettyFile(taskJsonPath, taskJson);
157157
}
158+
159+
public static CakeTaskBuilder IsDependentOnWhen(this CakeTaskBuilder builder, string name, bool condition)
160+
{
161+
if (builder == null)
162+
{
163+
throw new ArgumentNullException(nameof(builder));
164+
}
165+
if (condition)
166+
{
167+
builder.IsDependentOn(name);
168+
}
169+
return builder;
170+
}

0 commit comments

Comments
 (0)