Skip to content

Commit ebe5e47

Browse files
authored
Merge branch 'master' into feature/test-for-1255
2 parents a778622 + 14b7365 commit ebe5e47

File tree

5 files changed

+133
-27
lines changed

5 files changed

+133
-27
lines changed

build.cake

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -442,9 +442,9 @@ Task("Pack")
442442
#region Publish
443443

444444
Task("Release-Notes")
445-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Release notes are generated only on Windows agents.")
446-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor, "Release notes are generated only on release agents.")
447-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease(), "Release notes are generated only for stable releases.")
445+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Release notes are generated only on Windows agents.")
446+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Release notes are generated only on AzurePipeline.")
447+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease(), "Release notes are generated only for stable releases.")
448448
.IsDependentOn("Clean")
449449
.Does<BuildParameters>((parameters) =>
450450
{
@@ -458,8 +458,8 @@ Task("Release-Notes")
458458
});
459459

460460
Task("Publish-Coverage")
461-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Coverage works only on Windows agents.")
462-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor, "Publish-Coverage works only on AppVeyor.")
461+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Coverage works only on Windows agents.")
462+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-Coverage works only on AzurePipeline.")
463463
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-Coverage works only for releases.")
464464
.IsDependentOn("Test")
465465
.Does<BuildParameters>((parameters) =>
@@ -481,7 +481,7 @@ Task("Publish-Coverage")
481481
});
482482

483483
Task("Publish-AppVeyor")
484-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-AppVeyor works only on Windows agents.")
484+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-AppVeyor works only on Windows agents.")
485485
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor, "Publish-AppVeyor works only on AppVeyor.")
486486
.IsDependentOn("Pack")
487487
.IsDependentOn("Release-Notes")
@@ -509,9 +509,9 @@ Task("Publish-AppVeyor")
509509
});
510510

511511
Task("Publish-AzurePipeline")
512-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-AzurePipeline works only on Windows agents.")
512+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-AzurePipeline works only on Windows agents.")
513513
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-AzurePipeline works only on AzurePipeline.")
514-
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsPullRequest, "Publish-AzurePipeline works only for non-PR commits.")
514+
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsPullRequest, "Publish-AzurePipeline works only for non-PR commits.")
515515
.IsDependentOn("Pack")
516516
.IsDependentOn("Release-Notes")
517517
.Does<BuildParameters>((parameters) =>
@@ -541,9 +541,9 @@ Task("Publish-AzurePipeline")
541541
});
542542

543543
Task("Publish-Tfs")
544-
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishTfs, "Publish-Tfs was disabled.")
545-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Tfs works only on Windows agents.")
546-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor, "Publish-Tfs works only on AppVeyor.")
544+
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishTfs, "Publish-Tfs was disabled.")
545+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Tfs works only on Windows agents.")
546+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-Tfs works only on AzurePipeline.")
547547
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease(), "Publish-Tfs works only for releases.")
548548
.IsDependentOn("Pack-Tfs")
549549
.Does<BuildParameters>((parameters) =>
@@ -577,9 +577,9 @@ Task("Publish-Tfs")
577577
});
578578

579579
Task("Publish-Gem")
580-
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishGem, "Publish-Gem was disabled.")
581-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Gem works only on Windows agents.")
582-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor, "Publish-Gem works only on AppVeyor.")
580+
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishGem, "Publish-Gem was disabled.")
581+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Gem works only on Windows agents.")
582+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-Gem works only on AzurePipeline.")
583583
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-Gem works only for releases.")
584584
.IsDependentOn("Pack-Gem")
585585
.Does<BuildParameters>((parameters) =>
@@ -605,9 +605,9 @@ Task("Publish-Gem")
605605
});
606606

607607
Task("Publish-DockerHub")
608-
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishDocker, "Publish-DockerHub was disabled.")
609-
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsRunningOnMacOS, "Publish-DockerHub works only on Windows and Linux agents.")
610-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor || (parameters.IsRunningOnTravis && !parameters.IsRunningOnMacOS), "Publish-DockerHub works only on AppVeyor or Travis.")
608+
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishDocker, "Publish-DockerHub was disabled.")
609+
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsRunningOnMacOS, "Publish-DockerHub works only on Windows and Linux agents.")
610+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-DockerHub works only on AzurePipeline.")
611611
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-DockerHub works only for releases.")
612612
.IsDependentOn("Docker-Build")
613613
.Does<BuildParameters>((parameters) =>
@@ -645,9 +645,9 @@ Task("Publish-DockerHub")
645645
});
646646

