Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix 2.x smoke test and installer tests #5994

Merged
merged 8 commits into from
Sep 6, 2024

Conversation

andrewlock
Copy link
Member

Summary of changes

  • Fix nuget/dd-trace installer tests in 2.x branch
  • Pin system tests in 2.x branch

Reason for change

The code we were using to install the "local" builds of the NuGet packages added the local source. However the dotnet restore was looking in both the local and nuget.org sources, and installing the highest version it found. That worked fine until we released 3.2.0 publicly and expect to install 2.59.0 of the local build.

For system-tests, we had to change how things work to support v3 (DataDog/system-tests#2962), but unfortunately that breaks for v2.

Implementation details

Install an explicit version of the tracer. As this version is never in the public nuget.org source but is in the local source, it uses that.

In #5989 I tried a different approach but it just didn't work.

For system tests, just pinning to the specific commit prior to the v3 PR being merged.

Having to thread the version through everywhere is kinda horrible, but is the only thing I could find that works.

Test coverage

Running a full installer run here

Other details

The whole approach should be rewritten to be managed by Nuke tbh, if we ever find time

This PR also contains a backport of

Supersedes

@andrewlock andrewlock added the area:builds project files, build scripts, pipelines, versioning, releases, packages label Sep 5, 2024
@andrewlock andrewlock requested a review from a team as a code owner September 5, 2024 16:36
@datadog-ddstaging
Copy link

datadog-ddstaging bot commented Sep 5, 2024

Datadog Report

Branch report: andrew/ci/fix-installer-tests-2
Commit report: c89b949
Test service: dd-trace-dotnet

✅ 0 Failed, 346729 Passed, 1763 Skipped, 14h 1m 24.27s Total Time

@andrewlock
Copy link
Member Author

andrewlock commented Sep 5, 2024

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing the following branches/commits:

Execution-time benchmarks measure the whole time it takes to execute a program. And are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are shown in red. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5994) - mean (74ms)  : 64, 83
     .   : milestone, 74,
    master - mean (70ms)  : 66, 74
     .   : milestone, 70,

    section CallTarget+Inlining+NGEN
    This PR (5994) - mean (1,040ms)  : 1018, 1063
     .   : milestone, 1040,
    master - mean (1,084ms)  : 1061, 1107
     .   : milestone, 1084,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5994) - mean (110ms)  : 105, 115
     .   : milestone, 110,
    master - mean (109ms)  : 105, 112
     .   : milestone, 109,

    section CallTarget+Inlining+NGEN
    This PR (5994) - mean (727ms)  : 700, 755
     .   : milestone, 727,
    master - mean (763ms)  : 740, 786
     .   : milestone, 763,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5994) - mean (93ms)  : 89, 97
     .   : milestone, 93,
    master - mean (93ms)  : 89, 97
     .   : milestone, 93,

    section CallTarget+Inlining+NGEN
    This PR (5994) - mean (682ms)  : 664, 701
     .   : milestone, 682,
    master - mean (714ms)  : 694, 733
     .   : milestone, 714,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5994) - mean (191ms)  : 187, 194
     .   : milestone, 191,
    master - mean (191ms)  : 188, 195
     .   : milestone, 191,

    section CallTarget+Inlining+NGEN
    This PR (5994) - mean (1,118ms)  : 1098, 1138
     .   : milestone, 1118,
    master - mean (1,165ms)  : 1136, 1193
     .   : milestone, 1165,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5994) - mean (275ms)  : 271, 280
     .   : milestone, 275,
    master - mean (275ms)  : 271, 279
     .   : milestone, 275,

    section CallTarget+Inlining+NGEN
    This PR (5994) - mean (885ms)  : 859, 912
     .   : milestone, 885,
    master - mean (923ms)  : 898, 948
     .   : milestone, 923,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5994) - mean (265ms)  : 261, 269
     .   : milestone, 265,
    master - mean (265ms)  : 260, 270
     .   : milestone, 265,

    section CallTarget+Inlining+NGEN
    This PR (5994) - mean (869ms)  : 841, 897
     .   : milestone, 869,
    master - mean (906ms)  : 884, 929
     .   : milestone, 906,

Loading

@andrewlock
Copy link
Member Author

Benchmarks Report for tracer 🐌

Benchmarks for #5994 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.130
  • 2 benchmarks are slower, with geometric mean 1.171
  • All benchmarks have the same allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 7.84μs 44.3ns 319ns 0.0149 0.00747 0 5.43 KB
