Skip to content

Commit d3ea637

Browse files
authored
Merge pull request #1324 from dotnet/copilot/add-disable-setcloudbuildversionvars-option
Add NBGV_SetCloudBuildVersionVars property to disable cloud build variable output
2 parents 6815138 + bfc980f commit d3ea637

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

docfx/docs/build-systems/msbuild.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ Property | Default | Description
5050
`NBGV_EmitThisAssemblyClass` | `true` | When `false`, suppresses generation of the `ThisAssembly` class.
5151
`NBGV_ThisAssemblyIncludesPackageVersion` | `false` | When `true`, a `NuGetPackageVersion` property is added to the `ThisAssembly` class.
5252
`NBGV_UseAssemblyVersionInNativeVersion` | `true` | When `false`, uses the `AssemblyFileVersion` as a native `PRODUCTVERSION`.
53+
`NBGV_SetCloudBuildVersionVars` | `true` | When `false`, suppresses the `SetCloudBuildVersionVars` target from executing, which sets cloud build version variables (e.g., `##vso[task.setvariable]` commands in Azure DevOps pipelines).
5354

5455
### Items
5556

src/Nerdbank.GitVersioning.Tasks/build/Nerdbank.GitVersioning.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119
<Target Name="SetCloudBuildVersionVars"
120120
DependsOnTargets="GetBuildVersion"
121121
AfterTargets="GetBuildVersion"
122-
Condition=" '@(CloudBuildVersionVars)' != '' ">
122+
Condition=" '@(CloudBuildVersionVars)' != '' and '$(NBGV_SetCloudBuildVersionVars)' != 'false' ">
123123
<Nerdbank.GitVersioning.Tasks.SetCloudBuildVariables
124124
CloudBuildVersionVars="@(CloudBuildVersionVars)">
125125
<Output TaskParameter="MSBuildPropertyUpdates" ItemName="_MSBuildPropertyUpdates_Vars" />

test/Nerdbank.GitVersioning.Tests/SomeGitBuildIntegrationTests.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,41 @@ public async Task NativeVersionInfo_CreateNativeResourceDll()
714714
}
715715
#endif
716716

717+
[Theory]
718+
[Trait("TestCategory", "FailsInCloudTest")]
719+
[MemberData(nameof(CloudBuildVariablesData))]
720+
public async Task SetCloudBuildVersionVars_CanBeDisabled(IReadOnlyDictionary<string, string> properties, string expectedMessage, bool setAllVariables)
721+
{
722+
using (ApplyEnvironmentVariables(properties))
723+
{
724+
// Disable SetCloudBuildVersionVars target
725+
this.testProject.AddProperty("NBGV_SetCloudBuildVersionVars", "false");
726+
727+
var versionOptions = new VersionOptions
728+
{
729+
Version = SemanticVersion.Parse("1.0"),
730+
CloudBuild = new VersionOptions.CloudBuildOptions { SetAllVariables = setAllVariables, SetVersionVariables = true },
731+
};
732+
this.WriteVersionFile(versionOptions);
733+
this.InitializeSourceControl();
734+
735+
BuildResults buildResult = await this.BuildAsync();
736+
this.AssertStandardProperties(versionOptions, buildResult);
737+
738+
// Assert GitBuildVersion was NOT set because we disabled the target
739+
string notExpectedMessage = UnitTestCloudBuildPrefix + expectedMessage
740+
.Replace("{NAME}", "GitBuildVersion")
741+
.Replace("{VALUE}", buildResult.BuildVersion);
742+
Assert.DoesNotContain(notExpectedMessage, buildResult.LoggedEvents.Select(e => e.Message.TrimEnd()));
743+
744+
// Assert GitBuildVersionSimple was NOT set
745+
notExpectedMessage = UnitTestCloudBuildPrefix + expectedMessage
746+
.Replace("{NAME}", "GitBuildVersionSimple")
747+
.Replace("{VALUE}", buildResult.BuildVersionSimple);
748+
Assert.DoesNotContain(notExpectedMessage, buildResult.LoggedEvents.Select(e => e.Message.TrimEnd()));
749+
}
750+
}
751+
717752
/// <inheritdoc/>
718753
protected override GitContext CreateGitContext(string path, string committish = null) => throw new NotImplementedException();
719754
}

0 commit comments

Comments
 (0)