647647
Task("Publish-NuGet")
648-
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishNuget, "Publish-NuGet was disabled.")
649-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-NuGet works only on Windows agents.")
650-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor, "Publish-NuGet works only on AppVeyor.")
648+
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishNuget, "Publish-NuGet was disabled.")
649+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-NuGet works only on Windows agents.")
650+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-NuGet works only on AzurePipeline.")
651651
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-NuGet works only for releases.")
652652
.IsDependentOn("Pack-NuGet")
653653
.Does<BuildParameters>((parameters) =>
@@ -685,7 +685,7 @@ Task("Publish-NuGet")
685685
Task("Publish-Chocolatey")
686686
.WithCriteria<BuildParameters>((context, parameters) => parameters.EnabledPublishChocolatey, "Publish-Chocolatey was disabled.")
687687
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnWindows, "Publish-Chocolatey works only on Windows agents.")
688-
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAppVeyor, "Publish-Chocolatey works only on AppVeyor.")
688+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Publish-Chocolatey works only on AzurePipeline.")
689689
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsStableRelease() || parameters.IsPreRelease(), "Publish-Chocolatey works only for releases.")
690690
.IsDependentOn("Pack-Chocolatey")
691691
.Does<BuildParameters>((parameters) =>

build/tmpl/jobs.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,20 @@ jobs:
1919
addToPath: true # Optional
2020
- powershell: ./build.ps1 -script build.cake -target Default
2121
displayName: 'Cake build'
22+
env:
23+
GITHUB_TOKEN: $(GITHUB_TOKEN)
24+
DOCKER_USERNAME: $(DOCKER_USERNAME)
25+
DOCKER_PASSWORD: $(DOCKER_PASSWORD)
26+
NUGET_API_KEY: $(NUGET_API_KEY)
27+
NUGET_API_URL: $(NUGET_API_URL)
28+
CHOCOLATEY_API_KEY: $(CHOCOLATEY_API_KEY)
29+
CHOCOLATEY_API_URL: $(CHOCOLATEY_API_URL)
30+
RUBY_GEM_API_KEY: $(RUBY_GEM_API_KEY)
31+
TFX_TOKEN: $(TFX_TOKEN)
32+
CODECOV_TOKEN: $(CODECOV_TOKEN)
33+
ENABLED_UNIT_TESTS: $(ENABLED_UNIT_TESTS)
34+
ENABLED_PUBLISH_GEM: $(ENABLED_PUBLISH_GEM)
35+
ENABLED_PUBLISH_TFS: $(ENABLED_PUBLISH_TFS)
36+
ENABLED_PUBLISH_NUGET: $(ENABLED_PUBLISH_NUGET)
37+
ENABLED_PUBLISH_CHOCOLATEY: $(ENABLED_PUBLISH_CHOCOLATEY)
38+
ENABLED_PUBLISH_DOCKER: $(ENABLED_PUBLISH_DOCKER)

src/GitVersionCore.Tests/IntegrationTests/DevelopScenarios.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public void WhenMultipleDevelopBranchesExistAndCurrentBranchHasIncrementInheritP
201201
fixture.Repository.MakeACommit();
202202
fixture.Repository.MergeNoFF("develop");
203203

204-
fixture.AssertFullSemver("1.0.1-x.1+3");
204+
fixture.AssertFullSemver("1.1.0-x.1+3");
205205
}
206206
}
207207
}