master StartStopWithChild netcoreapp3.1 10μs 55.7ns 348ns 0.0145 0.00482 0 5.62 KB
master StartStopWithChild net472 16μs 51.7ns 200ns 1.01 0.288 0.0881 6.06 KB
#5994 StartStopWithChild net6.0 7.79μs 42.4ns 236ns 0.0154 0.00772 0 5.42 KB
#5994 StartStopWithChild netcoreapp3.1 9.77μs 43.6ns 169ns 0.0239 0.0143 0.00478 5.62 KB
#5994 StartStopWithChild net472 16.5μs 54.9ns 213ns 1.02 0.307 0.0971 6.07 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 499μs 261ns 1.01μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 638μs 270ns 1.05μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 850μs 595ns 2.31μs 0.422 0 0 3.3 KB
#5994 WriteAndFlushEnrichedTraces net6.0 461μs 321ns 1.24μs 0 0 0 2.7 KB
#5994 WriteAndFlushEnrichedTraces netcoreapp3.1 647μs 264ns 1.02μs 0 0 0 2.7 KB
#5994 WriteAndFlushEnrichedTraces net472 840μs 524ns 1.96μs 0.419 0 0 3.3 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 224μs 2.24μs 22.2μs 0.205 0 0 18.45 KB
master SendRequest netcoreapp3.1 235μs 1.43μs 14.1μs 0.254 0 0 20.61 KB
master SendRequest net472 0.00254ns 0.00105ns 0.00408ns 0 0 0 0 b
#5994 SendRequest net6.0 202μs 1.16μs 9.48μs 0.194 0 0 18.45 KB
#5994 SendRequest netcoreapp3.1 224μs 1.24μs 8.53μs 0.25 0 0 20.61 KB
#5994 SendRequest net472 0.00153ns 0.000987ns 0.00382ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 584μs 2.42μs 9.05μs 0.571 0 0 41.69 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 686μs 3.82μs 24.2μs 0.342 0 0 41.64 KB
master WriteAndFlushEnrichedTraces net472 877μs 4.1μs 15.9μs 8.19 2.59 0.431 53.32 KB
#5994 WriteAndFlushEnrichedTraces net6.0 566μs 2.96μs 14.2μs 0.579 0 0 41.56 KB
#5994 WriteAndFlushEnrichedTraces netcoreapp3.1 678μs 3μs 11.6μs 0.327 0 0 41.76 KB
#5994 WriteAndFlushEnrichedTraces net472 899μs 4.35μs 17.9μs 8.54 2.25 0.45 53.31 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.25μs 1.4ns 5.41ns 0.0143 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 1.69μs 1.94ns 7.27ns 0.0135 0 0 1.02 KB
master ExecuteNonQuery net472 2.01μs 1.21ns 4.53ns 0.156 0 0 987 B
#5994 ExecuteNonQuery net6.0 1.31μs 1.71ns 6.64ns 0.0144 0 0 1.02 KB
#5994 ExecuteNonQuery netcoreapp3.1 1.72μs 1.06ns 3.98ns 0.0138 0 0 1.02 KB
#5994 ExecuteNonQuery net472 2.03μs 2.41ns 9.03ns 0.156 0 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.19μs 0.623ns 2.16ns 0.0137 0 0 976 B
master CallElasticsearch netcoreapp3.1 1.59μs 0.569ns 2.13ns 0.0127 0 0 976 B
master CallElasticsearch net472 2.41μs 1.37ns 5.31ns 0.158 0 0 995 B
master CallElasticsearchAsync net6.0 1.16μs 0.644ns 2.49ns 0.0134 0 0 952 B
master CallElasticsearchAsync netcoreapp3.1 1.6μs 0.79ns 2.95ns 0.0136 0 0 1.02 KB
master CallElasticsearchAsync net472 2.61μs 1.44ns 5.57ns 0.166 0 0 1.05 KB
#5994 CallElasticsearch net6.0 1.11μs 1.12ns 4.18ns 0.0134 0 0 976 B
#5994 CallElasticsearch netcoreapp3.1 1.52μs 0.622ns 2.33ns 0.0128 0 0 976 B
#5994 CallElasticsearch net472 2.44μs 0.784ns 2.83ns 0.158 0 0 995 B
#5994 CallElasticsearchAsync net6.0 1.22μs 0.564ns 2.11ns 0.0129 0 0 952 B
#5994 CallElasticsearchAsync netcoreapp3.1 1.61μs 0.852ns 3.3ns 0.0136 0 0 1.02 KB
#5994 CallElasticsearchAsync net472 2.63μs 1.23ns 4.44ns 0.166 0 0 1.05 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.2μs 0.951ns 3.68ns 0.0132 0 0 952 B
master ExecuteAsync netcoreapp3.1 1.59μs 0.906ns 3.51ns 0.0128 0 0 952 B
master ExecuteAsync net472 1.76μs 0.73ns 2.83ns 0.145 0 0 915 B
#5994 ExecuteAsync net6.0 1.21μs 1.36ns 5.26ns 0.0132 0 0 952 B
#5994 ExecuteAsync netcoreapp3.1 1.57μs 0.975ns 3.78ns 0.0126 0 0 952 B
#5994 ExecuteAsync net472 1.73μs 0.726ns 2.81ns 0.145 0 0 915 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 4.18μs 3ns 10.8ns 0.0313 0 0 2.22 KB
master SendAsync netcoreapp3.1 5.06μs 2.06ns 7.96ns 0.0355 0 0 2.76 KB
master SendAsync net472 7.88μs 2.89ns 10.8ns 0.497 0 0 3.15 KB
#5994 SendAsync net6.0 4.21μs 2.9ns 10.8ns 0.0314 0 0 2.22 KB
#5994 SendAsync netcoreapp3.1 5.1μs 2.6ns 9.73ns 0.0357 0 0 2.76 KB
#5994 SendAsync net472 7.73μs 5.84ns 21.8ns 0.497 0 0 3.15 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 1.48μs 0.457ns 1.65ns 0.0231 0 0 1.64 KB
master EnrichedLog netcoreapp3.1 2.2μs 5.09ns 18.4ns 0.0217 0 0 1.64 KB
master EnrichedLog net472 2.62μs 1.34ns 5.02ns 0.249 0 0 1.57 KB
#5994 EnrichedLog net6.0 1.48μs 0.95ns 3.56ns 0.023 0 0 1.64 KB
#5994 EnrichedLog netcoreapp3.1 2.23μs 1ns 3.61ns 0.0225 0 0 1.64 KB
#5994 EnrichedLog net472 2.74μs 2.82ns 10.9ns 0.249 0 0 1.57 KB
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 116μs 188ns 730ns 0 0 0 4.28 KB
master EnrichedLog netcoreapp3.1 120μs 168ns 649ns 0.06 0 0 4.28 KB
master EnrichedLog net472 149μs 153ns 594ns 0.668 0.223 0 4.46 KB
#5994 EnrichedLog net6.0 116μs 242ns 938ns 0.0573 0 0 4.28 KB
#5994 EnrichedLog netcoreapp3.1 122μs 297ns 1.15μs 0.0596 0 0 4.28 KB
#5994 EnrichedLog net472 150μs 288ns 1.12μs 0.679 0.226 0 4.46 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 3.01μs 2.55ns 9.88ns 0.0315 0 0 2.2 KB
master EnrichedLog netcoreapp3.1 4.09μs 1.11ns 4.28ns 0.0287 0 0 2.2 KB
master EnrichedLog net472 4.85μs 1.88ns 7.27ns 0.319 0 0 2.02 KB
#5994 EnrichedLog net6.0 3.14μs 1.11ns 4.3ns 0.0299 0 0 2.2 KB
#5994 EnrichedLog netcoreapp3.1 4.07μs 2.52ns 9.76ns 0.0288 0 0 2.2 KB
#5994 EnrichedLog net472 4.79μs 2.46ns 9.52ns 0.32 0 0 2.02 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.39μs 0.591ns 2.29ns 0.0159 0 0 1.14 KB
master SendReceive netcoreapp3.1 1.7μs 1.25ns 4.82ns 0.0153 0 0 1.14 KB
master SendReceive net472 2.16μs 1.48ns 5.74ns 0.183 0.00107 0 1.16 KB
#5994 SendReceive net6.0 1.3μs 0.606ns 2.35ns 0.0162 0 0 1.14 KB
#5994 SendReceive netcoreapp3.1 1.79μs 2.12ns 7.93ns 0.0151 0 0 1.14 KB
#5994 SendReceive net472 2.14μs 2.05ns 7.69ns 0.183 0 0 1.16 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.91μs 0.892ns 3.46ns 0.0219 0 0 1.6 KB
master EnrichedLog netcoreapp3.1 3.94μs 2.89ns 11.2ns 0.0216 0 0 1.65 KB
master EnrichedLog net472 4.43μs 0.962ns 3.33ns 0.323 0 0 2.04 KB
#5994 EnrichedLog net6.0 2.8μs 0.846ns 3.28ns 0.0224 0 0 1.6 KB
#5994 EnrichedLog netcoreapp3.1 3.95μs 1.31ns 4.9ns 0.0216 0 0 1.65 KB
#5994 EnrichedLog net472 4.41μs 1.77ns 6.85ns 0.322 0 0 2.04 KB
Benchmarks.Trace.SpanBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #5994

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0 1.191 400.04 476.64
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net472 1.151 622.39 716.60

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 400ns 0.142ns 0.532ns 0.00805 0 0 576 B
master StartFinishSpan netcoreapp3.1 588ns 0.562ns 2.18ns 0.00787 0 0 576 B
master StartFinishSpan net472 623ns 1.11ns 4.31ns 0.0916 0 0 578 B
master StartFinishScope net6.0 497ns 0.419ns 1.62ns 0.00967 0 0 696 B
master StartFinishScope netcoreapp3.1 731ns 1.96ns 7.61ns 0.00952 0 0 696 B
master StartFinishScope net472 884ns 0.993ns 3.84ns 0.104 0 0 658 B
#5994 StartFinishSpan net6.0 476ns 0.174ns 0.672ns 0.00815 0 0 576 B
#5994 StartFinishSpan netcoreapp3.1 602ns 0.256ns 0.992ns 0.00799 0 0 576 B
#5994 StartFinishSpan net472 715ns 1.79ns 6.92ns 0.0916 0 0 578 B
#5994 StartFinishScope net6.0 490ns 0.212ns 0.823ns 0.00987 0 0 696 B
#5994 StartFinishScope netcoreapp3.1 743ns 0.76ns 2.94ns 0.00929 0 0 696 B
#5994 StartFinishScope net472 849ns 1.23ns 4.77ns 0.105 0 0 658 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #5994

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net6.0 1.133 748.23 660.22
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑netcoreapp3.1 1.126 998.86 887.05

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 748ns 0.702ns 2.72ns 0.00971 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1E+03ns 1.28ns 4.97ns 0.00912 0 0 696 B
master RunOnMethodBegin net472 1.11μs 1.33ns 5.14ns 0.104 0 0 658 B
#5994 RunOnMethodBegin net6.0 660ns 0.593ns 2.3ns 0.00982 0 0 696 B
#5994 RunOnMethodBegin netcoreapp3.1 887ns 0.32ns 1.15ns 0.00927 0 0 696 B
#5994 RunOnMethodBegin net472 1.08μs 0.587ns 2.2ns 0.104 0 0 658 B

