Skip to content

Commit b5e9da2

Browse files
CSHARP-2088: Publish PDBs and sources on symbolsource. (#694)
CSHARP-2088: Publish PDBs and sources on symbolsource.
1 parent 6fda6fc commit b5e9da2

File tree

8 files changed

+95
-51
lines changed

8 files changed

+95
-51
lines changed

build.cake

+63-49
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ using System;
88
using System.Text.RegularExpressions;
99
using System.Linq;
1010
using Cake.Common.Tools.DotNetCore.DotNetCoreVerbosity;
11+
using Path = Cake.Core.IO.Path;
1112

1213
const string defaultTarget = "Default";
1314
var target = Argument("target", defaultTarget);
@@ -65,7 +66,7 @@ Task("Restore")
6566

6667
Task("Build")
6768
.IsDependentOn("Restore")
68-
.Does(() =>
69+
.Does<BuildConfig>((buildConfig) =>
6970
{
7071
var settings = new DotNetCoreBuildSettings
7172
{
@@ -77,6 +78,14 @@ Task("Build")
7778
{ "SourceRevisionId", gitVersion.Sha }
7879
}
7980
};
81+
82+
if (buildConfig.IsReleaseMode)
83+
{
84+
Console.WriteLine("Build continuousIntegration is enabled");
85+
settings.MSBuildSettings = new DotNetCoreMSBuildSettings();
86+
// configure deterministic build for better compatibility with debug symbols (used in Package/Build tasks). Affects: *.nupkg
87+
settings.MSBuildSettings.SetContinuousIntegrationBuild(continuousIntegrationBuild: true);
88+
}
8089
DotNetCoreBuild(solutionFullPath, settings);
8190
});
8291

@@ -122,9 +131,8 @@ Task("BuildArtifacts")
122131
Task("Test")
123132
.IsDependentOn("Build")
124133
.DoesForEach(
125-
GetFiles("./**/*.Tests.csproj")
126-
.Where(name => !name.ToString().Contains("Atlas")),
127-
testProject =>
134+
items: GetFiles("./**/*.Tests.csproj").Where(name => !name.ToString().Contains("Atlas")),
135+
action: (BuildConfig buildConfig, Path testProject) =>
128136
{
129137
if (Environment.GetEnvironmentVariable("MONGODB_API_VERSION") != null &&
130138
testProject.ToString().Contains("Legacy"))
@@ -159,14 +167,10 @@ Task("Test")
159167
NoRestore = true,
160168
Configuration = configuration,
161169
Loggers = CreateLoggers(),
162-
ArgumentCustomization = args => args.Append("-- RunConfiguration.TargetPlatform=x64")
170+
ArgumentCustomization = args => args.Append("-- RunConfiguration.TargetPlatform=x64"),
171+
Framework = buildConfig.Framework
163172
};
164-
switch (target.ToLowerInvariant()) // target can be not only moniker related
165-
{
166-
case "testnet472": settings.Framework = "net472"; break;
167-
case "testnetstandard20": settings.Framework = "netcoreapp2.1"; break;
168-
case "testnetstandard21": settings.Framework = "netcoreapp3.1"; break;
169-
}
173+
170174
DotNetCoreTest(
171175
testProject.FullPath,
172176
settings
@@ -315,24 +319,19 @@ Task("TestOcsp")
315319
Task("TestGssapi")
316320
.IsDependentOn("Build")
317321
.DoesForEach(
318-
GetFiles("./**/MongoDB.Driver.Tests.csproj"),
319-
testProject =>
322+
items: GetFiles("./**/MongoDB.Driver.Tests.csproj"),
323+
action: (BuildConfig buildConfig, Path testProject) =>
320324
{
321325
var settings = new DotNetCoreTestSettings
322326
{
323327
NoBuild = true,
324328
NoRestore = true,
325329
Configuration = configuration,
326330
ArgumentCustomization = args => args.Append("-- RunConfiguration.TargetPlatform=x64"),
327-
Filter = "Category=\"GssapiMechanism\""
331+
Filter = "Category=\"GssapiMechanism\"",
332+
Framework = buildConfig.Framework
328333
};
329334

330-
switch (target.ToLowerInvariant()) // target can be not only moniker related
331-
{
332-
case "testgssapinet472": settings.Framework = "net472"; break;
333-
case "testgssapinetstandard20": settings.Framework = "netcoreapp2.1"; break;
334-
case "testgssapinetstandard21": settings.Framework = "netcoreapp3.1"; break;
335-
}
336335
DotNetCoreTest(
337336
testProject.FullPath,
338337
settings
@@ -346,23 +345,19 @@ Task("TestGssapiNetStandard21").IsDependentOn("TestGssapi");
346345
Task("TestServerless")
347346
.IsDependentOn("Build")
348347
.DoesForEach(
349-
GetFiles("./**/MongoDB.Driver.Tests.csproj"),
350-
testProject =>
348+
items: GetFiles("./**/MongoDB.Driver.Tests.csproj"),
349+
action: (BuildConfig buildConfig, Path testProject) =>
351350
{
352351
var settings = new DotNetCoreTestSettings
353352
{
354353
NoBuild = true,
355354
NoRestore = true,
356355
Configuration = configuration,
357356
ArgumentCustomization = args => args.Append("-- RunConfiguration.TargetPlatform=x64"),
358-
Filter = "Category=\"Serverless\""
357+
Filter = "Category=\"Serverless\"",
358+
Framework = buildConfig.Framework
359359
};
360-
switch (target.ToLowerInvariant()) // target can be not only moniker related
361-
{
362-
case "testserverlessnet472": settings.Framework = "net472"; break;
363-
case "testserverlessnetstandard20": settings.Framework = "netcoreapp2.1"; break;
364-
case "testserverlessnetstandard21": settings.Framework = "netcoreapp3.1"; break;
365-
}
360+
366361
DotNetCoreTest(
367362
testProject.FullPath,
368363
settings
@@ -376,24 +371,19 @@ Task("TestServerlessNetStandard21").IsDependentOn("TestServerless");
376371
Task("TestLoadBalanced")
377372
.IsDependentOn("Build")
378373
.DoesForEach(
379-
GetFiles("./**/*.Tests.csproj"),
380-
testProject =>
374+
items: GetFiles("./**/*.Tests.csproj"),
375+
action: (BuildConfig buildConfig, Path testProject) =>
381376
{
382377
var settings = new DotNetCoreTestSettings
383378
{
384379
NoBuild = true,
385380
NoRestore = true,
386381
Configuration = configuration,
387382
ArgumentCustomization = args => args.Append("-- RunConfiguration.TargetPlatform=x64"),
388-
Filter = "Category=\"SupportLoadBalancing\""
383+
Filter = "Category=\"SupportLoadBalancing\"",
384+
Framework = buildConfig.Framework
389385
};
390386

391-
switch (target.ToLowerInvariant()) // target can be not only moniker related
392-
{
393-
case "testloadbalancednetstandard20": settings.Framework = "netcoreapp2.1"; break;
394-
case "testloadbalancednetstandard21": settings.Framework = "netcoreapp3.1"; break;
395-
}
396-
397387
DotNetCoreTest(
398388
testProject.FullPath,
399389
settings
@@ -406,8 +396,8 @@ Task("TestLoadBalancedNetStandard21").IsDependentOn("TestLoadBalanced");
406396
Task("TestCsfleWithMockedKms")
407397
.IsDependentOn("Build")
408398
.DoesForEach(
409-
GetFiles("./**/*.Tests.csproj"),
410-
testProject =>
399+
items: GetFiles("./**/*.Tests.csproj"),
400+
action: (BuildConfig buildConfig, Path testProject) =>
411401
{
412402
var settings = new DotNetCoreTestSettings
413403
{
@@ -416,16 +406,10 @@ Task("TestCsfleWithMockedKms")
416406
Configuration = configuration,
417407
Loggers = CreateLoggers(),
418408
ArgumentCustomization = args => args.Append("-- RunConfiguration.TargetPlatform=x64"),
419-
Filter = "Category=\"CSFLE\""
409+
Filter = "Category=\"CSFLE\"",
410+
Framework = buildConfig.Framework
420411
};
421412

422-
switch (target.ToLowerInvariant()) // target can be not only moniker related
423-
{
424-
case "testcsflewithmockedkmsnet472": settings.Framework = "net472"; break;
425-
case "testcsflewithmockedkmsnetstandard20": settings.Framework = "netcoreapp2.1"; break;
426-
case "testcsflewithmockedkmsnetstandard21": settings.Framework = "netcoreapp3.1"; break;
427-
}
428-
429413
DotNetCoreTest(
430414
testProject.FullPath,
431415
settings
@@ -535,9 +519,11 @@ Task("PackageNugetPackages")
535519
{
536520
Configuration = configuration,
537521
OutputDirectory = artifactsPackagesDirectory,
538-
NoBuild = true,
522+
NoBuild = true, // SetContinuousIntegrationBuild is enabled for nupkg on the Build step
539523
IncludeSymbols = true,
540524
MSBuildSettings = new DotNetCoreMSBuildSettings()
525+
// configure deterministic build for better compatibility with debug symbols (used in Package/Build tasks). Affects: *.snupkg
526+
.SetContinuousIntegrationBuild(continuousIntegrationBuild: true)
541527
.WithProperty("PackageVersion", gitVersion.LegacySemVer)
542528
};
543529
DotNetCorePack(projectPath, settings);
@@ -798,8 +784,36 @@ Task("TestsPackaging")
798784
})
799785
.DeferOnError();
800786

787+
Setup<BuildConfig>(
788+
setupContext =>
789+
{
790+
var lowerTarget = target.ToLowerInvariant();
791+
var framework = lowerTarget switch
792+
{
793+
string s when s.StartsWith("test") && s.EndsWith("net472") => "net472",
794+
string s when s.StartsWith("test") && s.EndsWith("netstandard20") => "netcoreapp2.1",
795+
string s when s.StartsWith("test") && s.EndsWith("netstandard21") => "netcoreapp3.1",
796+
_ => null
797+
};
798+
var isReleaseMode = lowerTarget.StartsWith("package") || lowerTarget == "release";
799+
Console.WriteLine($"Framework: {framework ?? "null (not set)"}, IsReleaseMode: {isReleaseMode}");
800+
return new BuildConfig(isReleaseMode, framework);
801+
});
802+
801803
RunTarget(target);
802804

805+
public class BuildConfig
806+
{
807+
public bool IsReleaseMode { get; }
808+
public string Framework { get; }
809+
810+
public BuildConfig(bool isReleaseMode, string framework)
811+
{
812+
IsReleaseMode = isReleaseMode;
813+
Framework = framework;
814+
}
815+
}
816+
803817
string[] CreateLoggers()
804818
{
805819
var testResultsFile = outputDirectory.Combine("test-results").Combine($"TEST-{target.ToLowerInvariant()}-{DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()}.xml");

build.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env bash
2-
CAKE_VERSION=1.2.0
2+
CAKE_VERSION=1.3.0
33
DOTNET_VERSION=5.0.401

src/MongoDB.Bson/MongoDB.Bson.csproj

+6
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
<PackageTags>mongodb;mongo;nosql;bson</PackageTags>
2828
<PackageLanguage>en-US</PackageLanguage>
2929
<IncludeSymbols>true</IncludeSymbols>
30+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
31+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
3032
</PropertyGroup>
3133

3234
<PropertyGroup Condition="'$(Version)'==''">
@@ -48,6 +50,10 @@
4850
<ItemGroup>
4951
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.6.2" PrivateAssets="All" />
5052
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="5.0.0" />
53+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
54+
<PrivateAssets>all</PrivateAssets>
55+
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
56+
</PackageReference>
5157
</ItemGroup>
5258

5359
<ItemGroup>

src/MongoDB.Driver.Core/MongoDB.Driver.Core.csproj

+6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
<PackageTags>mongodb;mongo;nosql</PackageTags>
2929
<PackageLanguage>en-US</PackageLanguage>
3030
<IncludeSymbols>true</IncludeSymbols>
31+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
32+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
3133
</PropertyGroup>
3234

3335
<ItemGroup>
@@ -178,6 +180,10 @@
178180
<PackageReference Include="MongoDB.Libmongocrypt" Version="1.3.0" />
179181
<PackageReference Include="SharpCompress" Version="0.30.1" />
180182
<PackageReference Include="System.Buffers" Version="4.5.1" />
183+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
184+
<PrivateAssets>all</PrivateAssets>
185+
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
186+
</PackageReference>
181187
</ItemGroup>
182188

183189
<ItemGroup Condition="'$(TargetFramework)' == 'net472'">

src/MongoDB.Driver.GridFS/MongoDB.Driver.GridFS.csproj

+6
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
<PackageTags>mongodb;mongo;nosql;gridfs</PackageTags>
2828
<PackageLanguage>en-US</PackageLanguage>
2929
<IncludeSymbols>true</IncludeSymbols>
30+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
31+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
3032
</PropertyGroup>
3133

3234
<PropertyGroup Condition="'$(Version)'==''">
@@ -47,6 +49,10 @@
4749

4850
<ItemGroup>
4951
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.6.2" PrivateAssets="All" />
52+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
53+
<PrivateAssets>all</PrivateAssets>
54+
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
55+
</PackageReference>
5056
</ItemGroup>
5157

5258
<ItemGroup>

src/MongoDB.Driver.Legacy/MongoDB.Driver.Legacy.csproj

+6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
<PackageTags></PackageTags>
2929
<PackageLanguage>en-US</PackageLanguage>
3030
<IncludeSymbols>true</IncludeSymbols>
31+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
32+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
3133
</PropertyGroup>
3234

3335
<PropertyGroup Condition="'$(Version)'==''">
@@ -36,6 +38,10 @@
3638

3739
<ItemGroup>
3840
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" PrivateAssets="All" Version="1.0.0" />
41+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
42+
<PrivateAssets>all</PrivateAssets>
43+
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
44+
</PackageReference>
3945
</ItemGroup>
4046

4147
<PropertyGroup>

src/MongoDB.Driver/MongoDB.Driver.csproj

+6
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
<PackageTags>mongodb;mongo;nosql</PackageTags>
2828
<PackageLanguage>en-US</PackageLanguage>
2929
<IncludeSymbols>true</IncludeSymbols>
30+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
31+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
3032
</PropertyGroup>
3133

3234
<PropertyGroup Condition="'$(Version)'==''">
@@ -47,6 +49,10 @@
4749
<ItemGroup>
4850
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.6.2" PrivateAssets="All" />
4951
<PackageReference Include="MongoDB.Libmongocrypt" Version="1.3.0" />
52+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
53+
<PrivateAssets>all</PrivateAssets>
54+
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
55+
</PackageReference>
5056
</ItemGroup>
5157

5258
<ItemGroup>

tools/packages.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Cake" version="1.1.0" />
3+
<package id="Cake" version="1.3.0" />
44
</packages>

0 commit comments

Comments
 (0)