src/GitVersionCore.Tests/IntegrationTests/FeatureBranchScenarios.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,4 +552,49 @@ public void PickUpVersionFromMasterMarkedWithIsTracksReleaseBranches()
552552
fixture.AssertFullSemver(config, "0.10.1-MyFeatureD.1+1");
553553
}
554554
}
555+
556+
[Test]
557+
public void ShouldHaveAGreaterSemVerAfterDevelopIsMergedIntoFeature()
558+
{
559+
var config = new Config()
560+
{
561+
VersioningMode = VersioningMode.ContinuousDeployment,
562+
AssemblyVersioningScheme = AssemblyVersioningScheme.Major,
563+
AssemblyFileVersioningFormat = "{MajorMinorPatch}.{env:WeightedPreReleaseNumber ?? 0}",
564+
LegacySemVerPadding = 4,
565+
BuildMetaDataPadding = 4,
566+
CommitsSinceVersionSourcePadding = 4,
567+
CommitMessageIncrementing = CommitMessageIncrementMode.Disabled,
568+
Branches = new Dictionary<string, BranchConfig>
569+
{
570+
{
571+
"develop", new BranchConfig()
572+
{
573+
PreventIncrementOfMergedBranchVersion = true
574+
}
575+
},
576+
{
577+
"feature", new BranchConfig()
578+
{
579+
Tag = "feat-{BranchName}"
580+
}
581+
}
582+
}
583+
};
584+
using (var fixture = new EmptyRepositoryFixture())
585+
{
586+
fixture.MakeACommit();
587+
fixture.BranchTo("develop");
588+
fixture.MakeACommit();
589+
fixture.ApplyTag("16.23.0");
590+
fixture.MakeACommit();
591+
fixture.BranchTo("feature/featX");
592+
fixture.MakeACommit();
593+
fixture.Checkout("develop");
594+
fixture.MakeACommit();
595+
fixture.Checkout("feature/featX");
596+
fixture.MergeNoFF("develop");
597+
fixture.AssertFullSemver(config, "16.24.0-feat-featX.4");
598+
}
599+
}
555600
}

src/GitVersionCore/BranchConfigurationCalculator.cs

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,21 @@ static BranchConfig InheritBranchConfiguration(GitVersionContext context, Branch
142142
// To prevent infinite loops, make sure that a new branch was chosen.
143143
if (targetBranch.IsSameBranch(chosenBranch))
144144
{
145-
Logger.WriteWarning("Fallback branch wants to inherit Increment branch configuration from itself. Using patch increment instead.");
146-
return new BranchConfig(branchConfiguration)
145+
BranchConfig developOrMasterConfig =
146+
ChooseMasterOrDevelopIncrementStrategyIfTheChosenBranchIsOneOfThem(
147+
chosenBranch, branchConfiguration, config);
148+
if (developOrMasterConfig != null)
147149
{
148-
Increment = IncrementStrategy.Patch
149-
};
150+
return developOrMasterConfig;
151+
}
152+
else
153+
{
154+
Logger.WriteWarning("Fallback branch wants to inherit Increment branch configuration from itself. Using patch increment instead.");
155+
return new BranchConfig(branchConfiguration)
156+
{
157+
Increment = IncrementStrategy.Patch
158+
};
159+
}
150160
}
151161

152162
var inheritingBranchConfig = GetBranchConfiguration(context, chosenBranch, excludedInheritBranches);
@@ -201,5 +211,39 @@ static Branch[] CalculateWhenMultipleParents(IRepository repository, Commit curr
201211

202212
return excludedBranches;
203213
}
214+
215+
private static BranchConfig
216+
ChooseMasterOrDevelopIncrementStrategyIfTheChosenBranchIsOneOfThem(Branch ChosenBranch,
217+
BranchConfig BranchConfiguration, Config config)
218+
{
219+
BranchConfig masterOrDevelopConfig = null;
220+
var developBranchRegex = config.Branches[ConfigurationProvider.DevelopBranchKey].Regex;
221+
var masterBranchRegex = config.Branches[ConfigurationProvider.MasterBranchKey].Regex;
222+
if (Regex.IsMatch(ChosenBranch.FriendlyName, developBranchRegex, RegexOptions.IgnoreCase))
223+
{
224+
// Normally we would not expect this to happen but for safety we add a check
225+
if (config.Branches[ConfigurationProvider.DevelopBranchKey].Increment !=
226+
IncrementStrategy.Inherit)
227+
{
228+
masterOrDevelopConfig = new BranchConfig(BranchConfiguration)
229+
{
230+
Increment = config.Branches[ConfigurationProvider.DevelopBranchKey].Increment
231+
};
232+
}
233+
}
234+
else if (Regex.IsMatch(ChosenBranch.FriendlyName, masterBranchRegex, RegexOptions.IgnoreCase))
235+
{
236+
// Normally we would not expect this to happen but for safety we add a check
237+
if (config.Branches[ConfigurationProvider.MasterBranchKey].Increment !=
238+
IncrementStrategy.Inherit)
239+
{
240+
masterOrDevelopConfig = new BranchConfig(BranchConfiguration)
241+
{
242+
Increment = config.Branches[ConfigurationProvider.DevelopBranchKey].Increment
243+
};
244+
}
245+
}
246+
return masterOrDevelopConfig;
247+
}
204248
}
205-
}
249+
}

0 commit comments

Comments
 (0)