@andrewlock andrewlock force-pushed the andrew/ci/fix-installer-tests-2 branch from 116c3b4 to e97676d Compare September 6, 2024 10:40
@andrewlock andrewlock force-pushed the andrew/ci/fix-installer-tests-2 branch from e97676d to bc31e5a Compare September 6, 2024 11:01
@andrewlock andrewlock force-pushed the andrew/ci/fix-installer-tests-2 branch from e7e2c65 to c89b949 Compare September 6, 2024 13:14
@andrewlock andrewlock merged commit f921891 into release/2.x Sep 6, 2024
64 of 68 checks passed
@andrewlock andrewlock deleted the andrew/ci/fix-installer-tests-2 branch September 6, 2024 14:47
andrewlock added a commit that referenced this pull request Sep 6, 2024
- Fix nuget/dd-trace installer tests for the future

The code we were using to install the "local" builds of the NuGet
packages added the local source. However the dotnet restore was looking in both the local and nuget.org sources, and installing the highest version it found. That worked fine until we released 3.2.0 publicly and expect to install 2.59.0 of the local build.

Install an explicit version of the tracer. As this version is never in
the public nuget.org source but _is_ in the local source, it uses that.

Having to thread the version through everywhere is kinda horrible, but
is the only thing I could find that works.

The whole approach should be rewritten to be managed by Nuke tbh, if we ever find time
andrewlock added a commit that referenced this pull request Sep 11, 2024
## Summary of changes

- Fix nuget/dd-trace installer tests in 2.x branch

## Reason for change

The code we were using to install the "local" builds of the NuGet
packages added the local source. However the dotnet restore was looking
in both the local and nuget.org sources, and installing the highest
version it found. That worked fine until we released 3.2.0 publicly and
expect to install 2.59.0 of the local build.

## Implementation details

Install an explicit version of the tracer. As this version is never in
the public nuget.org source but _is_ in the local source, it uses that.

> In #5989 I tried a
different approach but it just didn't work.

Having to thread the version through everywhere is kinda horrible, but
is the only thing I could find that works.

## Test coverage

Will run a [full installer
test](https://dev.azure.com/datadoghq/dd-trace-dotnet/_build/results?buildId=163706&view=results)

## Other details

The whole approach should be rewritten to be managed by Nuke tbh, if we
ever find time

This PR is a "forward port" of 
- #5994

(the issue was exhibited on the 2.x branch, so this is preemptive for
the future)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:builds project files, build scripts, pipelines, versioning, releases, packages
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants