Compare commits

...

853 Commits

Author SHA1 Message Date
Martin Costello f153e130b4
[Infra] Fix issue templates (#6455)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-09-04 10:06:15 -07:00
dependabot[bot] b659171101
Bump github/codeql-action from 3.29.11 to 3.30.0 (#6460)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-03 07:21:26 -07:00
Martin Costello 2a9c406b6d
[Infra] Simplify span slicing (#6456) 2025-08-28 12:14:14 -07:00
Martin Costello bab4b954cd
[OpenTelemetry] Fix assertion failures in debug (#6304)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-28 09:10:46 -07:00
OpenTelemetry Bot cd522d9081
Add subscript to issue templates (#6423)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-26 11:46:52 -07:00
Martin Costello 8321588b28
[infra] Use Artifacts Output layout (#6301)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-25 13:44:57 -07:00
dependabot[bot] 62162211ad
Bump github/codeql-action from 3.29.10 to 3.29.11 (#6450)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-25 09:02:49 -07:00
Martin Costello 7a4643a829
[OTLP] Set TE header for gRPC calls (#6449) 2025-08-22 08:39:37 -07:00
dependabot[bot] 84b3ca4e11
Bump codecov/codecov-action from 5.4.3 to 5.5.0 (#6448)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 11:59:43 -07:00
dependabot[bot] 0ebe718c70
Bump github/codeql-action from 3.29.6 to 3.29.10 (#6445)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-08-19 10:38:26 -07:00
dependabot[bot] a871f0fc68
Bump github/codeql-action from 3.29.6 to 3.29.9 (#6436)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-18 10:41:17 -07:00
dependabot[bot] 44f46b1656
Bump actions/checkout from 4.2.2 to 5.0.0 (#6437)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-18 10:01:09 -07:00
Martin Costello ca892e44a9
[Infra] Pin aiohttp (#6442)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-18 09:46:03 -07:00
dependabot[bot] a067b8f437
Bump ubuntu from `a08e551` to `7c06e91` in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6438)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-18 09:27:49 -07:00
dependabot[bot] 2e73a2c468
Bump dotnet/aspnet from `6d8901f` to `6d40ae7` in /examples/MicroserviceExample/WebApi (#6439)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-08-18 09:04:16 -07:00
dependabot[bot] 4bab51a01a
Bump dotnet/sdk from `45e41fe` to `7fd287c` in /examples/MicroserviceExample/WebApi (#6440)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-15 17:16:31 -07:00
dependabot[bot] 81f29e6068
Bump github/codeql-action from 3.29.5 to 3.29.6 (#6433)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-07 21:41:44 -07:00
dependabot[bot] 583166cc71
Bump dotnet/aspnet from 8.0.18 to 8.0.19 in /examples/MicroserviceExample/WebApi (#6429)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: martincostello <martin@martincostello.com>
2025-08-07 20:59:46 -07:00
dependabot[bot] e2fdf99f52
Bump dotnet/sdk from 8.0.412 to 8.0.413 in /examples/MicroserviceExample/WebApi (#6428)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-06 22:48:22 -07:00
Cijo Thomas d2f8e54bb9
Self-diagnostics - support formatted message for better human readability (#6411)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-08-05 10:25:11 -07:00
dependabot[bot] 27234c2a14
Bump github/codeql-action from 3.29.4 to 3.29.5 (#6419)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-31 02:25:38 -07:00
Martin Costello 6b58da89e2
[Infra] Bump Cosign to v2.5.3 (#6417) 2025-07-30 10:03:29 -07:00
Martin Costello accfea63fe
[Infra] Improve CodeQL analysis (#6415)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-30 08:33:23 -07:00
Martin Costello 570a6fa687
[OTLP] Dispose exporter if setup fails (#6398)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-30 06:40:11 -07:00
Martin Costello 4dc60007ca
[Infra] Exclude keep-open label from stale (#6413)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-30 05:41:00 -07:00
Piotr Kiełkowicz e67ecf8164
[docs] Contributing - reporting bug/feature requests (#6414) 2025-07-30 05:26:53 -07:00
Piotr Kiełkowicz 98a8d38e8a
[infra] use env. var. to read github body comment (#6409) 2025-07-25 08:26:46 -07:00
dependabot[bot] e5b9a9a3db
Bump dotnet-sdk from 9.0.302 to 9.0.303 (#6402)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-07-24 22:53:27 -07:00
OpenTelemetry Bot be60150962
[infra] Add minimum token permissions for all github workflow files (#6357)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-24 03:50:45 -07:00
dependabot[bot] 7f111ea831
Bump dotnet/aspnet from `35095f3` to `fbc9110` in /examples/MicroserviceExample/WorkerService (#6399)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-24 01:49:19 -07:00
dependabot[bot] a8ef3e1888
Bump dotnet/sdk from `e6748a3` to `4763fe4` in /examples/MicroserviceExample/WorkerService (#6400)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-24 01:34:33 -07:00
dependabot[bot] 9480cb3e9a
Bump github/codeql-action from 3.29.3 to 3.29.4 (#6401)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-24 01:33:27 -07:00
dependabot[bot] b921486b67
Bump ubuntu from `c4570d2` to `a08e551` in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6403)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-24 01:17:54 -07:00
dependabot[bot] 5ff15e58c1
Bump dotnet/sdk from `e6748a3` to `4763fe4` in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6404)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-24 00:51:20 -07:00
dependabot[bot] 872ab2b80c
Bump dotnet/sdk from `e6748a3` to `4763fe4` in /test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest (#6405)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-24 00:42:27 -07:00
dependabot[bot] 21af34df63
Bump dotnet/sdk from `3da7c41` to `3da7c41` in /examples/MicroserviceExample/WebApi (#6406)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-24 00:32:51 -07:00
dependabot[bot] 2b20ffc1ed
Bump dotnet/aspnet from `35095f3` to `fbc9110` in /examples/MicroserviceExample/WebApi (#6407)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-23 22:38:36 -07:00
Paulo Morgado 7ccfda242a
Refactor serialization error handling and buffer logic (#6392) 2025-07-22 13:07:42 -07:00
dependabot[bot] 6f805344dd
Bump github/codeql-action from 3.29.2 to 3.29.3 (#6393)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 19:37:30 -07:00
Martin Costello d8dfaa84a3
[OTLP] Refactor ProtobufSerializer.WriteReservedLength() to improve performance (#6367) 2025-07-21 06:16:07 -07:00
Martin Costello 361a1655b9
[Infra] Remove AssemblyInfo files (#6382)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-21 05:55:14 -07:00
Cijo Thomas a2679d5a6d
Improve Console Metric Exporter Output (#6388)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-07-21 03:50:00 -07:00
Cijo Thomas 0ad46df6cf
Add Martin Costello as Approver (#6383)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-07-19 23:19:19 -07:00
dependabot[bot] 393b5e04f3
Bump sigstore/cosign-installer from 3.9.1 to 3.9.2 (#6390)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-19 22:34:48 -07:00
dependabot[bot] 5963d1d710
Bump ubuntu from `440dcf6` to `c4570d2` in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6381)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-17 09:37:42 -07:00
Cijo Thomas afe1a5bb11
Add explicit warning on ConsoleExporter (#6385)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-17 09:28:26 -07:00
Cijo Thomas 4e9e37fa35
Slight improvement to readability to Metric ConsoleExporter (#6384) 2025-07-17 09:23:15 -07:00
Martin Costello f8dc06acf2
Remove redundant test (#6369)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-14 17:03:46 -07:00
dependabot[bot] 869d9475ef
Bump dotnet-sdk from 9.0.300 to 9.0.302 (#6374)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-14 16:53:18 -07:00
dependabot[bot] 12b994ceda
Bump dotnet/sdk from 8.0.411 to 8.0.412 in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6370)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-14 14:44:59 -07:00
dependabot[bot] 5a89e2cfe8
Bump dotnet/aspnet from 8.0.17 to 8.0.18 in /examples/MicroserviceExample/WorkerService (#6371)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-14 14:18:22 -07:00
dependabot[bot] cd796552ef
Bump dotnet/sdk from 8.0.411 to 8.0.412 in /examples/MicroserviceExample/WorkerService (#6372)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-14 14:17:15 -07:00
dependabot[bot] 42fe0738cb
Bump dotnet/sdk from 8.0.411 to 8.0.412 in /test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest (#6373)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-14 13:02:30 -07:00
dependabot[bot] 796be6b4a9
Bump dotnet/sdk from 8.0.411 to 8.0.412 in /examples/MicroserviceExample/WebApi (#6375)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-14 11:28:51 -07:00
dependabot[bot] e58ee78c2d
Bump dotnet/aspnet from 8.0.17 to 8.0.18 in /examples/MicroserviceExample/WebApi (#6376)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 11:27:54 -07:00
dependabot[bot] 309ed2e7a8
Bump github/codeql-action from 3.29.1 to 3.29.2 (#6359)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-03 16:57:29 -07:00
dependabot[bot] 04a48b6033
Bump ubuntu from `b59d215` to `440dcf6` in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6360)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-03 16:46:43 -07:00
dependabot[bot] 4eb55be9a9
Bump dotnet/sdk from `e6a5a8d` to `57c3bf9` in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6361)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-03 16:43:59 -07:00
dependabot[bot] 19afd63555
Bump dotnet/aspnet from `d5c0d91` to `68669af` in /examples/MicroserviceExample/WebApi (#6362)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-03 16:30:10 -07:00
dependabot[bot] b76121e858
Bump dotnet/sdk from `e6a5a8d` to `57c3bf9` in /examples/MicroserviceExample/WebApi (#6363)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-03 16:28:45 -07:00
dependabot[bot] b83bc6800e
Bump dotnet/sdk from `e6a5a8d` to `57c3bf9` in /test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest (#6364)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-03 16:26:36 -07:00
dependabot[bot] 7ed91a108f
Bump dotnet/aspnet from `d5c0d91` to `68669af` in /examples/MicroserviceExample/WorkerService (#6365)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-07-03 16:06:57 -07:00
dependabot[bot] 5acf77cf04
Bump dotnet/sdk from `e6a5a8d` to `57c3bf9` in /examples/MicroserviceExample/WorkerService (#6366)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-03 15:56:00 -07:00
dependabot[bot] 1479b236f7
Bump github/codeql-action from 3.29.0 to 3.29.1 (#6356)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-06-30 16:10:52 -07:00
OpenTelemetry Bot 05f74a4c36
Fix outdated community membership link (#6355)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
2025-06-30 11:37:05 -07:00
Julius Koval a2bb510f79
Adding EventName to LogRecord (#6306)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-06-26 12:41:08 -07:00
Piotr Kiełkowicz 4f51654047
[repo] CLOMonitor - disable Artifact hub check (#6354)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-06-26 12:08:50 -07:00
Piotr Kiełkowicz bd434cc9ae
[repo] Enable analysis globally (#6344) 2025-06-26 12:05:16 -07:00
OpenTelemetry Bot e76e0f9f44
Update community member listings (#6351)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
2025-06-25 21:54:00 -07:00
Piotr Kiełkowicz 3401b31085
[docs] Best practices badges (#6349) 2025-06-25 10:06:16 -07:00
dependabot[bot] 5f9b011c0f
Bump sigstore/cosign-installer from 3.9.0 to 3.9.1 (#6346)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-06-24 00:58:52 -07:00
Alexander Nikolaev e9cfc33fad
Add the default ports for Tempo in the example. (#6345) 2025-06-24 00:43:20 -07:00
Martin Costello 154a6dc10b
[W3C] Refactor W3C integration tests (#6328) 2025-06-19 08:49:07 -07:00
dependabot[bot] 21993b01a3
Bump dotnet/sdk from 8.0.410 to 8.0.411 in /examples/MicroserviceExample/WorkerService (#6336)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 11:24:20 -07:00
dependabot[bot] d324abb29d
Bump dotnet/sdk from 8.0.410 to 8.0.411 in /test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest (#6337)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 11:23:43 -07:00
dependabot[bot] 7cad682002
Bump dotnet/aspnet from 8.0.16 to 8.0.17 in /examples/MicroserviceExample/WebApi (#6338)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 11:23:23 -07:00
dependabot[bot] 52edab3c8c
Bump dotnet/sdk from 8.0.410 to 8.0.411 in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6339)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-06-18 11:23:00 -07:00
dependabot[bot] eb0ddd1273
Bump ubuntu from `7229784` to `b59d215` in /test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests (#6322)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-06-18 06:16:29 -07:00
Martin Costello dde8f4024b
[Infra] Avoid test flakiness (#6329) 2025-06-18 05:59:15 -07:00
Martin Costello e21e9ccd24
[Infra] Remove Source Link package (#6331)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-06-18 04:29:44 -07:00
dependabot[bot] a10f955cd9
Bump sigstore/cosign-installer from 3.8.2 to 3.9.0 (#6335)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-06-18 04:03:25 -07:00
Martin Costello 6c826c7176
[Infra] Remove redundant item (#6330)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-06-18 03:11:11 -07:00
dependabot[bot] 260e25271d
Bump github/codeql-action from 3.28.19 to 3.29.0 (#6318)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-06-18 02:30:05 -07:00
dependabot[bot] f067d0db96
Bump dotnet/aspnet from 8.0.16 to 8.0.17 in /examples/MicroserviceExample/WorkerService (#6340)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 14:26:05 -07:00
dependabot[bot] ed26d99bf5
Bump dotnet/sdk from 8.0.410 to 8.0.411 in /examples/MicroserviceExample/WebApi (#6341)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 14:25:07 -07:00
Martin Costello 78a71ebbf7
[Infra] Ignore major/minor Docker updates (#6326) 2025-06-17 14:21:26 -07:00
Martin Costello 3f86f47ac3
[Infra] Ensure .NET 8 is installed (#6313) 2025-06-11 16:32:11 -07:00
Martin Costello 4e84aa72dd
[Infra] Update Dockerfiles with dependabot (#6315) 2025-06-11 16:30:26 -07:00
Martin Costello b552c7f9bf
[w3c] Remove redundant RUN command (#6312) 2025-06-09 16:59:45 -07:00
Martin Costello 74352b8769
[infra] Use PublicApiAnalyzers from NuGet.org (#6311)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-06-09 11:36:00 -07:00
Martin Costello 1f9fa9ffe7
[infra] Remove obsolete compose attribute (#6310) 2025-06-09 11:27:01 -07:00
Valerio Arena 77e73ced3c
Introducing AddLink method in TelemetrySpan (#6305)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-06-09 10:22:08 -07:00
Martin Costello 15446598f6
[infra] Avoid port conflicts in tests (#6308)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-06-07 17:21:38 -07:00
Martin Costello ec554f9eb0
[infra] Fix line endings for shell scripts (#6309) 2025-06-07 14:10:57 -07:00
Martin Costello 9ecf6b77bc
[OpenTelemetry] Fix CA1305 warning (#6299)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-06-03 21:24:57 -07:00
Martin Costello fb4bb17b34
[infra] Ensure test-threadSafety.ps1 fails (#6302)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-06-03 16:30:26 -07:00
dependabot[bot] b884697d47
Bump github/codeql-action from 3.28.18 to 3.28.19 (#6303)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-03 13:50:05 -07:00
Rajkumar Rangaraj d5f6732118
Update Mothra affiliation (#6298) 2025-06-02 14:07:08 -07:00
dependabot[bot] 1065e43060
Bump ossf/scorecard-action from 2.4.1 to 2.4.2 (#6297)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-30 11:54:22 -07:00
dependabot[bot] 0ad6a95bf2
Bump dotnet-sdk from 9.0.203 to 9.0.300 (#6283)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-30 09:38:20 -07:00
Piotr Kiełkowicz 3c9beb896b
[OpenTelemetry] enable analysis - part 2 - final (#6279)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-29 15:03:40 -07:00
Simão Ribeiro 7abe983ac0
Add ConnectionRefused as transient network error so gRPC retry works when collector is down (#6259)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-27 22:39:49 -07:00
dependabot[bot] 844e148f68
Bump DavidAnson/markdownlint-cli2-action from 19.1.0 to 20.0.0 (#6285)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-27 22:12:04 -07:00
StepSecurity Bot 3f9b636f06
[StepSecurity] ci: Harden GitHub Actions (#6286)
Signed-off-by: StepSecurity Bot <bot@stepsecurity.io>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2025-05-27 21:40:26 -07:00
dependabot[bot] 6209ed8f80
Bump codecov/test-results-action from 1.1.0 to 1.1.1 (#6293)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-25 12:21:56 -07:00
Yevhenii Solomchenko 60a3839591
[Exporter.Zipkin] Update remote endpoint and remove the peer.service attribute (#6191)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-05-23 11:41:27 -07:00
Ivan Cherkashnev 805dd6b4ab
Clean up infinite explicit bucket bounds to prevent duplicate histogram bucket output (#6290)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-05-20 14:29:45 -07:00
dependabot[bot] 6828791c61
Bump github/codeql-action from 3.28.17 to 3.28.18 (#6288)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-19 15:15:12 -07:00
dependabot[bot] c638ef67cf
Bump codecov/codecov-action from 5.4.2 to 5.4.3 (#6289)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 14:46:21 -07:00
dependabot[bot] 6420be005b
Bump fossas/fossa-action from 1.6.0 to 1.7.0 (#6284)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-16 10:25:09 -07:00
彭伟 ee720ba3a3
[otlp] Correct initial write position for gRPC in .NET Framework OTLP exporters (#6280)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-15 21:33:39 -07:00
Piotr Kiełkowicz 8c1e63894f
[OpenTelemetry] enable analysis - part 1 (#6263) 2025-05-07 22:22:15 -07:00
dependabot[bot] 9c9d8585f3
Bump github/codeql-action from 3.28.16 to 3.28.17 (#6271)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-07 16:14:08 -07:00
Martin Costello c4268fe92b
[infra] Add GitHub Actions test logger (#6272)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-05-07 15:55:11 -07:00
OpenTelemetry Bot e371d7f02d
[release] Prepare release coreunstable-1.12.0-beta.1 (#6276) 2025-05-06 16:12:11 -07:00
Piotr Kiełkowicz 24a13ab91c
[OpenTelemetry.Tests] enable analysis (#6265) 2025-04-30 11:32:32 -07:00
OpenTelemetry Bot 2ec8931fc8
[release] Core stable release 1.12.0 updates (#6269) 2025-04-29 21:56:04 -07:00
OpenTelemetry Bot a67acd87d5
[release] Prepare release core-1.12.0 (#6268)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-29 13:45:34 -07:00
Piotr Kiełkowicz ceebd456f1
[Exporter.OpenTelemetry.Protocol.Tests] enable analysis (#6264) 2025-04-25 11:55:09 -07:00
Piotr Kiełkowicz 13ed63a88c
[Exporter.OpenTelemetryProtocol] enable analysis (#6251) 2025-04-24 11:49:15 -07:00
dependabot[bot] 0252f6ca0d
Bump sigstore/cosign-installer from 3.8.1 to 3.8.2 (#6261)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-23 21:34:14 -07:00
dependabot[bot] 4792d020f8
Bump github/codeql-action from 3.28.15 to 3.28.16 (#6260)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-23 18:44:13 -07:00
Piotr Kiełkowicz d5f44d0ae5
[Tests.Stress*] enable analysis (#6253) 2025-04-23 16:15:16 -07:00
Piotr Kiełkowicz fd1b5afd08
[Benchmarks] enable analysis (#6254)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-23 11:32:27 -07:00
Martin Costello 177596891a
Publish NuGet packages as GitHub Artifacts (#6255) 2025-04-22 14:03:09 -07:00
dependabot[bot] 1edcddbe00
Bump codecov/codecov-action from 5.4.0 to 5.4.2 (#6252)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-04-16 09:41:25 -07:00
Piotr Kiełkowicz 31fb3bdf35
[OpenTelemetry.Api.Tests] enable analysis (#6246)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-14 13:46:46 -07:00
Piotr Kiełkowicz ea70cd550d
[Exporter.OpenTelemetry.Protocol] update PersistentStorage (#6249) 2025-04-14 11:38:20 -07:00
dependabot[bot] ab32e39c14
Bump dotnet-sdk from 9.0.202 to 9.0.203 (#6243)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-04-10 12:20:37 -07:00
Yevhenii Solomchenko fbbe939dd4
[Examples.Microservice] migrate to Minimal Hosting Model (#6247) 2025-04-10 11:19:39 -07:00
Piotr Kiełkowicz 7c0eab2f42
[TestApp.AspNetCore] enable analysis (#6240)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-09 15:22:40 -07:00
Piotr Kiełkowicz 98b3986620
[OpenTelemetry.Api] enable analysis (#6206)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2025-04-09 13:43:15 -07:00
dependabot[bot] bb8abee277
Bump github/codeql-action from 3.28.14 to 3.28.15 (#6239)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-09 10:59:13 -07:00
Piotr Kiełkowicz ff009146a9
[Example/WorkerService] enable analysis (#6220)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-09 09:17:08 -07:00
Rajkumar Rangaraj aa73ce3aaf
[otlp] Remove Grpc.Core support for .NET Framework and .NET Standard 2.0 in OTLP exporter (#6229) 2025-04-08 12:09:30 -07:00
Piotr Kiełkowicz f183a6a11e
[Examples.Console] enable analysis (#6221)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-08 11:30:42 -07:00
Yevhenii Solomchenko 72f7348b57
[Examples.GrpcService] migrate to Minimal Hosting Model (#6225)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-08 09:54:20 -07:00
Piotr Kiełkowicz 6e6ce171e8
[repo] OpenSSF Scorecard - pin docker images to exact digest (#6230)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-07 16:49:40 -07:00
dependabot[bot] 04dd5d149c
Bump github/codeql-action from 3.28.12 to 3.28.14 (#6236)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-07 13:25:38 -07:00
Jean Bisutti 06ef55786a
Remove unused import (#6232)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-04 11:37:01 -07:00
Yevhenii Solomchenko 20988528fd
[OpenTelemetry] Improve memory efficiency in Dispose (#6212)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-04-04 10:56:59 -07:00
xiang17 180c9e84db
[Exporter.Console] Update otel-collector version to be compatible with debug exporter (#6223) 2025-04-02 16:03:53 -07:00
OpenTelemetry Bot 528d642b44
Add ossf-scorecard scanning workflow (#6218)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
2025-03-31 19:31:26 -07:00
Piotr Kiełkowicz 72a5f7c36e
[Example/WebApi] enable analysis (#6215) 2025-03-31 10:55:12 -07:00
Piotr Kiełkowicz 868ae707fc
[repo] GitHub Actions hardening (#6214) 2025-03-31 09:05:40 -07:00
Piotr Kiełkowicz 3e8c537192
[Examples/Utils] enable analysis (#6211) 2025-03-28 09:06:24 -07:00
Piotr Kiełkowicz 27116b2210
[AotCompatibility.TestApp] enable analysis (#6210) 2025-03-27 09:06:58 -07:00
Piotr Kiełkowicz a8ede4bdc5
[documentation] fix links to internal example (#6207) 2025-03-26 11:35:21 -07:00
Piotr Kiełkowicz f63f8d93f8
[Extensions.Hosting.Tests] enable analysis (#6204)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-25 20:05:43 -07:00
Piotr Kiełkowicz 242cebabfc
[W3cTraceContext.Tests] enable analysis (#6202)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-25 11:00:12 -07:00
Piotr Kiełkowicz c1472c76fd
[Examples.AspNetCore] enable analysis (#6193)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-25 10:34:21 -07:00
dependabot[bot] 6c69fb2b8c
Bump fossas/fossa-action from 1.5.0 to 1.6.0 (#6201)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-24 20:52:56 -07:00
Jakub Januszkiewicz d01e7f9699
[Exporter.Console] use Environment.NewLine instead of hardcoded LF in console exporters (#6203) 2025-03-24 16:01:24 -07:00
Piotr Kiełkowicz 89e5999e69
[Exporter.Console] enable analysis (#6195)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-21 13:24:42 -07:00
nima nikoonazar 99b686e1ad
[Exporter.OTLP] Optimize GetHeaders by Spans (#6179)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: xiang17 <xili9@microsoft.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-21 11:49:14 -07:00
Ali Mahboubi 647f1b17a1
[Api] support for adding default tags to tracer (#6137)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-03-21 10:28:34 -07:00
dependabot[bot] 402ed87689
Bump dotnet-sdk from 9.0.201 to 9.0.202 (#6196)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-20 15:23:03 -07:00
Piotr Kiełkowicz 3be15201d7
[repo] Remove unused PackageVersion definitions (#6197) 2025-03-20 15:07:32 -07:00
Piotr Kiełkowicz 807aa26d20
[Exporter.Zipkin] - enable analysis (#6189)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-18 12:17:12 -07:00
Piotr Kiełkowicz aa5b0423ff
[Extensions.Propagators] enable analysis (#6192) 2025-03-18 11:50:53 -07:00
Piotr Kiełkowicz 643e80ef53
[repo] Standardize Tests file names (#6190) 2025-03-17 12:56:56 -07:00
Piotr Kiełkowicz a8f1076e4d
[Exporter.Prometheus] - enable analysis (#6171)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-13 14:43:18 -07:00
Piotr Kiełkowicz 5635e6b8d6
[Exporter.Zipkin] Unskip ErrorGettingUriFromEnvVarSetsDefaultEndpointValue test (#6184)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-13 14:24:47 -07:00
Piotr Kiełkowicz 2862c884e0
[Examples.GrpcService] enable analysis (#6186)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-13 14:09:52 -07:00
dependabot[bot] 13a06da855
Bump dotnet-sdk from 9.0.200 to 9.0.201 (#6182)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-13 13:52:09 -07:00
Martin Costello cc2ffdad5b
[repo] codecov - Fix workflow warning (#6185) 2025-03-13 11:26:40 -07:00
Piotr Kiełkowicz c977f73246
[Shims.OpenTracing] enable code analysis (#6160)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-11 14:55:03 -07:00
Piotr Kiełkowicz 8943733bcd
[Exporter.InMemory] - enable analysis (#6165) 2025-03-11 11:00:53 -07:00
Marcin Jahn 796f49bcfd
Update docs in BatchExportProcessorOptions.cs (#6177)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-03-07 09:02:11 -08:00
Martin Costello 9b83e7bf09
Update OpenTelemetry.Api CHANGELOG (#6172) 2025-03-05 09:45:42 -08:00
OpenTelemetry Bot 4af4abd7c9
[release] Prepare release coreunstable-1.11.2-beta.1 (#6170) 2025-03-04 16:20:03 -08:00
OpenTelemetry Bot 0c53d9f7dd
[release] Core stable release 1.11.2 updates (#6169) 2025-03-04 14:51:54 -08:00
OpenTelemetry Bot 7f2eb92952
[release] Prepare release core-1.11.2 (#6166) 2025-03-04 13:53:31 -08:00
Piotr Kiełkowicz 2ea6e04dab
[repo] ProviderBuilderExtensions.Tests - AnalysisLevel latest-all (#6156)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-03-03 21:02:58 -08:00
Steve Gordon 1b555c1201
Revert TraceContextPropagator performance refactor from 5749 (#6161) 2025-03-03 11:55:52 -08:00
Timothy Mothra 577337c992
[OTLP] include status code in failure log (#6154) 2025-02-28 08:56:04 -08:00
Piotr Kiełkowicz 752172890c
[repo] Bump test packages (#6157) 2025-02-26 12:03:17 -08:00
Simon Cropp 71e6cb49aa
use some collection expressions (#6106)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-02-25 10:00:09 -08:00
Piotr Kiełkowicz ec9f76127e
[otlp] changelog cleanup (#6153) 2025-02-25 09:44:41 -08:00
Matt Hensley 7b076c64b0
[otlp] Change serialization of null protobuf values (#6149)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-02-24 18:46:15 -08:00
Mikel Blanchard e5f65ca696
[repo] Move Blanch to approver (#6145) 2025-02-21 12:08:24 -08:00
OpenTelemetry Bot 0aba0cdc26
Add FOSSA scanning workflow (#6136)
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2025-02-19 10:41:46 -08:00
Simon Cropp c643b7fb22
[repo] remove incorrect null suppressions (#6075)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-02-14 09:41:12 -08:00
Simon Cropp 62af9ad84f
remove some array and list allocations (#6133) 2025-02-13 11:43:22 -08:00
dependabot[bot] 3c62f6b1b1
Bump dotnet-sdk from 9.0.102 to 9.0.200 (#6131)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-12 11:31:37 -08:00
Simon Cropp 8f17a0ea54
remove redundant ?? string.Empty in GetSampler (#6078)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-02-11 17:04:04 -08:00
Simon Cropp 41e1a59eb9
Increase use of NotNullWhen polyfill (#6090)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-02-11 15:03:29 -08:00
Piotr Kiełkowicz 720d610fa8
[repo] Use public ARM64 runners (#6128)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-02-11 09:56:49 -08:00
Piotr Kiełkowicz 89ba8073d8
[docs] prometheus example - update feature flag to support OTLP receiver (#6130) 2025-02-11 08:33:59 -08:00
Pent Ploompuu 71abd4169b
[repo] Small cleanup/simplification (#6048)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2025-02-08 12:38:51 -08:00
Simon Cropp 0c26ce2b3b
remove redundant isDisposing pattern in StressTest (#6082)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-02-05 18:28:26 -08:00
Simon Cropp c99f9a1d6d
remove redundant instrumentations != null checks (#6091)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-02-05 18:15:01 -08:00
Rajkumar Rangaraj 36b777b16f
[otlp] Fix incorrect length handling of Status.Description exceeding 127 bytes (#6119)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-31 16:15:30 -08:00
Simon Cropp cccf1ec3b7
fix incorrect as usage in MessageReceiver (#6105)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-01-31 09:53:07 -08:00
Alan West 0cfbf86a8c
[repo] Add Rajkumar Rangaraj as maintainer (#6114) 2025-01-30 10:50:22 -08:00
Simon Cropp 89ea5c6698
[repo] Replace some fields with auto properties (#6104)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-27 13:58:32 -08:00
Simon Cropp c44984ef93
[repo] Clean up unused variables (#6100)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-27 10:08:25 -08:00
Mikel Blanchard e5a7095daa
[repo] Fix tests reliant on bugged sampling behavior (#6097)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2025-01-27 09:50:53 -08:00
Simon Cropp cd8cb41d9f
[repo/tests] use some utf8 string literals (#6107) 2025-01-27 09:37:40 -08:00
Simon Cropp b508b84676
[Exporter.Prometheus] remove redundant if in WriteUnicodeNoEscape (#6077)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-24 10:49:16 -08:00
Simon Cropp 275a4463cf
[repo] remove redundant interpolation (#6098)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-24 09:34:54 -08:00
Simon Cropp 8fa00cb9d6
[repo] move PooledList to Zipkin (#6092) 2025-01-24 09:21:21 -08:00
Rajkumar Rangaraj 2828321d1b
[otlp] Fix .NET Framework gRPC Export Client Default Success Response Status (#6099) 2025-01-23 16:53:30 -08:00
Mikel Blanchard 292953799b
[repo] Add "release details" links in release notes (#6096) 2025-01-23 12:07:15 -08:00
Mikel Blanchard db828ceb44
[docs] Tweak releasing guide for new automation around release notes (#6089) 2025-01-23 10:53:27 -08:00
OpenTelemetry Bot ef090adab3
[release] Core stable release 1.11.1 updates (#6088)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-22 17:17:13 -08:00
Mikel Blanchard feba0d40fa
[repo] Release notes automation tweak (#6087) 2025-01-22 17:04:23 -08:00
OpenTelemetry Bot e3855e80b8
[release] Prepare release core-1.11.1 (#6086)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-22 14:47:42 -08:00
Rajkumar Rangaraj 7037824da6
[otlp] Fix issues with exporting using gRPC in .NET Framework apps (#6083)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-22 13:02:39 -08:00
Simon Cropp d9864b1e1d
[sdk] Remove redundant NotNullWhen in SelfDiagnosticsConfigParser.TryParseLogDirectory (#6073)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-21 18:37:23 -08:00
Simon Cropp 54f7d9eb87
[sdk] Simplify dispose code in SelfDiagnostics (#6072)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-21 17:56:36 -08:00
Simon Cropp 6e8e190039
[repo] remove ci-concurrency from sln items (#6071)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-21 16:50:44 -08:00
Simon Cropp 48e5a0804b
[api-logs] Remove unneeded if check in LogRecordAttributeList (#6076)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-21 16:02:56 -08:00
dependabot[bot] fdca498b44
Bump DavidAnson/markdownlint-cli2-action from 19.0.0 to 19.1.0 (#6081)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 15:51:21 -08:00
Mikel Blanchard c5acd9f1d3
[repo] Release notes automation (#6070) 2025-01-21 15:39:17 -08:00
Mikel Blanchard dcdaaae6e3
[docs] Add exception logging best practices (#6037) 2025-01-16 11:02:16 -08:00
OpenTelemetry Bot f7df3e1714
[release] Prepare release coreunstable-1.11.0-beta.1 (#6065) 2025-01-16 09:54:42 -08:00
OpenTelemetry Bot 75d947c58f
[release] Core stable release 1.11.0 updates (#6064) 2025-01-15 18:27:18 -08:00
OpenTelemetry Bot 837e852232
[release] Prepare release core-1.11.0 (#6063)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-15 16:06:45 -08:00
Mikel Blanchard 3d1f74db5a
[sdk-tracing] Allow samplers to set TraceState for propagation-only spans (#6058) 2025-01-15 10:47:29 -08:00
dependabot[bot] 17bbd834e5
Bump dotnet-sdk from 9.0.101 to 9.0.102 (#6061)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2025-01-15 10:35:51 -08:00
Mikel Blanchard 90dd82c382
[docs-metrics] Link to advice guide in docs (#6062) 2025-01-15 10:24:26 -08:00
Mikel Blanchard cd31c57af5
[repo] Trigger builds when SDK is changed (#6050) 2025-01-06 11:27:17 -08:00
dependabot[bot] 6100452988
Bump DavidAnson/markdownlint-cli2-action from 18.0.0 to 19.0.0 (#6044)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-31 11:36:25 -08:00
Dudi Likvornik 7ae7b131e8
[sdk-metrics] Include Meter.Tags in metric identity resolution (#5982)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-12-26 10:38:21 -08:00
Cijo Thomas 408a52d62f
[repo] Breakdown emeritus into roles in main README (#6038) 2024-12-19 11:27:39 -08:00
Piotr Kiełkowicz 7d7d37ae42
[shared] Bump OTLP proto files to 1.5.0 (#6039) 2024-12-18 10:01:11 -08:00
Piotr Kiełkowicz 29068585a1
[Exporter.OpenTelemetryProtocol] Remove PeerServiceResolver from compilation (#6032)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-12-17 13:39:06 -08:00
Piotr Kiełkowicz c3bb89ae50
[repo] Pin Ubuntu to 22.04 (#6036) 2024-12-17 10:30:14 -08:00
Cijo Thomas e0a10f7890
Minor improvements to example doc (#6033) 2024-12-16 11:29:16 -08:00
David Ashpole c94c422e31
[prometheus] Update links to openmetrics to reference the v1.0.0 release (#6029) 2024-12-13 13:11:49 -08:00
Mikel Blanchard 8e6d814f0f
[repo] Add dependabot.yml to solution (#6028) 2024-12-13 12:20:04 -08:00
dependabot[bot] ad4e80e282
Bump DavidAnson/markdownlint-cli2-action from 16.0.0 to 18.0.0 (#6027)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-12-13 12:08:55 -08:00
dependabot[bot] fc9de8b9bc
Bump codecov/codecov-action from 4 to 5 (#6025)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 11:40:08 -08:00
dependabot[bot] f69d9c53e5
Bump dotnet-sdk from 9.0.100 to 9.0.101 (#6026)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 11:26:03 -08:00
OpenTelemetry Bot a6582704cd
[release] Prepare release core-1.11.0-rc.1 (#6021) 2024-12-11 14:55:15 -08:00
Rajkumar Rangaraj 80287c061e
[otlp] Enable OTLP exporter for multiple registrations (#6020) 2024-12-11 14:08:10 -08:00
Rajkumar Rangaraj 1f39623af5
[otlp] Avoid filling new buffer on expansion (#6019) 2024-12-10 22:19:03 -08:00
Rajkumar Rangaraj 75a683eab7
[otlp] Update changelog / Remove OtlpExporter resource modification code (#6015)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-12-10 13:23:31 -08:00
Rajkumar Rangaraj be8209987b
[otlp] Expand array buffer / add tests to existing base buffer (#6013)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-12-10 12:42:08 -08:00
Mikel Blanchard 145e7ade6f
[repo] Allow dependabot to bump SDK patch version (#6011) 2024-12-06 09:22:05 -08:00
Rajkumar Rangaraj 305597d9d5
[otlp] Fix TODOs, Refactor Buffer Size Handling, and Cleanup Environment Variables (#6009)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-12-05 11:04:12 -08:00
Timothy Mothra 0c775e58fa
[otlp] refactor constants (#6010) 2024-12-03 13:57:57 -08:00
Utkarsh Umesan Pillai 44bc90a25b
[repo] Move Utkarsh to Emeritus (#6008)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2024-12-03 10:29:40 -08:00
Rajkumar Rangaraj b9be07a27d
[otlp] Remove the Google.Protobuf / Grpc packages, and replace the logs and metrics with the new implementation (#6005)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-12-02 16:21:30 -08:00
Rajkumar Rangaraj 84e6afbeba
[otlp] Replace the current trace implementation with the new one (#6003) 2024-11-27 14:28:38 -08:00
Mikel Blanchard 7eeddf5f22
[otlp] Refactor shared protobuf otlp export client code into a base class (#6001) 2024-11-27 11:37:55 -08:00
Rajkumar Rangaraj 88d2ad60bb
[otlp] Grpc Status check and retry (#6000)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-11-26 11:10:03 -08:00
Rajkumar Rangaraj f9a0b4c657
[otlp] Buffer Size Handling with Retry Logic and OTLP Signal Path (#5988) 2024-11-22 13:03:40 -08:00
Mikel Blanchard e3665c95c2
[otlp] Fix ProtobufOtlpLogSerializer pool handling (#5989) 2024-11-18 15:27:50 -08:00
Rajkumar Rangaraj 4bc398f9d1
[otlp] Deserialize GrpcStatusDetailsHeader to Retrieve Grpc Retry Delay (#5980)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-11-18 11:39:16 -08:00
Rajkumar Rangaraj 68c79a3bfd
[otlp] Add Grpc vendored code (#5981) 2024-11-18 11:25:50 -08:00
Utkarsh Umesan Pillai 913bccfdfc
[perf] Update Stress Test to avoid false sharing (#5985) 2024-11-18 09:45:13 -08:00
Rajkumar Rangaraj 2ae01a73fe
[otlp] Add Log and Mertic Exporter to transmit custom serialized data (#5977)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-11-15 09:05:52 -08:00
Rajkumar Rangaraj 1e7397e779
[otlp] Add Trace Exporter to transmit custom serialized data. (#5969)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-11-14 12:36:34 -08:00
Timothy Mothra b201d709c1
[otlp] OTLP Exporter Custom serializer - (Part 3) Outstanding TODOs (#5975)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-11-14 11:14:25 -08:00
Cijo Thomas 74fc70e8eb
[docs] Document links maybe added after Activity creation (#5972) 2024-11-12 22:08:12 -08:00
OpenTelemetry Bot a5fa611774
[release] Prepare release coreunstable-1.10.0-beta.1 (#5971) 2024-11-12 13:52:15 -08:00
OpenTelemetry Bot 60a683986a
[release] Core stable release 1.10.0 updates (#5970) 2024-11-12 13:46:13 -08:00
OpenTelemetry Bot 626b30e127
[release] Prepare release core-1.10.0 (#5968) 2024-11-12 12:58:56 -08:00
Mikel Blanchard 8ae945345f
[repo] Updates for .NET 9 release (#5967) 2024-11-12 12:42:14 -08:00
Tom Tan 6fbae0d655
[docs] Add digital signing section with sigstore details (#5961)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-11-12 10:57:27 -08:00
Timothy Mothra ae3feb9bcd
[otlp] OTLP Exporter Custom serializer - (Part 2) Histogram and Exponential Histogram (#5962) 2024-11-12 10:04:25 -08:00
Mikel Blanchard d113ecfbed
[docs-metrics] Add content for histogram bucket configuration via advice api (#5965) 2024-11-11 12:28:33 -08:00
Mikel Blanchard 2aae6e12d4
[tests] Clean up class structure in metrics tests (#5960) 2024-11-08 18:58:57 -08:00
Timothy Mothra 60445836cc
[otlp] OTLP Exporter Custom serializer - (Part 1) Counter and Gauge (#5958) 2024-11-08 15:29:33 -08:00
Reiley Yang e3b920c0da
Move Reiley Yang 🐇 to Emeritus👋 (#5959)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-11-08 10:13:38 -08:00
Mikel Blanchard 8c1cd6488e
[docs] Tweaks for stable metric point reclaim (#5957) 2024-11-08 10:05:36 -08:00
xiang17 112e17f50e
[sdk-metrics] Stablize MetricPoint reclaim feature for delta aggregation (#5956) 2024-11-07 15:03:16 -08:00
Alan West 1e1201ad02
[repo] Add Rajkumar Rangaraj as approver (#5953)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-11-05 17:02:19 -08:00
Mikel Blanchard 4b56c5f567
[otlp] Remove the direct dependency on Microsoft.Extensions.Configuration.Binder (#5951) 2024-11-04 13:04:35 -08:00
Mikel Blanchard 53b85ceef9
[otlp] Custom serialzer resource tweaks (#5947) 2024-11-04 11:39:28 -08:00
OpenTelemetry Bot 47aff6264e
[release] Prepare release core-1.10.0-rc.1 (#5949) 2024-11-01 14:51:08 -07:00
Mikel Blanchard 7c0f24c177
[sdk] Expose the ctor on Batch<T> which accepts a single item (#5642)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2024-11-01 14:10:00 -07:00
Rajkumar Rangaraj ed1b27f592
[otlp] Update TraceSerializer to use attributes / dropped from state. (#5946)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-31 17:19:25 -07:00
Mikel Blanchard dc7f1ebb6f
[otlp] OTLP Exporter Custom serializer - Log Scopes (#5945) 2024-10-31 16:58:37 -07:00
Rajkumar Rangaraj 1fc0ebcceb
[otlp] OTLP Exporter Custom serializer - Logs (#5941) 2024-10-31 11:42:05 -07:00
xiang17 09b654ec41
[docs] Update verb tense grammar for CHANGELOGs (#5940)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-31 10:27:45 -07:00
Mikel Blanchard 956f62146c
[repo] Add content for 1.10.0 to release notes (#5937) 2024-10-31 10:18:44 -07:00
Rajkumar Rangaraj 6fa4492a70
[otlp] OTLP Exporter Custom serializer - Complete Traces (#5930)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-30 11:29:41 -07:00
Mikel Blanchard 858737cdb0
[console] Support ActivitySource.Tags (#5935) 2024-10-30 09:48:42 -07:00
Tom Tan 451a94b2d0
[docs] Fix sample code in README (#5933) 2024-10-29 10:04:55 -07:00
Tom Tan 84ff215a5d
[BUILD] Signing OpenTelemetry .NET DLLs Using Sigstore certificate (#5880)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-28 15:31:21 -07:00
Rajkumar Rangaraj d45060b434
[otlp] OTLP Exporter Custom serializer - Spans (#5928)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-28 10:08:30 -07:00
xiang17 8de335c486
[sdk-metrics] Promote cardinality limit view API from experimental to stable (#5926)
Co-authored-by: Rajkumar Rangaraj <rajrang@microsoft.com>
2024-10-28 09:51:10 -07:00
xiang17 9f41eadf03
[sdk-metrics] Promote overflow attribute from experimental to stable (#5909)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-25 10:58:18 -07:00
Rajkumar Rangaraj 5efc683279
[otlp] OTLP Exporter Custom serializer Part 2 - Resources (#5916)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-25 09:46:33 -07:00
Weihan Li 5dff99f8a0
[shared] Use nameof for CallerArgumentExpression in Guard helpers (#5917) 2024-10-22 17:46:00 -07:00
Mikel Blanchard 25a9366679
[sdk-metrics] Fix a race condition when a metric is deactivated and re-activated in the same collection cycle (#5908)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2024-10-21 14:40:11 -07:00
Rajkumar Rangaraj 0eebf97a4b
[otlp] OTLP Exporter Custom serializer Part 1 - WritingPrimitives (#5910)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-21 12:53:42 -07:00
Piotr Kiełkowicz f1f2664021
[Examples.AspNetCore] Bump OTel Collector to 0.111.0 (#5913) 2024-10-21 10:30:53 -07:00
Sandy Chen 0343715f49
Improve Integration Test by Generating TLS/mTLS Certificates via MSBuild (#5818)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-10-16 18:22:19 -07:00
Rajkumar Rangaraj cddc09127f
[otlp] Export instrumentation scope attributes from ActivitySource.Tags (#5897)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-15 15:42:26 -07:00
Richard Chukwu 963ec41598
[repo] Add RELEASENOTES and READMEs to NuGet packages (#5885)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-15 13:01:10 -07:00
Timothy Mothra dba7d251f6
[repo] Update stale.yml - reduce days before stale to 300 (#5902) 2024-10-14 14:35:26 -07:00
joegoldman2 bb832226d3
[sdk-metrics] Use FrozenSet when looking up explicit bounds (#5899)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-14 10:50:59 -07:00
Piotr Kiełkowicz 1a68b49ed6
[repo] cleanup #nullable disable (#5901)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-14 09:24:06 -07:00
Piotr Kiełkowicz 8df7670dd1
[docs] Nullable annotations (#5900) 2024-10-14 09:09:59 -07:00
Yevhenii Solomchenko f3cd0e7ac4
[Tests] Nullable (#5882)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-11 12:31:35 -07:00
Yevhenii Solomchenko 36d5900be0
[Examples] Nullable (#5881)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-11 11:27:43 -07:00
Cijo Thomas b0ebf3518c
[docs-metrics] Improve View documentation to show its additive nature (#5896) 2024-10-10 14:15:16 -07:00
Mikel Blanchard 331e1267b6
[repo] Directory.Packages.props cleanup (#5886) 2024-10-10 09:30:46 -07:00
Reiley Yang 2499ecdf8e
[docs] Clarify the position regarding bot generated and AI-assisted PRs (#5894) 2024-10-09 23:50:52 -07:00
Mikel Blanchard 9b08508541
[repo] Mitigate vulnerabilities in System.Text.Json 8.0.4 package (#5891) 2024-10-08 12:45:14 -07:00
Rajkumar Rangaraj 66c2e4b778
[sdk] Support split reads in OTEL_DIAGNOSTICS.json config file parser logic (#5884)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2024-10-08 12:13:18 -07:00
Timothy Mothra a55a5ac997
[repo] Update stale.yml - reduce days before stale to 450 (#5888) 2024-10-07 16:26:10 -07:00
Mikel Blanchard 5106e3082f
[repo] Remove implicit using tweak as it is no longer needed (#5887)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2024-10-06 09:39:57 -07:00
Yevhenii Solomchenko 02f4b2d978
[Benchmarks] Nullabe (#5875)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-04 14:20:03 -07:00
Mikel Blanchard 25d99a56bf
[repo] Mitigate vulnerabilities in System.Text.Json 8.0.0 packages (#5874) 2024-10-04 13:38:15 -07:00
Yevhenii Solomchenko 19e1663c1e
[Extensions.Hosting.Tests] Nullable (#5862)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-10-01 14:16:32 -07:00
OpenTelemetry Bot f5023550bc
[release] Prepare release core-1.10.0-beta.1 (#5871) 2024-09-30 14:00:22 -07:00
Paulo Ferreira 1aa101bbcf
[docs] Fix RecordAndSample typo (#5870)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-30 11:50:12 -07:00
Rajkumar Rangaraj f4e392301f
[sdk-metrics] Support .NET 9 Synchronous Gauge (#5867)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-30 11:41:21 -07:00
Piotr Kiełkowicz cc0b9e9d0f
[docs] README - Fix links to membership descriptions (#5865) 2024-09-26 09:00:16 -07:00
Mikel Blanchard 9cca0ac8f1
[repo] Add Mothra as a triager (#5864) 2024-09-25 13:25:25 -07:00
Mikel Blanchard c8a8913152
[repo] Take advantage of System.Threading.Lock when compiling against .NET9 (#5861) 2024-09-24 14:47:16 -07:00
Yevhenii Solomchenko c1f1c167d2
[Api] Nullable (#5801)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-24 14:31:04 -07:00
Mikel Blanchard 2097f477f3
[api] Context nullable annotations (#5850) 2024-09-24 13:52:51 -07:00
Piotr Kiełkowicz 3a09a91b1c
Cleanup W3CTraceContextTests (#5858)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-24 11:23:12 -07:00
Yevhenii Solomchenko 12a8ab0f45
[api] Mark ActivityExtensions.RecordException obsolete (#5841)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-24 10:44:10 -07:00
Timothy Mothra 3c38a4b00b
[repo] Update stale.yml - reduce days before stale to 600 (#5857) 2024-09-24 09:49:06 -07:00
Rajkumar Rangaraj d650352b8f
[sdk-metrics] Add support for .NET 9 Advice API (#5854)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-09-23 15:32:46 -07:00
Mikel Blanchard 1c02da746e
[docs] Contributing updates (#5856) 2024-09-23 15:06:20 -07:00
Robert Coltheart 60b7d9baf3
[prometheus] Support meter-level tags (#5837)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2024-09-23 09:56:38 -07:00
Rajkumar Rangaraj c1a1931319
[repo] Update the System.Diagnostics.DiagnosticSource and Microsoft.Extensions.* packages to .NET 9.0 RC.1 (#5853) 2024-09-20 12:51:14 -07:00
Piotr Kiełkowicz 86c1d8c2b3
[repo] Simplify preprocessor directives after dropping support for .NET 6 and .NET7 (#5851)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-20 09:21:00 -07:00
Piotr Kiełkowicz b941f1e4d6
[docs] Typo fixes (double the) (#5852) 2024-09-20 09:09:52 -07:00
Rajkumar Rangaraj cd01f932a6
[repo] Replace .NET6 target with .NET9 (#5832)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2024-09-19 17:32:10 -07:00
Mikel Blanchard 6e1b5ab577
[api] Baggage nullable annotations (#5840) 2024-09-19 13:14:57 -07:00
Yevhenii Solomchenko 1c01770882
[Shims, W3C.Tests] Nullable (#5797)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-16 15:03:39 -07:00
Mikel Blanchard 9b83188ccd
[console, in-memory] Tweak nullable annotations in registration extensions (#5833) 2024-09-16 11:52:30 -07:00
Yevhenii Solomchenko 82b1fbd760
[Exporter.Prometheus] Nullable (#5791)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-13 20:45:28 -07:00
Yevhenii Solomchenko 6194d9bb17
[repo] How to maintain PublicApi files (#5823)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-12 13:05:49 -07:00
benon lukyamuzi 2b43c096f8
[zipkin\otlp] Call SendAsync on mobile (#5821)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-12 10:23:56 -07:00
Yevhenii Solomchenko 29798920da
[repo] Add Linux ARM64 to actions CI (#5824)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-12 10:08:54 -07:00
Timothy Mothra f7e2a78f4f
[repo] remove questions template and redirect to discussions (#5827)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-12 09:53:57 -07:00
Piotr Kiełkowicz 2d6b03f296
[repo] Always execute build-test step in CI workflow (#5828) 2024-09-12 09:22:09 -07:00
Yevhenii Solomchenko dd7405654f
[Exporter.Zipkin] Nullable (#5792)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-11 13:07:48 -07:00
Timothy Mothra 37535a5607
[repo] Update stale.yml - reduce days before stale to 900 (#5822) 2024-09-09 14:37:22 -07:00
Vishwesh Bankwar b46aae4dff
[repo] Move Vishwesh to Emeritus approver (#5817) 2024-09-09 11:38:42 -07:00
xiang17 dc8d3fd991
[repo] Add .NET 8 target for W3C Trace Context Integration Test in CI (#5800)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
2024-09-04 10:15:03 -07:00
Piotr Kiełkowicz 1479686a6e
[sdk] Improve readability of TracerProviderSdk initialization code (#5810)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-09-04 09:49:34 -07:00
Piotr Kiełkowicz 104c9f0e82
[repo] Extend NugetAudit by indirect references (#5812) 2024-09-04 09:34:20 -07:00
xiang17 685b73d3ac
[docs] Fix OTLP Collector config in example app (#5811) 2024-08-30 09:08:07 -07:00
Cijo Thomas 1a83643284
[benchmarks.logging] Use source generator pattern (#5807)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-08-29 11:51:44 -07:00
Mikel Blanchard f3a22c3022
[otlp] Workaround DI containers which create unregistered services (#5808) 2024-08-29 10:28:28 -07:00
Piotr Kiełkowicz ba8a0e4c13
[Propagators] Nullable annotations (#5767) 2024-08-28 09:56:15 -07:00
Yevhenii Solomchenko 1b3f1894d9
[api] Mark SetStatus & GetStatus ActivityExtensions obsolete (#5781)
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-08-21 15:08:29 -07:00
xiang17 c483222ea5
[repo] Remove .NET 7 target (#5795)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-08-21 09:09:13 -07:00
Timothy Mothra 456cd26a20
[repo] Update stale.yml - reduce days before stale to 1000 (#5796) 2024-08-20 21:51:54 -07:00
Cijo Thomas 41a72f45b9
Log Stress test to follow recommended logging practise (#5790) 2024-08-19 13:04:21 -07:00
Mikel Blanchard 0e011e8c3c
[repo] Add needs-triage label to new issues created via templates (#5788) 2024-08-16 15:33:49 -07:00
Mikel Blanchard a0316ec3c6
[sdk] Switch a couple guard calls to debug.assert in CircularBuffer (#5789) 2024-08-16 12:42:42 -07:00
Timothy Mothra 5f13315926
[repo] update stale automation to inspect issues (#5787)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-08-15 10:35:03 -07:00
Yevhenii Solomchenko 5a0b686559
[repo] Enable NuGetAudit (#5784)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-08-15 09:41:23 -07:00
Mikel Blanchard 6ec1510729
[release] Add release notes link on stable releases (#5780) 2024-08-12 11:23:46 -07:00
Steve Gordon 83ecef862d
[api] Optimise `TraceContextPropagator.Extract` (#5749)
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-08-12 10:07:12 -07:00
Mikel Blanchard 230adaba57
[docs] Top-level doc showing how to initialize the OpenTelemetry SDK (#5762) 2024-08-08 11:09:06 -07:00
Vishwesh Bankwar b15f9a82e3
[repo] Add ReleaseNotes.md to include features shipped in stable release (#5772)
Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-08-07 14:16:01 -07:00
Elmo Todurov 32c64d04de
[docs-metrics] Fix tuple vs KVP confusion in code sample (#5769) 2024-08-01 11:56:25 -07:00
Piotr Kiełkowicz 22a58aa89e
[Exporter.Console, Exporter.InMemory] Nullable (#5765) 2024-07-26 09:24:48 -07:00
Mikel Blanchard 05bb05a0dc
[sdk] Add OpenTelemetrySdk builder pattern (#5325) 2024-07-19 15:03:44 -07:00
Cijo Thomas 36c586ddcc
[benckmarks] Rename NoOp to Noop (#5752)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-07-17 11:04:36 -07:00
Steve Gordon 6a0a934107
[api] Fix `Fields` in `CompositeTextMapPropagator` (#5745)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-07-17 10:49:33 -07:00
Mikel Blanchard 46e076fbb7
[infra] Fix a couple paths in PR auto-label file change detection (#5751) 2024-07-16 12:38:35 -07:00
Cijo Thomas ccd3759ec8
[benchmarks] Add LogBenchmark when BatchProcessor is used (#5746)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-07-16 11:02:21 -07:00
Rajkumar Rangaraj dbe2ce35e7
Bump System.Text.Json version due to CVE-2024-30105 (#5744) 2024-07-11 11:25:23 -07:00
Piotr Kiełkowicz 46265e3379
[tests] Remove unused CustomTextMapPropagator (#5743) 2024-07-08 10:45:15 -07:00
Piotr Kiełkowicz da905a8264
[docs] Refresh getting started with AspNetCore and Jaeger (#5740) 2024-07-05 12:26:18 -07:00
Piotr Kiełkowicz 53cda157c9
Bump OTLP proto files to 1.3.2 (#5736) 2024-07-03 09:44:32 -07:00
Piotr Kiełkowicz d8ce51b1b4
[repo] Bump Microsoft.SourceLink.GitHub to 8.0.0 (#5728) 2024-06-28 09:27:15 -07:00
Mikel Blanchard 978b461771
[infra] Version validation in prepare release workflow (#5723) 2024-06-27 11:06:21 -07:00
Mikel Blanchard 7922e30255
[repo] Add Piotr as approver (#5710)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-06-26 21:17:29 -07:00
Piotr Kiełkowicz 4d254eb278
[Exporter.OTLP - Tests] Nullable (#5720) 2024-06-25 10:12:30 -07:00
OpenTelemetry Bot 8cc51b8bca
[release] Prepare release coreunstable-1.9.0-beta.2 (#5716) 2024-06-24 12:57:02 -07:00
Piotr Kiełkowicz 206d117e81
[Exporter.OTLP] Mark as nullable (#5708)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-06-24 11:59:51 -07:00
Mikel Blanchard b5cafe05f4
[infra] Prepare release automation improvements (#5714) 2024-06-24 11:29:59 -07:00
Mikel Blanchard 37b5f92254
[sdk] Organize related files into sub-folders (#5706) 2024-06-24 11:14:52 -07:00
joegoldman2 6d467d719d
[repo] Simplify preprocessor directives (#5712)
Co-authored-by: joegoldman2 <147369450+joegoldman@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-06-24 10:59:31 -07:00
jcin193 2f14c244e3
[prometheus] Fix collection output buffer management when its resized (#5676)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2024-06-24 10:41:38 -07:00
Mikel Blanchard 4af3df9b81
[shared] Use CultureInfo.InvariantCulture in TagWriter (#5700) 2024-06-18 12:56:00 -07:00
Mikel Blanchard b1a21cc0dc
[repo] Stable version update automation tweaks (#5698) 2024-06-18 09:58:29 -07:00
OpenTelemetry Bot 237de185a7
[release] Prepare release coreunstable-1.9.0-beta.1 (#5697) 2024-06-14 15:40:23 -07:00
Mikel Blanchard 908b46ca2d
[repo] Bump OTelLatestStableVer to 1.9.0 and fix coreunstable test issues (#5696) 2024-06-14 15:34:34 -07:00
OpenTelemetry Bot df260790f0
[release] Prepare release core-1.9.0 (#5694) 2024-06-14 12:43:54 -07:00
Mikel Blanchard 26a4414a21
[repo] Auto-label PR workflow improvements (#5693) 2024-06-14 12:23:43 -07:00
Mateusz Łach dc390a6a7d
[api-baggage] revert space encoding change (#5687)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-06-12 10:01:04 -07:00
Piotr Kiełkowicz 28824f805c
[repo] Bump tests and examples dependencies (#5688) 2024-06-12 09:44:29 -07:00
Mikel Blanchard 48ce500ae5
[repo] Auto label PR workflow permissions fix (#5684) 2024-06-11 10:28:12 -07:00
joegoldman2 23fb651129
[repo] Replace Logging Exporter with Debug Exporter in otel-collector configs (#5685)
Co-authored-by: joegoldman2 <147369450+joegoldman@users.noreply.github.com>
2024-06-10 12:17:16 -07:00
Mikel Blanchard a763c0dbfc
[repo] Auto label pull requests (#5681) 2024-06-10 09:02:41 -07:00
Mikel Blanchard fd18bb134c
[repo] Fix a couple issues in automation workflows/scripts (#5680) 2024-06-07 13:28:44 -07:00
OpenTelemetry Bot 357f0a2d79
[repo] Prepare release core-1.9.0-rc.1 (#5679) 2024-06-07 12:03:04 -07:00
Mikel Blanchard 84cd83ad53
[repo] NuGet push release automation (#5675) 2024-06-07 11:12:22 -07:00
Mikel Blanchard 90871e01cb
[repo] Add packages to releases when created by automation (#5674) 2024-06-06 15:02:20 -07:00
Mikel Blanchard 2710c427f0
Move LoggerProvider and friends (OTEL1000) to a stable API (#5648) 2024-06-05 16:06:17 -07:00
Cijo Thomas 248043a74d
Fix link to OTel calendar in readme (#5673) 2024-06-05 12:42:08 -07:00
Mikel Blanchard 4d02fe1a08
[repo] Post-release automation improvements (#5664) 2024-06-03 10:00:40 -07:00
James Thompson c38cc273bc
[repo] Reduce explicit package references on newer TFM's (#5659) 2024-05-30 15:46:25 -07:00
OpenTelemetry Bot 61eee46af8
[repo] Prepare release coreunstable-1.9.0-alpha.2 (#5662) 2024-05-29 10:52:07 -07:00
Mikel Blanchard 3ffa9160d9
[repo] Release automation improvements (#5657) 2024-05-29 10:41:04 -07:00
Robert Coltheart b9d56aa64e
[prometheus] Fix OpenMetrics format suffixes (#5646)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-05-28 10:47:02 -07:00
Mikel Blanchard 81244d6136
[repo] CI tweaks and improvements (#5651) 2024-05-27 23:37:19 -07:00
Mikel Blanchard 625f32f33e
[docs] Add exemplar project to solution (#5650) 2024-05-24 13:04:08 -07:00
Reiley Yang 361a4b9bd8
[docs] Move docker related files to examples folder (#5640)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2024-05-23 12:40:23 -07:00
Eric Erhardt 574c71612b
[repo] Fix variable usage in test-aot-compatibility script (#5645) 2024-05-22 13:42:38 -07:00
Reiley Yang 0cb89abd45
[docs] Tweak ToC (#5644) 2024-05-22 09:10:39 -07:00
Reiley Yang 3cff6dbfd1
[docs] Improve exemplars tutorial (#5636) 2024-05-21 16:51:09 -07:00
Reiley Yang 498b0d00a1
[docs] Remove MD033 workaround (#5638) 2024-05-21 11:03:47 -07:00
github-actions[bot] 6c0327c4c6
[repo] Prepare release coreunstable-1.9.0-alpha.1 (#5634)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-20 14:23:39 -07:00
github-actions[bot] 7dd39b08fe
[repo] Prepare release core-1.9.0-alpha.1 (#5633)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-20 11:36:32 -07:00
Mikel Blanchard 07f7e1d08b
[repo] A little bit of cleanup for post-release.psm1 (#5632) 2024-05-20 11:08:27 -07:00
Mikel Blanchard 2abf2a9e71
[docs-metrics] Customer ExemplarReservoir and View API configuration (#5624) 2024-05-20 09:31:55 -07:00
Vishwesh Bankwar 16f2bf0fb9
[OTLP] Add details for offline storage (#5628)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-05-17 15:49:39 -07:00
Mikel Blanchard a9c32c98d0
[sdk-metrics] Update Exemplars before MetricPoint CompleteUpdate fires (#5630) 2024-05-17 15:44:04 -07:00
Robert Coltheart 8177a391a6
[prometheus] Fix issue with corrupted buffers when reading both OpenMetrics and plain text formats (#5623)
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-05-17 12:38:16 -07:00
Piotr Kiełkowicz b444464d0f
[repo] Cleanup shared code (#5622) 2024-05-17 12:17:13 -07:00
Mikel Blanchard 1e065cbdaa
[sdk-metrics] Add experimental envvar for setting ExemplarFilter for histograms (#5611)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2024-05-16 13:57:53 -07:00
Piotr Kiełkowicz 808abc8552
[sdk-traces] SamplingResult constructors accept null parameters (#5614) 2024-05-16 10:02:28 -07:00
Mikel Blanchard 1bbafaa7b7
[repo] Build script organization (#5619) 2024-05-14 14:55:19 -07:00
Mikel Blanchard 2d2fcf9650
[repo] Post-release workflow refactor (#5617) 2024-05-14 14:12:53 -07:00
Mikel Blanchard cf8ca09a55
[shared] Remove TagTransformer and improve TagWriter (#5602) 2024-05-14 11:44:41 -07:00
Reiley Yang a578ed3f9b
[repo] Switch to component label for tagging issues (#5612)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-05-14 10:40:27 -07:00
Reiley Yang 5aa077b9e7
[repo] Add minimal reproducible example link to the issue template (#5610) 2024-05-13 14:37:09 -07:00
Mikel Blanchard af3c389c0c
[sdk-metrics] Expose Exemplars stable (#5607) 2024-05-13 13:55:56 -07:00
Mikel Blanchard 9d12b36fd5
[repo] Release process tweaks & improvements 4 (#5598)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-05-13 13:35:44 -07:00
Reiley Yang 15cea9c0ef
[doc] update package level warning messages (#5608)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-05-13 09:07:00 -07:00
Reiley Yang c7abbdb1fa
[repo] Clean up nits (s/can not/cannot/) in bug template (#5609) 2024-05-10 21:50:13 -07:00
Mikel Blanchard 409d96de68
[repo] Add-labels workflow fix (#5605)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-05-10 13:10:22 -07:00
Mikel Blanchard b8ea807bae
[sdk-metrics] ExemplarReservoir dedicated diagnostic and custom ExemplarReservoir support (#5558) 2024-05-10 11:39:03 -07:00
Mikel Blanchard 49d70e0702
[console] Switch to TagWriter for handling of tags/attributes (#5596) 2024-05-09 10:29:34 -07:00
Mikel Blanchard ee5e1e0628
[repo] Automatically add area labels when new issue is opened (#5601) 2024-05-09 10:16:47 -07:00
Piotr Kiełkowicz abb680143a
[Instrumentation.AspNetCore] Move to contrib repository (#5599) 2024-05-08 09:54:22 -07:00
Reiley Yang 3db4919141
[repo] Change Markdown issue templates to YAML (#5595) 2024-05-07 14:58:46 -07:00
Vishwesh Bankwar 4215968f75
[Otlp] Add disk retry enablement (#5527)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-05-07 14:02:43 -07:00
Reiley Yang c47dd7c1b1
[repo] Switching bug template to YAML (#5594) 2024-05-07 12:27:03 -07:00
Piotr Kiełkowicz 4a860e38f7
[Instrumentation.GrpcNetClient] Move to contrib repository (#5593) 2024-05-07 11:13:50 -07:00
Mikel Blanchard 8864a054b6
[repo] Release process tweaks & improvements 3 (#5589) 2024-05-07 10:33:40 -07:00
Mikel Blanchard 2fe54ee958
[zipkin] Switch to TagWriter for handling of tags/attributes (#5590) 2024-05-07 09:47:34 -07:00
Mikel Blanchard ac0d1d1fab
[otlp] Switch to TagWriter for handling of tags/attributes (#5585) 2024-05-02 22:53:50 -07:00
Mikel Blanchard e95ae72649
[repo] Release process tweaks & improvements 2 (#5587) 2024-05-02 12:46:03 -07:00
Mikel Blanchard eace49c2fb
[repo] Release process tweaks & improvements (#5584) 2024-04-30 22:59:35 -07:00
Reiley Yang c2558da11f
[docs-logs] Use struct in the complex type logging demo (#5577)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2024-04-30 10:03:10 -07:00
Reiley Yang dffe70c8cc
[repo] Move Microsoft.CSharp to non-prod section (#5581) 2024-04-29 13:36:50 -07:00
Piotr Kiełkowicz e2a867f192
[Instrumentation.Http] Move to contrib repository (#5574) 2024-04-29 12:02:59 -07:00
Mikel Blanchard e25d128baf
[sdk-metrics] Tweak SetExemplarFilter API and improve XML docs (#5578) 2024-04-26 13:14:33 -07:00
Piotr Kiełkowicz 254f52f65c
Bump OTLP proto files to 1.3.0 (#5575)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-26 11:33:19 -07:00
Mikel Blanchard 1b4f5a2829
[repo] Add Piotr as a triager (#5576) 2024-04-26 11:10:19 -07:00
Mikel Blanchard 2b09864f68
[sdk-metrics] Clean up some malformed xml docs in exemplar code (#5572) 2024-04-26 09:53:07 -07:00
Mikel Blanchard 864bcfc04a
[repo-ci] Switch to using dotnet tool install in docfx workflow (#5573)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-04-26 09:39:27 -07:00
Mikel Blanchard 0deb93e0a3
[hosting] Revert obsoletion of OpenTelemetryBuilder (#5571) 2024-04-25 22:32:58 -07:00
Reiley Yang f89214a29e
[repo] Cleanup unused packages (#5565)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-24 15:18:41 -07:00
Reiley Yang 51baf9fbe2
Improve BatchExportActivityProcessorTest.CheckShutdownExport stability (#5567) 2024-04-24 14:46:05 -07:00
Piotr Kiełkowicz 98a5d3e5b2
[Instrumentation.SqlClient] Move to contrib repository (#5559)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-04-24 11:22:36 -07:00
Mikel Blanchard 994b890be1
[repo] Improve the scripts used in the release process (#5561) 2024-04-23 15:11:04 -07:00
Steve Gordon efe97bf999
[otlp] Implement Span and SpanLink flags (#5563)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-23 12:32:05 -07:00
Andrei Chasovskikh 4a1601b505
[api] Fix Baggage XML documentation (#5562) 2024-04-23 11:52:38 -07:00
Reiley Yang f76d21a53d
[docs-metrics] Remove predicate-based View examples (#5554) 2024-04-19 10:29:05 -07:00
Utkarsh Umesan Pillai 84bdeb3dd5
[sdk-metrics] Fix race condition for MemoryPoint Reclaim (#5546) 2024-04-18 15:08:41 -07:00
Utkarsh Umesan Pillai b8729a0f80
Move Utkarsh to Approver (#5547)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-18 10:09:20 -07:00
Reiley Yang 36ceb2efe2
[Doc] provide recommendation on log scopes (#5549)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-18 10:05:09 -07:00
Mikel Blanchard 266fe91bb8
[main] Updates for 1.8.1 release (#5548) 2024-04-18 09:51:59 -07:00
Mikel Blanchard 89aa7a47ab
[sdk-metrics] Expose ExemplarReservoir and support configuration via views (#5542) 2024-04-17 15:49:35 -07:00
Mikel Blanchard bf423cc735
[sdk-metrics] Remove locking around exemplar updates in MetricPoint (#5535) 2024-04-17 09:55:36 -07:00
Mikel Blanchard 3898df5509
[repo] Define release process for unstable core components (#5531) 2024-04-17 09:33:03 -07:00
Reiley Yang 1fb00d9a8a
Remove OpenTelemetry.SemanticConventions project (#5539) 2024-04-16 13:27:36 -07:00
Reiley Yang 57c442cc7b
Fix the OpenTelemetry Registry URL in main README (#5534) 2024-04-12 13:40:06 -07:00
Vishwesh Bankwar e222ecb594
[Instrumentation.Http][Instrumentation.AspNetCore] Fix `url.full` and `url.query` attribute values (#5532) 2024-04-12 11:47:42 -07:00
Mikel Blanchard 0bbebb5367
[logs] Mitigate unwanted object creation during configuration reload (#5514)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-04-12 11:17:50 -07:00
Piotr Kiełkowicz 876e4faa5a
[Exporter.OpenTelemetryProtocol] User agent changed to OTel-OTLP-Exporter-Dotnet/{NuGet Package Version} (#5528)
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2024-04-10 09:35:07 -07:00
Mikel Blanchard a4e5cf524c
[shared] Add TagWriter implementation (#5476) 2024-04-09 12:07:20 -07:00
Mikel Blanchard b78a3691a8
[repo] Make InternalsVisibleTo consistent across stable & unstable builds (#5521) 2024-04-09 11:39:18 -07:00
Piotr Kiełkowicz 562f4538b8
[Instrumentation.GrpNetClient, Instrumentation.SqlCliet] set ActivitySource.Version to NuGet package version (#5498)
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2024-04-09 10:46:42 -07:00
Mikel Blanchard 9261a679e6
[otlp] Add comments capturing details about SYSLIB1100 & SYSLIB1101 suppressions in project (#5523) 2024-04-08 13:27:08 -07:00
Martin Costello dde68fa331
Improve AoT validation and fix OpenTelemetryProtocol AoT warnings (#5520)
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-08 12:34:43 -07:00
dependabot[bot] 7b604f7bfb
Bump DavidAnson/markdownlint-cli2-action from 15.0.0 to 16.0.0 (#5522) 2024-04-08 11:33:03 -07:00
Piotr Kiełkowicz c7c7a69788
Bump OTLP proto files to 1.2.0 (#5516) 2024-04-08 09:57:36 -07:00
Mateusz Łach e46a446c4a
[api-baggage] fix encoding of space chars in baggage item value (#5303)
Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-05 15:06:37 -07:00
Mikel Blanchard dbcc511903
[opentracing-shim] Add missing XML comments (#5512)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2024-04-05 14:12:11 -07:00
Utkarsh Umesan Pillai 90d9a91cd1
Minor refactoring for AggregatorStore and MetricPoint (#5510) 2024-04-05 13:20:53 -07:00
Utkarsh Umesan Pillai 3f4c73adb1
[sdk-metrics] Refactor AggregatorStore (#5509) 2024-04-04 15:03:28 -07:00
Piotr Kiełkowicz 2c421a04ae
Instrumentation packages - 1.8.0/1.8.0-beta.1 release (#5505)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-04 14:11:30 -07:00
John Bley c6e80a1650
Use set -e in shell scripts (#5507)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-04-04 10:58:52 -07:00
Reiley Yang 93237f1c95
Metrics doc minor improvement (#5508) 2024-04-04 10:47:46 -07:00
Vishwesh Bankwar b0c95307dd
Migrate to docker compose v2 (#5503) 2024-04-03 10:01:02 -07:00
Mikel Blanchard 9b246750ab
[repo] Bump OTelLatestStableVer to 1.8.0 (#5501) 2024-04-02 17:51:10 -07:00
Mikel Blanchard fb74013d64
Update CHANGELOG and API files for 1.8.0 stable release (#5494) 2024-04-02 10:32:17 -07:00
Reiley Yang e0af47e4ab
Minor doc structure improvement (#5496) 2024-04-01 17:02:53 -07:00
Vishwesh Bankwar dbec6f845a
[otlp] Rename key for enabling retries during transient failures (#5495)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
2024-04-01 15:43:35 -07:00
Mikel Blanchard e5ca93b8f9
[docs-metrics] Add back SetMaxMetricPointsPerMetricStream example (#5493) 2024-03-29 14:15:14 -07:00
Mikel Blanchard 39d960e0e7
[docs-traces] Added version info to the OTEL_TRACES_SAMPLER doc (#5492) 2024-03-29 12:01:21 -07:00
Piotr Kiełkowicz 2e30089295
[otlp] Remove AppContext verification when using grpc + insecure endpoints (#5486)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-03-29 10:43:53 -07:00
Piotr Kiełkowicz 1374a7de40
[Instrumentation.AspNetCore] Fix span names when http.request.method is reporter as _OTHER (#5484)
Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-03-29 10:35:05 -07:00
Piotr Kiełkowicz d64318f667
[repo] Bump MinVer to 5.0.0 (#5490) 2024-03-29 10:25:35 -07:00
Piotr Kiełkowicz 717c3226bb
[Exporter.Console] Add support for ActivitySource.Version (#5472)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-03-28 10:48:25 -07:00
Timothy Mothra 5e0b7bf6dc
sync changes in shared files (#5432)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-03-28 10:07:49 -07:00
Mikel Blanchard aac1a01bce
Prepare CHANGELOGs for 1.8.0-rc.1 (#5483) 2024-03-27 15:16:26 -07:00
Piotr Kiełkowicz dfdbf01e2f
[Instrumentation.AspNetCore, Instrumentation.Http] Fix http.request.method_original attribute (#5471) 2024-03-27 13:02:11 -07:00
Vishwesh Bankwar af57de2b01
[Otlp] Add persistent storage transmission handler (#5460) 2024-03-26 18:02:20 -07:00
Mikel Blanchard 1a607c852e
[sdk-metrics] Exemplar concurrency updates (#5465)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2024-03-26 14:52:55 -07:00
Reiley Yang b10f84a2e0
Recommend against using Activity.AddEvent in a loop (#5474) 2024-03-26 14:26:54 -07:00
Mikel Blanchard 21aeaa70c0
[shared] Refactor logging for configuration extensions (#5469) 2024-03-26 12:27:56 -07:00
Piotr Kiełkowicz 70657395b8
[Exporter.Zipkin] Use new attributes to propagate scope (#5473) 2024-03-26 10:44:39 -07:00
Mikel Blanchard 49f16e44d0
[shared] Tag transformer improvements (#5455)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2024-03-22 13:40:19 -07:00
Mikel Blanchard 2f0af656be
[sdk-metrics] Tags perf improvements (#5457) 2024-03-22 12:49:47 -07:00
Mikel Blanchard 040012b400
[shared] Split options and configuration extensions into separate files (#5466) 2024-03-22 09:17:02 -07:00
Robert Coltheart 0969437c39
Include resource attributes as `target_info` for Prometheus exporters (#5407) 2024-03-21 16:30:54 -07:00
Renato aacbf038c1
[doc] added clarification for Processors about TagObjects (#5445) 2024-03-21 13:23:13 -07:00
Mikel Blanchard 3ff1df28cf
[otlp] Update README for UseOtlpExporter & new experimental flag (#5452) 2024-03-21 09:36:04 -07:00
Reiley Yang af57ae8787
Docs - best practices for ILogger.IsEnabled (#5459) 2024-03-19 16:05:01 -07:00
Matt Hensley 76cafe5d80
[sdk-traces] Add support for OTEL_TRACES_SAMPLER and OTEL_TRACES_SAMPLER_ARG (#5448) 2024-03-19 15:55:29 -07:00
Vishwesh Bankwar 8f9eb90db0
[Prometheus] Readme fix (#5456) 2024-03-18 11:24:30 -07:00
Timothy Mothra dd4e212d59
[Exporter.OpenTelemetryProtocol] fix event source throws `System.FormatException` (#5451) 2024-03-14 16:48:55 -07:00
Utkarsh Umesan Pillai 59f829d615
Update CHANGELOG for 1.8.0-beta.1 (#5453) 2024-03-14 16:14:10 -07:00
Mikel Blanchard a6a760ffbb
[otlp] UseOtlpExporter cross-cutting extension (#5400) 2024-03-14 14:03:56 -07:00
Vishwesh Bankwar eb2dc443f4
[otlp] Add experimental feature flag for enabling retries (#5435) 2024-03-13 15:33:32 -07:00
Piotr Kiełkowicz 4cccb09239
[Instrumentation.Http, Instrumentation.AspNetCore] Always set server.port attribute for spans (#5419) 2024-03-12 14:03:39 -07:00
Vishwesh Bankwar ff6725f07a
[otlp] Add Retry Handler (#5433) 2024-03-12 11:54:29 -07:00
Vishwesh Bankwar d5795c0056
[otlp] Add readme toc and clarify endpoint confusion (#5385) 2024-03-11 19:55:03 -07:00
Mikel Blanchard adc89d9424
[otlp] Nullable annotations for the OtlpExporterOptions class and some xml doc improvement (#5434) 2024-03-11 14:05:53 -07:00
Vishwesh Bankwar 043d8a31c7
[Otlp] Refactor ExportClient (#5431) 2024-03-11 11:57:57 -07:00
Mikel Blanchard 85933659ab
[otlp] Add foundation for signal-specific envvars (#5429) 2024-03-11 11:37:44 -07:00
Vishwesh Bankwar 3cd4c622ae
[Otlp] Fix Http Retry to cover network failure and add tests (#5394) 2024-03-11 10:51:15 -07:00
Mikel Blanchard 9adb088e06
[otlp] Move spec envvar key definitions to a single spot (#5428) 2024-03-08 12:01:18 -08:00
Mikel Blanchard 81d29cf87e
[otlp] Rename ProgrammaticallyModifiedEndpoint -> AppendSignalPathToEndpoint (#5427) 2024-03-08 11:35:01 -08:00
Mikel Blanchard eb2f99856c
[sdk-logs+traces] Add internal processor weight api (#5424) 2024-03-08 11:06:15 -08:00
Mikel Blanchard 0820101396
[sdk] Add ActivityExportProcessorOptions and clean up MetricReaderOptions (#5423) 2024-03-07 14:33:49 -08:00
Mikel Blanchard f34fce5620
[repo-shared] Remove the new() constraint from Options API helpers (#5422) 2024-03-07 13:44:34 -08:00
Rajkumar Rangaraj b90c3b2cea
Adjust Cardinality Limit to Accommodate Internal Reserves (#5382) 2024-03-07 11:15:17 -08:00
Igor Shishkin bae8a6b699
Reduce memory usage by reclaimed MetricPoint (#5416) 2024-03-05 18:27:17 -08:00
Mikel Blanchard a7f3400977
[sdk-metrics] Pass all tags supplied at measurement to ExemplarReservoir.Offer methods (#5414) 2024-03-05 16:59:52 -08:00
Reiley Yang df2abe8c0a
Improve log filter example (#5406) 2024-03-05 15:52:07 -08:00
Mikel Blanchard 123c0b4b69
[sdk-metrics] Support setting exemplar filter from spec envvar key (#5412) 2024-03-05 14:20:55 -08:00
Mikel Blanchard 8cba9868fb
[sdk-metrics] Use FrozenSet on net8+ for custom tag lookup (#5409) 2024-03-05 09:57:29 -08:00
Mikel Blanchard fc17a5a33d
[sdk-metrics] Remove ExemplarFilter classes (#5408) 2024-03-04 16:44:11 -08:00
Yun-Ting Lin 28ead764b6
Throw NotSupportedException when using `SetErrorStatusOnException` in Mono Runtime and Native AOT environment. (#5374) 2024-03-01 17:04:51 -08:00
Reiley Yang 97404a2ebd
Clarify the recommendation regarding log category name (#5405) 2024-03-01 15:14:49 -08:00
Mikel Blanchard b754b13cdb
[sdk-metrics] ExemplarFilter updates to match latest specification (#5404) 2024-03-01 11:42:47 -08:00
Mikel Blanchard 42ecd73bd0
[sdk-metrics] ReadOnlyExemplarCollection tweaks (#5403) 2024-02-29 13:29:45 -08:00
Mikel Blanchard 77ef12327f
[sdk-metrics] Refactor exemplar offer duplicated code into helper methods inside MetricPoint (#5399) 2024-02-28 16:40:50 -08:00
Mikel Blanchard 7ce0c55260
[sdk-metrics] Refactor duplicated update completion code into a helper in MetricPoint (#5398) 2024-02-28 11:15:13 -08:00
Mikel Blanchard 05b0ca4521
[otlp-metrics] Support exemplars for all metric types (#5397) 2024-02-28 10:56:29 -08:00
Mikel Blanchard 278e246111
[sdk-metrics] Support exemplars when using exponential histograms (#5396) 2024-02-28 09:59:41 -08:00
Mikel Blanchard e7cbbbbf0d
[sdk-metrics] Improve exemplar tests (#5393) 2024-02-27 15:52:33 -08:00
Mikel Blanchard 44432235e5
[sdk-metrics] XML doc tweaks for exemplar experimental APIs (#5392) 2024-02-27 12:04:44 -08:00
Mikel Blanchard 42c593d8c2
[sdk-metrics] Exemplar spec improvements (#5386) 2024-02-27 10:49:44 -08:00
Mikel Blanchard 24d52c4149
[tools] Stress test README updates (#5388) 2024-02-26 11:39:08 -08:00
Mikel Blanchard 73b6e30c1b
[tools] Stress test improvements (#5381) 2024-02-23 15:50:19 -08:00
Vishwesh Bankwar 7e0213ddbd
Otlp Retry Part2 - Introduce transmission handler (#5367) 2024-02-23 12:36:31 -08:00
Mikel Blanchard c87134ddc6
[ci] Add checkout for push and workflow_dispatch trigger (#5384) 2024-02-23 09:18:48 -08:00
Utkarsh Umesan Pillai f5b7f9c9eb
[ci] Add push trigger and workflow_dispatch trigger (#5383) 2024-02-22 19:03:21 -08:00
Reiley Yang 88b6b0e552
Improve OTLP Exporter doc - provide recommendation on custom AuthN (#5380) 2024-02-22 14:47:39 -08:00
Mikel Blanchard 09dd46fbad
[sdk-metrics] Refactor and improve interlocking code for doubles in MetricPoint (#5378) 2024-02-21 16:07:38 -08:00
Reiley Yang 5bcc805280
[sdk-logs] Improve OpenTelemetryLogger.IsEnabled (#5375) 2024-02-21 10:40:37 -08:00
Mikel Blanchard 4ae0aaf099
[sdk-metrics] Clean up locking in MetricPoint (#5368) 2024-02-20 13:45:15 -08:00
Mikel Blanchard fb9576b359
[repo] Switch CodeQL workflow to manual build (#5373) 2024-02-20 12:51:30 -08:00
Mikel Blanchard af2b551316
[sdk-metrics] Simplify the state built when an instrument is published (#5350) 2024-02-20 12:02:57 -08:00
Atrokhov Sergey bbce7ef0ef
Option to not add _total suffix to counter metrics in Prometheus exporter (#5305) 2024-02-20 10:24:05 -08:00
joegoldman2 d27e9bac41
Improve comment for SamplingDecision.Drop (#5370) 2024-02-20 10:09:26 -08:00
Mikel Blanchard dd877fe179
[sdk-metrics] Improve the perf of histogram snapshots (#5366) 2024-02-16 11:37:52 -08:00
Vishwesh Bankwar 5849d3aad3
Otlp Retry Part1 - Refactor ExportClients (#5335) 2024-02-15 16:23:18 -08:00
Mikel Blanchard e4b08ac152
[docs-logging] Add a logging doc for showing how to set up a dedicated pipeline for specific logs (#5356) 2024-02-15 12:48:15 -08:00
joegoldman2 855e9c42af
Fix typo in reporting exceptions documentation (#5363) 2024-02-15 11:43:20 -08:00
Reiley Yang a1207550af
[repo] Bump Microsoft.Extensions.Telemetry.Abstractions to 8.2.0 (#5362)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-02-15 09:53:16 -08:00
Rajkumar Rangaraj 99a394c3bc
[sdk] Rename SimpleExemplarReservoir to SimpleFixedSizeExemplarReservoir (#5359) 2024-02-15 09:44:10 -08:00
Cijo Thomas 41ec1894a0
Fix collector config in example (#5357) 2024-02-13 21:36:07 -08:00
Cijo Thomas 87b970b07a
Remove experimental feature flag from doc (#5343) 2024-02-12 09:35:17 -08:00
Alan West 303ab7a25a
Update changelog for #5252 (#5341) 2024-02-09 17:32:38 -08:00
Alan West 8b88f43911
[GrpcNetClient] Clarify impact to SuppressDownstreamInstrumentation (#5340)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2024-02-09 17:25:55 -08:00
Piotr Kiełkowicz a2f85dc9e2
Release instrumentation packages 1.7.1/1.7.0-beta.1 (#5322)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-02-09 16:44:45 -08:00
Mikel Blanchard f1a1835479
[sdk-metrics] Remove some reflection used by tests (#5338)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2024-02-09 13:09:56 -08:00
Alan West 8325786802
Add MinVerTagPrefix for SQL and gRPC instrumentation (#5337)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2024-02-09 12:50:49 -08:00
Reiley Yang f6c31f31e3
[Editorial] Update the docs based on Copilot review feedback (#5332) 2024-02-09 12:02:37 -08:00
Mikel Blanchard cf00e4254e
[sdk-metrics] Obsolete SetMaxMetricPointsPerMetricStream + standarize on "Cardinality Limit" name (#5328)
Co-authored-by: Yun-Ting Lin <yunl@microsoft.com>
2024-02-09 11:06:14 -08:00
Piotr Kiełkowicz f214d27e93
[Instrumentation.SqlClient] Improve changelog (#5327) 2024-02-08 17:44:43 -08:00
Reiley Yang 93038e21fa
Dispose loggerFactory in benchmark (#5330) 2024-02-08 17:36:51 -08:00
Reiley Yang 5ac06dd20a
Clean up guidance docs (#5329) 2024-02-08 11:43:28 -08:00
Reiley Yang 05700f640a
[metrics] Document view level cardinality limit (#5321)
Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
2024-02-07 15:09:46 -08:00
Johannes Tax 752778270d
Support both URL-encoded and non-URL encoded values for `OTEL_EXPORTER_OTLP_HEADERS` (#5316) 2024-02-07 11:23:32 -08:00
Reiley Yang 72889f25a4
Tracing doc - clarify that activities should be stopped (#5320) 2024-02-06 16:55:42 -08:00
Cijo Thomas 98e9b6ad91
Minor doc fixes for clarity (#5319) 2024-02-06 16:55:28 -08:00
Reiley Yang 5b9a2204e7
Update Metrics modeling guidance (#5318)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-02-06 16:55:04 -08:00
Mikel Blanchard 3fa189ab03
[api+sdk] Groundwork for cross-cutting builder extensions (#5265)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-02-06 16:44:09 -08:00
Mikel Blanchard 10f8a0d7ea
[sdk-logs] Update LogRecord to keep CategoryName and Logger in sync (#5317) 2024-02-06 16:22:05 -08:00
Yun-Ting Lin 8ff986b296
[sdk] Added support for setting `CardinalityLimit` allowed for the metric managed by the view. (#5312)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-02-06 12:47:25 -08:00
Piotr Kiełkowicz c057e6adcc
[Instrumentation.AspNetCore] .NET6 library works on .NET7 and .NET8 (#5252)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2024-02-06 11:15:52 -08:00
Reiley Yang ebb3524800
Improve tracing doc (#5310) 2024-02-05 16:01:49 -08:00
Piotr Kiełkowicz a31bca866d
[Instrumentation.SqlClient] Stop emitting db.statement_type attribute (#5301)
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2024-02-05 10:37:45 -08:00
Julius Koval ef977c107a
[otlp] Use LogRecord.Logger.Name for instrumentation scope if LogRecord.CategoryName is null (#5300)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-02-05 10:19:19 -08:00
Mikel Blanchard ef942a11ac
[metrics] Fix perf regression introduced by metric point reclaim feature (#5307)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-02-02 12:23:18 -08:00
dependabot[bot] 71f9a4217f
Bump al-cheb/configure-pagefile-action from 1.3 to 1.4 (#5309)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 12:00:23 -08:00
Mikel Blanchard edfea52f2e
Bump codecov/codecov-action from 3.1.5 to 4.0.1 (#5294) 2024-02-01 16:40:48 -08:00
dependabot[bot] 4dedeade30
Bump DavidAnson/markdownlint-cli2-action from 14.0.0 to 15.0.0 (#5290)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-02-01 14:59:21 -08:00
Alan West c28b3e1251
[aspnetcore-route-docs] Fix markdown to make markdownlint v15 happy (#5306)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-02-01 14:49:53 -08:00
Mikel Blanchard 8b54074c7a
[prometheus-httplistener] Throw an exception if the listener cannot be started (#5304) 2024-02-01 12:36:55 -08:00
Reiley Yang 9fd01f7803
Metrics docs improvement - exemplar, enrichment, memory (#5299) 2024-02-01 10:28:21 -08:00
Yun-Ting Lin 3d60de1ffd
[Logs Bridge API] Add support for Body set directly on LogRecord for OTLP Exporter. (#5268)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2024-02-01 10:18:41 -08:00
Reiley Yang bace882971
[Editorial] add ToC to logging/metrics docs (#5298) 2024-01-31 16:33:48 -08:00
Reiley Yang 0ee3eb149f
Improve metrics docs - part 2 (#5284)
Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2024-01-31 14:37:52 -08:00
Piotr Kiełkowicz d2f9d055e0
Rename SqlClientInstrumentationOptions to SqlClientTraceInstrumentationOptions (#5285) 2024-01-31 10:09:42 -08:00
Mikel Blanchard 8ca81d4ce2
[repo-ci] Bump AurorNZ/paths-filter to resolve GitHub Node version warnings (#5288) 2024-01-30 10:57:48 -08:00
Piotr Kiełkowicz 52a03b11ae
Rename GrpcClientInstrumentationOptions to GrpcClientTraceInstrumentationOptions (#5272)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-29 17:30:48 -08:00
Piotr Kiełkowicz edc9fe2e6e
[Instrumentation.SqlClient] Support only stable HTTP semantic convention (#5270)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-29 16:53:02 -08:00
Mikel Blanchard 6a5a57f696
[sdk] Perf improvement for TraceContextPropagator.Inject (#5278)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2024-01-29 16:29:49 -08:00
Mikel Blanchard c8a097db75
[logs] Fix pooling issues when wrapping batch export processor (#5255)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2024-01-29 16:20:47 -08:00
Reiley Yang 98f687335e
Improve metrics docs (#5279)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-01-29 16:11:00 -08:00
Mikel Blanchard 48db3e1809
[repo] markdownlint ci changes (#5281) 2024-01-29 15:59:56 -08:00
Piotr Kiełkowicz 0b9cf42e9a
[Instrumentation.GrpcNetClient] Support only stable HTTP semantic convention (#5259)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-27 09:22:47 -08:00
Reiley Yang 512c7dcbf1
Link to .NET 9 log filter plan (#5267)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-26 18:34:04 -08:00
Alan West c2bb4c578d
Update changelog for #5135 (#5269) 2024-01-26 17:34:31 -08:00
Ciaran Liedeman 26a2d4b4c7
Fixed Missing Endpoint (#5135)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-26 17:05:18 -08:00
Reiley Yang 3fb2ec50d0
Log correlation/redaction doc improvements (#5262)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-01-26 13:45:25 -08:00
Vishwesh Bankwar eaf8316656
Add base class for implementing retry strategies in otlp exporter (#4872)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-01-26 13:23:43 -08:00
Rajkumar Rangaraj c1f9a05c50
[otlp] Remove Experimental Flag and emit stable Exception attributes by default (#5258)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-01-26 13:01:06 -08:00
dependabot[bot] 11ac32c03c
[repo-ci] Bump codecov/codecov-action from 3.1.4 to 3.1.5 (#5263)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-26 10:50:42 -08:00
Mikel Blanchard 914ebf9c6d
[repo] Fix docfx build + improve CI for md-only PRs (#5257) 2024-01-25 11:52:20 -08:00
Reiley Yang 3b8cee7669
[docs] Logger management guidance (#5249)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-01-25 10:02:54 -08:00
sprayzcs 0fefe37af9
[otlp] Fix doc for LogRecord.EventId attributes (#5251)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-01-25 10:01:10 -08:00
Cijo Thomas 1e0e755652
[repo] Add more welcoming note for community meeting in README (#5253)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2024-01-25 09:59:34 -08:00
Reiley Yang 6f753f623a
Remove ILogger scope from the ASP.NET Core logging getting started doc (#5254) 2024-01-25 09:57:00 -08:00
Mikel Blanchard 0a77cc3cce
[docs] Avoid duplicate ToString calls in redaction log processor (#5248) 2024-01-23 16:46:24 -08:00
Reiley Yang eab0a7c367
Docs - logging best practice (#5246) 2024-01-23 13:59:44 -08:00
Reiley Yang dca99b6e66
Revise the metrics perf guidance (#5243) 2024-01-22 15:28:26 -08:00
Piotr Kiełkowicz a872c7d267
[Instrumentation.AspNetCore] HttpInListener - remove unused fields (#5240)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-22 15:24:14 -08:00
Cijo Thomas e3b8b4571c
Main readme updates to reflect release status better (#5237)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-22 14:49:06 -08:00
Vishwesh Bankwar 00c3e58aad
[Instrumentation.AspNetCore] Fix changelog entry and remove package reference (#5241)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-22 14:25:57 -08:00
Cijo Thomas 9db5a52536
Remove testexporter in favor of inmemoryexporter (#5238)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-22 14:14:26 -08:00
Reiley Yang ca051e2b02
Minor docs tweak (#5235)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-22 13:54:42 -08:00
Piotr Kiełkowicz dfd27c5040
HTTP Instrumentation - fix description for http.client.request.duration (#5234) 2024-01-19 15:31:50 -08:00
Cijo Thomas 45cf7c3a25
Fix SimpleExemplarReservoir for cumulative (#5230)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-18 10:16:51 -08:00
Luiz Lelis 89e538293b
docs: `resource-detector` should not be tied to tracing (#5188)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-17 17:29:33 -08:00
Mikel Blanchard 8c0a4a54e8
[revert] [api] Fix Baggage context leak issue (#5227) 2024-01-17 12:57:40 -08:00
Cijo Thomas 26eae7c6de
[repo] Bump sqlclient package version to avoid security warning (#5228) 2024-01-17 12:46:21 -08:00
Reiley Yang f71df667aa
Use proper GFM warning syntax (#5225) 2024-01-16 13:21:11 -08:00
Nils Gruson 18ccd876a8
Only create a sibling activity when trace id, span id or trace state differ (#5136)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-16 12:21:25 -08:00
Reiley Yang 6d88762954
Policheck (#5221) 2024-01-16 12:08:03 -08:00
Piotr Kiełkowicz 6e042134d3
Bump OTLP proto files to 1.1.0 (#5215)
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
2024-01-16 11:57:19 -08:00
Mikel Blanchard 90a9c6c1b0
[api] Fix Baggage context leak issue (#5208) 2024-01-16 10:23:10 -08:00
Reiley Yang 3a5134f2bd
Use GMF Warning/Caution (#5220) 2024-01-12 15:29:09 -08:00
Reiley Yang c78363211e
Use GFM NOTES syntax (#5219) 2024-01-12 15:17:10 -08:00
Reiley Yang b9d09bee5c
Update docs for complex object logging (#5217) 2024-01-12 14:36:40 -08:00
Reiley Yang 1b4f231e2e
Complex object logging example (#5214) 2024-01-11 18:38:48 -08:00
Mikel Blanchard d0620e6f0f
[repo] Add copyright header template to .editorconfig (#5206) 2024-01-09 16:50:09 -08:00
Mikel Blanchard aaae273d81
[repo] Bump StyleCop.Analyzers to latest NuGet (#5204) 2024-01-09 13:28:32 -08:00
Mikel Blanchard 88493d257c
[repo] CI improvements (#5023)
Co-authored-by: Yun-Ting <yunl@microsoft.com>
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2024-01-08 13:09:28 -08:00
Mikel Blanchard 6250307cb2
[repo] Update docs with third-party code inclusion guidance (#5195)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2024-01-08 12:51:27 -08:00
Steve Gordon d73ed6755d
Update aspnetcore docs to remove prerelease (#5203) 2024-01-08 09:48:01 -08:00
Yun-Ting Lin 0889e8dc32
Add otlp log extension methods for LoggerProviderBuilder (#5103) 2023-12-22 18:29:00 -08:00
Utkarsh Umesan Pillai e3759a1e0e
Remove unnecessary package reference from SDK (#5198) 2023-12-21 17:22:41 -08:00
Mikel Blanchard 14ee5c456e
[repo] Include license files in packages (#5192) 2023-12-19 15:45:49 -08:00
Nick Craver 9d8ef708a3
AggregatorStore: don't double-count drops in doubles (#5193) 2023-12-19 14:52:42 -08:00
Mikel Blanchard 63fe0f3cc7
[repo] Add THIRD-PARTY-NOTICES file (#5190) 2023-12-19 11:05:16 -08:00
Cijo Thomas 65dd83b44e
Improve docs on Resources to encourage its usage (#5185) 2023-12-18 13:33:30 -08:00
Mikel Blanchard af83eb1043
[sdk-logs] Keep LogRecord.State & LogRecord.Attributes in sync if either is updated by a log processor (#5169) 2023-12-14 22:10:12 -08:00
Robert Coltheart 7eeae5b114
Scope info should only be exported for Prometheus if OpenMetrics is requested (#5182) 2023-12-14 21:00:35 -08:00
Robert Coltheart 3c986e894c
Add scope info and version to Prometheus exporter (#5086) 2023-12-14 16:44:22 -08:00
Utkarsh Umesan Pillai 2961ff56c7
Update main README (#5181) 2023-12-14 15:34:40 -08:00
Utkarsh Umesan Pillai bea458a010
Update README.md (#5180) 2023-12-14 13:51:08 -08:00
dependabot[bot] c0969d059e
Bump actions/upload-artifact from 3 to 4 (#5178) 2023-12-14 11:31:57 -08:00
Vishwesh Bankwar 4842364500
[HttpClient & Asp.Net Core] Update Readme.md (#5168) 2023-12-13 19:15:35 -08:00
Cijo Thomas 2bccad8ca7
Tweaks to ActivityCreation benchmarks (#5173) 2023-12-13 19:05:28 -08:00
Utkarsh Umesan Pillai 1477c852b3
Update CHANGELOG for 1.7.0 release of AspNetCore and Http instrumentation libraries (#5175) 2023-12-13 18:17:57 -08:00
Utkarsh Umesan Pillai 3ffbef3d1a
Update OTel latest stable version to 1.7.0 (#5174) 2023-12-13 18:07:55 -08:00
Utkarsh Umesan Pillai f77307b54e
Update CHANGELOG for 1.6.0 release of AspNetCore and Http instrumentation libraries (#5171) 2023-12-13 16:55:27 -08:00
Utkarsh Umesan Pillai 080ed3d167
Add MinVerTagPrefix for AspNetCore and Http instrumentation libraries (#5170) 2023-12-13 15:44:11 -08:00
Vishwesh Bankwar ecaa601730
[HttpClient] Minor refactor (#5164) 2023-12-13 12:00:41 -08:00
dependabot[bot] 5eaed73507
Bump github/codeql-action from 2 to 3 (#5167) 2023-12-13 11:37:13 -08:00
Utkarsh Umesan Pillai a736574764
Minor refactoring for instrumentation libraries (#5162) 2023-12-12 16:44:33 -08:00
Vishwesh Bankwar 7fec53d777
Rename extension classes for HttpClient and Asp.Net Core (#5161) 2023-12-12 15:16:33 -08:00
Utkarsh Umesan Pillai 486ee5809d
Remove unused code from Http instrumentation (#5159) 2023-12-12 10:58:19 -08:00
Utkarsh Umesan Pillai 0278deb7ae
Minor perf improvement for AspNetCore instrumentation (#5157) 2023-12-11 20:56:26 -08:00
Mikel Blanchard ffc17408fd
[exporter-logs] Add ExperimentalAttribute decorations for experimental APIs (#5155) 2023-12-11 15:17:36 -08:00
Mikel Blanchard 0680ae3f9b
[hosting-logs] ExperimentalAttribute decorations for experimental APIs (#5154) 2023-12-11 14:27:05 -08:00
Mikel Blanchard 38468744a5
[sdk-metrics] ExperimentalAttribute decorations for experimental exemplar APIs (#5153)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2023-12-11 12:17:18 -08:00
Utkarsh Umesan Pillai cd000be6ba
Minor perf optimization (#5152) 2023-12-11 10:24:43 -08:00
Mikel Blanchard 13791e268e
[sdk-logs] ExperimentalAttribute decorations for experimental log APIs (#5151) 2023-12-08 21:45:55 -08:00
Cijo Thomas 2a850d6498
Add main readme for traces with best practices (#5144) 2023-12-08 18:06:21 -08:00
Utkarsh Umesan Pillai f69c025178
Update CHANGLEOG for 1.7.0 (#5149) 2023-12-08 15:54:02 -08:00
Mikel Blanchard ecef81d551
[api-extensions-logs] ExperimentalAttribute decoration for experimental APIs (#5148) 2023-12-08 15:00:50 -08:00
Nils Gruson f075128b12
Solve 404 error in unit test (#5145) 2023-12-08 11:43:00 -08:00
Mikel Blanchard f5c116001f
[api-logs] Define OTEL1000 & OTEL1001 diagnostics and decorate APIs (#4963)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2023-12-08 09:31:54 -08:00
Cijo Thomas 93fd7d34a7
Doc fix for RecordException (#5143) 2023-12-07 17:57:16 -08:00
Vishwesh Bankwar 58e8f24782
Add grpc instrumentation with experimental feature flag (#5130) 2023-12-07 14:58:57 -08:00
dependabot[bot] ff3956350e
Bump actions/stale from 8 to 9 (#5142) 2023-12-07 11:06:27 -08:00
Utkarsh Umesan Pillai ac56c9f0df
Update documentation comments for `OpenTelemetryDependencyInjectionMeterProviderBuilderExtensions.ConfigureServices` (#5139) 2023-12-07 10:53:37 -08:00
Reiley Yang 57ee852470
Simplify copyright disclaimer (#5140) 2023-12-07 10:04:56 -08:00
Robert Coltheart 7419d854e6
Export OpenMetrics format for prometheus exporters (#5107) 2023-12-06 16:18:25 -08:00
Nils Gruson 4cf2bf433e
Moq cleanup (#5133) 2023-12-06 12:02:29 -08:00
Nils Gruson a963ec809a
Removed Moq dependency from Instrumentation.AspNetCore.Tests (#5123) 2023-12-05 18:55:47 -08:00
Nils Gruson cd5b753785
Removed Moq dependency from Instrumentation.Grpc.Tests (#5124) 2023-12-05 18:42:59 -08:00
Nils Gruson 3619a6f2f1
Removed Moq dependency from OpenTelemetry.Tests (#5128) 2023-12-05 18:25:22 -08:00
Nils Gruson f11801da92
Removed Moq dependency from Shims.OpenTracing.Tests (#5126) 2023-12-05 10:39:27 -08:00
Nils Gruson 5ca1124466
Removed Moq dependency from Exporter.OpenTelemetryProtocol.Tests (#5118) 2023-12-05 10:21:29 -08:00
Nils Gruson d617171951
Removed Moq dependency from OpenTelemetry.Instrumentation.Http.Tests (#5115) 2023-12-05 10:08:41 -08:00
Nils Gruson bb3a91a61f
Removed Moq dependency from Benchmarks (#5116) 2023-12-04 15:54:04 -08:00
Nils Gruson 8369c2090f
Removed Moq dependency from Exporter.Prometheus.AspNetCore.Tests (#5119) 2023-12-04 12:36:14 -08:00
Nils Gruson 41d888373f
Removed Moq dependency from Exporter.Zipkin.Tests (#5121) 2023-12-04 12:23:09 -08:00
Nils Gruson 4cec27415d
Removed Moq dependency from Extensions.Hosting.Tests (#5122) 2023-12-04 12:08:19 -08:00
Nils Gruson a3d2fec0f2
Removed Moq dependency from Instrumentation.SqlClient.Tests (#5125) 2023-12-04 11:43:13 -08:00
dependabot[bot] fba99e1254
Bump actions/setup-dotnet from 3 to 4 (#5127) 2023-12-04 11:31:40 -08:00
Nils Gruson 8d2162ff4d
Removed Moq dependency from Exporter.Prometheus.HttpListener.Tests (#5120) 2023-12-04 11:00:23 -08:00
Nils Gruson 55f76f60d8
Removed Moq dependency from Api.Tests (#5117) 2023-12-04 10:31:55 -08:00
Utkarsh Umesan Pillai 4a8f99ee71
Update CHANGELOG for 1.6.0-rc.1 release of AspNetCore and HttpClient instrumentation libraries (#5113) 2023-12-01 17:00:23 -08:00
Utkarsh Umesan Pillai 9dbd22dbfe
[Instrumentation.AspNetCore] Use static Meter and Histogram (#5112) 2023-12-01 16:42:34 -08:00
Vishwesh Bankwar c5f5dd7dbd
[HttpWebRequest] Add additional error types (#5111) 2023-12-01 15:47:01 -08:00
Vishwesh Bankwar c48c014b50
Rename AspNetCoreInstrumentationOptions (#5108) 2023-12-01 15:19:05 -08:00
Vishwesh Bankwar 94c20c684b
Remove userAgent tag from HttpClient activity (#5110) 2023-12-01 14:43:05 -08:00
Vishwesh Bankwar 61c6c748ad
Rename HttpClientInstrumentationOptions (#5109) 2023-12-01 11:35:36 -08:00
Vishwesh Bankwar 9211cee8bf
[HttpClient & ASP.NET Core] Document request durations (#5079) 2023-11-30 20:11:41 -08:00
Utkarsh Umesan Pillai f592dcf4b1
Update benchmarks for Traces and Logs (#5104) 2023-11-30 12:03:27 -08:00
Utkarsh Umesan Pillai c637263136
Update CHANGELOG for 1.7.0-rc.1 (#5100) 2023-11-29 15:45:29 -08:00
Vishwesh Bankwar 014d5a1bd5
Fix Console metric exporter null reference (#5099) 2023-11-29 15:33:36 -08:00
Mikel Blanchard a47b222101
[logging] UseOpenTelemetry extension & WithLogging default behavior (#5072) 2023-11-29 15:15:46 -08:00
Vishwesh Bankwar 39c77d40f8
[ASP.NET Core] Remove grpc server instrumentation (#5097) 2023-11-29 15:04:31 -08:00
Vishwesh Bankwar 4f73d2b78a
[ASP.NET Core] Remove netstandard2.1 target (#5094) 2023-11-29 11:56:20 -08:00
Nils Gruson 79aa39fb7e
Removed usage of Mock<BaseProcessor> (#5095) 2023-11-29 11:44:13 -08:00
Vishwesh Bankwar 6a829dd363
[HttpClient] Remove SDK dependency (#5077) 2023-11-29 11:22:06 -08:00
Utkarsh Umesan Pillai 4e390e3284
Rafactor OtlpMetricExporter (#5091) 2023-11-28 18:32:14 -08:00
Cijo Thomas 97442efb5d
Add support for instrumentation scope attributes (Meter tags) (#5089) 2023-11-28 17:31:43 -08:00
Vishwesh Bankwar e6f97bc92f
[HttpClient] Fix activity displayName (#5078) 2023-11-28 17:15:11 -08:00
Piotr Kiełkowicz f96ca5cf41
Martin Thwaites - triager (#5074) 2023-11-28 15:09:50 -08:00
Utkarsh Umesan Pillai 617ac6c04a
Update Metrics Benchmarks (#5081) 2023-11-28 14:57:04 -08:00
Utkarsh Umesan Pillai 324ab61fa1
Remove threshold for MetricPoint reclaim (#5087) 2023-11-28 13:42:57 -08:00
Vishwesh Bankwar eec09c9fa5
[ASP.NET Core] Remove SDK dependency (#5075) 2023-11-22 17:27:49 -08:00
Mikel Blanchard 4d61dbad0d
[otlp] Improve README around using Options API for configuration (#5080) 2023-11-22 16:40:16 -08:00
Mikel Blanchard e383b5db86
[sdk + otlp] Add log processor factory overload (#4916) 2023-11-22 14:46:07 -08:00
Nils Gruson f9c300b284
Use test host in unit tests (#5040) 2023-11-22 14:05:10 -08:00
Mikel Blanchard 1f7f9315dc
[hosting] Support .NET 8 IMetricsBuilder API (#4958) 2023-11-21 16:17:40 -08:00
Vishwesh Bankwar 0c4f065484
[ASP.NET Core] Remove OTEL_SEMCONV_STABILITY_OPT_IN (#5066) 2023-11-21 13:42:10 -08:00
Vishwesh Bankwar a55341a50b
[HttpClient] Remove OTEL_SEMCONV_STABILITY_OPT_IN (#5068) 2023-11-21 12:32:06 -08:00
Vishwesh Bankwar 7dff32480d
Add note about .NET8.0 metrics in readme (#5067) 2023-11-21 11:36:52 -08:00
Christoffer Hjalmarsson 2b62e476ee
Add metric bucket override for OpenTelemetry.Instrumentation.AspNet (#5063) 2023-11-20 15:10:57 -08:00
Utkarsh Umesan Pillai 276b307943
Update CHANGELOG for 1.6.0-beta.3 release of instrumentation libraries (#5061) 2023-11-17 15:13:53 -08:00
Vishwesh Bankwar 0256f875d4
Http Span Status - Default to Unset if not in range defined by spec (#5060) 2023-11-17 14:02:24 -08:00
Alan West 68eabf0188
Fix Activity http.route and name (#5026) 2023-11-17 12:28:32 -08:00
Vishwesh Bankwar 2a228f9234
Refactor HttpWebRequestActivitySource (#5055) 2023-11-17 12:07:00 -08:00
Yun-Ting Lin d3461964ca
add concurrency tests with Coyote to CI (#4879) 2023-11-17 11:10:05 -08:00
Utkarsh Umesan Pillai f2c225519d
Make MetricPoint reclaim an opt-in experimental feature (#5052) 2023-11-16 14:51:15 -08:00
Piotr Kiełkowicz bdd931e08c
Fix histogram for dns.lookup.duration (#5058) 2023-11-16 11:58:29 -08:00
Vishwesh Bankwar e904994fab
[HttpClient & HttpWebRequest] Set network protocol version from response object (#5043) 2023-11-15 15:21:00 -08:00
Utkarsh Umesan Pillai c337d1ea84
[repo] Misc changes (#5053) 2023-11-15 14:08:03 -08:00
Vishwesh Bankwar b0f9607a80
Upgrade rc dependencies to net8.0 stable (#5051) 2023-11-14 15:28:32 -08:00
Vishwesh Bankwar 201811aa87
[HttpClient and ASP.NET Core] Fix failures due to changes in .NET8.0 stable release (#5049) 2023-11-14 14:17:29 -08:00
Mikel Blanchard ecb5dc8732
[sdk] Ignore event counters in SelfDiagnosticsEventListener (#5046) 2023-11-13 17:07:29 -08:00
Vishwesh Bankwar 78ab35cefd
[ASP.NET Core] Remove suppression for metrics generated from prometheus (#5044) 2023-11-13 13:52:59 -08:00
Cijo Thomas 0bc3bdc7ff
Fixed resource readme to reflect actual default (#5045) 2023-11-13 13:25:42 -08:00
Nils Gruson c062e12ea9
Removed InProcServerTests.cs (#5041)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2023-11-10 15:37:32 -08:00
Vishwesh Bankwar 66373082d8
[HttpClient] update `network.protocol.version` values as per specification (#5006) 2023-11-10 14:29:55 -08:00
Vishwesh Bankwar 4ccee25c9f
[ASP.NET Core] update `network.protocol.version` values as per spec (#5007) 2023-11-09 16:27:17 -08:00
Vishwesh Bankwar b7bc57b6cd
[HttpClient] Fix errorType statusCode (#5039) 2023-11-09 15:37:02 -08:00
Vishwesh Bankwar 94ede6e6a9
[HttpWebRequest] Add `error.type` for trace and metric (#5034) 2023-11-09 14:21:57 -08:00
Dan Nelson 00750ddcca
Fix broken links (#5033) 2023-11-09 10:21:01 -08:00
Alan West 0a989a942f
Add test suite to analyze ASP.NET Core routing scenarios (#4950) 2023-11-09 09:57:55 -08:00
Timothy Mothra f25ff3a4f4
[AspNetCore] [Http] remove Activity Status Description and update unit tests (#5025) 2023-11-08 17:38:55 -08:00
Vishwesh Bankwar 4a3c8d36b3
[HttpClient] Add `error.type` for traces and metrics (#5005)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
Co-authored-by: Timothy Mothra <tilee@microsoft.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2023-11-08 15:50:42 -08:00
Cijo Thomas 91ed41fcd9
Update SIG meeting time to 9AM (#5031) 2023-11-08 14:47:32 -08:00
Utkarsh Umesan Pillai f2ab97636c
[repo] Update Microsoft.Extensions.* packages (#5015) 2023-11-06 12:37:18 -08:00
Mikel Blanchard 5345863908
[repo] Bump Microsoft.Extensions.Logging.Configuration and clean up net462 targets (#5020) 2023-11-03 15:25:16 -07:00
Cijo Thomas 5e6eca84bb
Minor correction to Exemplar default (#5024) 2023-11-03 12:28:49 -07:00
Utkarsh Umesan Pillai 299a6c10f4
Remove zero bucket for the histogram buckets for ASP.NET Core and HttpClient metrics (#5021) 2023-11-03 11:48:15 -07:00
Vishwesh Bankwar d91be7751b
[ASP.NET Core] Add `error.type` attribute for tracing and metrics (#4986) 2023-11-03 11:35:29 -07:00
James Newton-King 37481f1ee6
[sdk] Customize known connection histograms buckets (#5008) 2023-11-02 18:07:07 -07:00
Mikel Blanchard c8f939e60b
[repo] dotnet format ci follow-up (#5012)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2023-11-02 15:34:52 -07:00
Julian Wreford defaffa91f
[Documentation] Update docs for selecting specific tags of a metric instrument (#5017) 2023-11-02 14:52:38 -07:00
Utkarsh Umesan Pillai ba161c492a
[Exemplars] Add isSampled check for Histograms (#5016) 2023-11-02 12:15:05 -07:00
Mikel Blanchard 9ba8887170
[repo] Remove old .net 6 workaround code from test props (#5014) 2023-11-01 15:55:59 -07:00
J. Kalyana Sundaram e454dc9dc8
A code sample to show how to create new root activities that link to a previously current activity. (#4957) 2023-11-01 15:06:26 -07:00
Tom Biddulph 2de73b2c12
[repo] Update dotnet format ci job (#4881)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2023-11-01 12:20:52 -07:00
Piotr Kiełkowicz ff9912f87a
W3C Trace propagator tests - switch to level 1 (#4937) 2023-11-01 01:11:13 -07:00
Vishwesh Bankwar d1d6d4b720
[HttpClient & HttpWebRequest] Set `http.request.method` as per spec (#5003) 2023-10-31 18:16:23 -07:00
Vishwesh Bankwar 5cb7a3fca9
[ASP.NET Core] Set `http.request.method` as per spec (#5001) 2023-10-31 11:50:58 -07:00
ImoutoChan b45b8a9a12
Check isSampled parameter in UpdateWithExemplar method (#5004) 2023-10-30 20:19:14 -07:00
Vishwesh Bankwar 86a6ba0b7f
fix global.json (#5002) 2023-10-27 13:39:44 -07:00
Vishwesh Bankwar d76aa77011
update test packages and global.json to net8.0 rc.2 (#5000) 2023-10-27 12:41:57 -07:00
Piotr Kiełkowicz 0839431cd6
Shim - remove reference to 1.6.0-beta.2 (#4998) 2023-10-27 01:34:39 -07:00
Utkarsh Umesan Pillai 8463f60a51
Update CHANGELOG for 1.6.0-beta.2 release for non-core components (#4995) 2023-10-26 16:51:13 -07:00
Vishwesh Bankwar 74ad003000
[HttpClient & ASP.NET Core] Change metric descriptions as per spec (#4990) 2023-10-26 16:19:13 -07:00
Vishwesh Bankwar f7b4ae1b67
Add `url.scheme` to `http.client.request.duration` metric (#4989) 2023-10-26 14:55:15 -07:00
Timothy Mothra 3c3ba093d5
Improve changelog to indicate which version of sdk (#4991) 2023-10-26 14:12:52 -07:00
Mikel Blanchard cd8de07562
[sdk] Generate a consistent instanceId for the lifetime of a process (#4988) 2023-10-25 14:07:34 -07:00
Julius Koval c0a55775b4
making OtlpLogExporter public (#4979) 2023-10-25 10:42:02 -07:00
Cijo Thomas 637ddcfe4c
Benchmarks for metrics modified to have a metric reader (#4974) 2023-10-24 10:33:31 -07:00
Vishwesh Bankwar faa70be1b3
Remove Enrich and Filter for ASP.NET Core metrics (#4981)
Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2023-10-23 15:44:15 -07:00
Vishwesh Bankwar d07d03086a
Add support for .NET8.0 HttpClient metrics (#4931) 2023-10-20 13:47:28 -07:00
Vishwesh Bankwar 38e21a99bb
[ASP.NET Core] Add support for .NET8.0 specific metrics (#4934) 2023-10-20 12:40:38 -07:00
Mikel Blanchard 50d3af0aff
[repo] Fix conflicts caused by DS upgrade (#4967) 2023-10-19 16:47:01 -07:00
Mikel Blanchard 0f58eb153f
[repo] Public API file cleanup part 4 (#4969) 2023-10-19 14:42:46 -07:00
Mikel Blanchard 296b62de6a
[repo] Public API file cleanup part 3 (#4966) 2023-10-19 11:34:08 -07:00
Mikel Blanchard aa32b119b4
[repo] Public API file cleanup part 2 (#4962) 2023-10-18 17:52:06 -07:00
Mikel Blanchard d04fb289d9
[repo] Public API file cleanup part 1 (#4960) 2023-10-18 11:57:12 -07:00
Vishwesh Bankwar 1ec7a63571
Add .NET8.0 targets to projects (#4918) 2023-10-17 19:48:13 -07:00
Utkarsh Umesan Pillai 83ea1ec83d
Update DiagnosticsSource package version (#4959) 2023-10-17 17:56:47 -07:00
Reiley Yang c257ba598d
Minor clean up for console logging doc (#4949) 2023-10-16 20:38:29 -07:00
Utkarsh Umesan Pillai e66f4f3bf7
Fix publish package workflow (#4954) 2023-10-16 17:04:10 -07:00
Utkarsh Umesan Pillai f63b0adf64
Update CHANGELOG for 1.7.0-alpha.1 (#4952) 2023-10-16 15:05:17 -07:00
Vishwesh Bankwar 33fdd4769a
Add ability to export attributes corresponding to `Logrecord.EventId` (#4925) 2023-10-16 14:05:40 -07:00
Vishwesh Bankwar 037cda86d8
[OTLP] Export LogRecord.CategoryName as InstrumentationScope name (#4941) 2023-10-16 13:17:38 -07:00
Reiley Yang 18c85fa403
Bump Microsoft.Extensions.Logging to net8 - part 2 (#4933) 2023-10-13 12:22:35 -07:00
Vishwesh Bankwar b091af1899
[ASP.NET Core] Disable Flaky test (#4947) 2023-10-13 09:36:29 -07:00
Mikel Blanchard 865bcb64a5
[repo] Package validation tweaks deux (#4927) 2023-10-12 18:04:18 -07:00
Mikel Blanchard 8cc43f23e2
[sdk] Ignore event counters in debug EventListener (#4942) 2023-10-12 11:05:16 -07:00
Yun-Ting Lin 59f1d2ce8d
unblock documentation-only PRs for aot-ci (#4938) 2023-10-11 16:55:07 -07:00
Piotr Kiełkowicz 3c2bb7c93d
Fix `TraceContextPropagator` behavior when trace parent flags contain… (#4893) 2023-10-06 16:37:44 -07:00
Reiley Yang eaf1d88021
Update examples to support net8.0 (#4902) 2023-10-06 16:16:23 -07:00
Reiley Yang f01db2bdfb
Bump Microsoft.Extensions.Logging to net8 (#4920) 2023-10-06 10:58:04 -07:00
Vishwesh Bankwar d76542e9da
[ASP.NET Core] Add net8 target (#4924) 2023-10-05 17:53:59 -07:00
Timothy Mothra be45aab2ba
[Instrumentation.Http] follow up from previous pr (#4919) 2023-10-05 17:17:53 -07:00
Mikel Blanchard c2293e088e
[repo] Package validation tweaks (#4923) 2023-10-05 15:05:37 -07:00
Mikel Blanchard d4d5122316
[api] Fix memory leaks in TracerProvider.GetTracer API (#4906) 2023-10-05 11:41:32 -07:00
Dan Nelson 3e885c77f2
[hosting] Register OpenTelemetry at the beginning of IServiceCollection (#4883)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2023-10-05 11:11:58 -07:00
mfogliatto f63e6e5362
[repo] Uptake .NET Package Validation (#4767)
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
2023-10-05 09:57:27 -07:00
Reiley Yang dc1f09d4b9
Fix TFM bugs (#4912) 2023-10-03 11:54:08 -07:00
Vishwesh Bankwar c18ff6593a
[otlp] Add log exception attributes under feature flag (#4892)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
2023-10-03 11:19:40 -07:00
Reiley Yang b0038ae9b3
Use TFM specific package version (#4911) 2023-10-02 19:15:15 -07:00
Matt Hensley 4124d219fc
[http] Add http.client.request.duration metric and .NET Framework support (#4870)
Co-authored-by: Johannes Tax <johannes@johannes.tax>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2023-10-02 17:06:27 -07:00
Yun-Ting Lin 8ea6bb951c
upgraded the build/CI to use net8.0 (#4876) 2023-10-02 15:58:32 -07:00
Amir Solhi bb57319f95
[hosting] README typo fixes (#4910) 2023-10-02 15:35:37 -07:00
Reiley Yang b22c7a9372
Clean up TFMs for tests (#4907) 2023-10-02 09:29:30 -07:00
Mikel Blanchard 23b041c553
[api] Fix Tracer.StartRootSpan so that it always creates a root span (#4890) 2023-09-29 14:36:51 -07:00
Reiley Yang 043272e6d5
Clean up TFMs for docs (#4904)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2023-09-29 14:11:30 -07:00
Reiley Yang d8ec26b575
Extract TFM for DLLs shipped from this repo (#4903) 2023-09-29 13:24:28 -07:00
Reiley Yang a09b623992
Improve the README of console logging example (#4901) 2023-09-28 21:31:20 -07:00
Reiley Yang c03ee85a74
Minor cleanup (#4899) 2023-09-28 20:46:21 -07:00
Reiley Yang aeca53949a
Improve the logging tutorial by clarifying DI vs. exlicit logging pipeline (#4897) 2023-09-28 16:53:33 -07:00
Mikel Blanchard 0b2d0367b2
[sdk] Build extension behavior tweaks (#4885) 2023-09-28 10:26:58 -07:00
Piotr Kiełkowicz 6e2f44254e
OTLP LogExporter limits configuration by env. var. (#4887) 2023-09-27 10:13:27 -07:00
Reiley Yang bc1badf3ae
Update more examples to align with the recommended path (#4886) 2023-09-26 22:19:38 -07:00
Tom Biddulph a80d7ce711
[sdk] Allow `/` in metric instrument names (#4882)
Co-authored-by: Reiley Yang <reyang@microsoft.com>
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
2023-09-26 11:48:23 -07:00
Mikel Blanchard 48b4a8c4e8
[api] Nullable annotations for the trace folder (#4873) 2023-09-25 17:10:45 -07:00
Reiley Yang 9302891028
Simplify/improve Prometheus tutorial (#4878) 2023-09-25 10:19:33 -07:00
Utkarsh Umesan Pillai 2a480cd732
Update AggregatorStore to reclaim unused MetricPoints for Delta aggregation temporality (#4486)
Co-authored-by: Mikel Blanchard <mblanchard@macrosssoftware.com>
Co-authored-by: Alan West <3676547+alanwest@users.noreply.github.com>
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2023-09-24 22:55:42 -07:00
Reiley Yang f468dd8359
Use OTLP push mode in Prometheus tutorial (#4874)
Co-authored-by: Vishwesh Bankwar <vishweshbankwar@users.noreply.github.com>
2023-09-22 15:13:12 -07:00
Reiley Yang 535c81912b
Improve console logging example by explaining more about Dispose (#4869) 2023-09-21 13:39:18 -07:00
Yun-Ting Lin 15a54bb7a1
added NET8 RC1 target (#4868) 2023-09-21 10:42:30 -07:00
Eric Erhardt f3da99f4ea
Address AOT warnings in Exporter.OpenTelemetryProtocol (#4859) 2023-09-20 10:51:15 -07:00
Vishwesh Bankwar 7cb92d3b6d
[integration test] otlp log exporter (#4854) 2023-09-18 12:36:47 -07:00
Piotr Kiełkowicz 224a4cc250
Use dotnet-coverage instead of CodeCoverage.exe (#4857) 2023-09-18 12:00:20 -07:00
Reiley Yang 7eb3e7322e
Align console logging example with ASP.NET Core logging example (#4855) 2023-09-18 11:37:36 -07:00
Robert Pająk fc1100f794
Move @pellared to emeritus (#4856) 2023-09-18 11:12:19 -07:00
Piotr Kiełkowicz 2c5c034ec6
[OpenTracing.Shim] Remove obsolete constructor (#4862) 2023-09-18 11:05:13 -07:00
Utkarsh Umesan Pillai fe78453c03
Update docs projects (#4853) 2023-09-14 22:15:56 -07:00
Reiley Yang e9d0e2b035
Add ASP.NET Core logging example (#4821) 2023-09-14 17:44:29 -07:00
Timothy Mothra 9139b72128
HttpSemanticConventions - new metric in AspNetCore Instrumentation. (#4802) 2023-09-14 16:06:53 -07:00
Mikel Blanchard 680115f9dc
[sdk] Clean up nullable enable statements (#4848) 2023-09-14 13:59:17 -07:00
Mikel Blanchard b870ed9b0c
[sdk] Nullable annotations for the metrics folder (#4845) 2023-09-12 19:47:08 -07:00
John Huang b139e945f4
[dev.documentation] for up to 3 tags, its faster to directly pass the… (#4843) 2023-09-12 15:01:48 -07:00
Mikel Blanchard c97a233a9a
[sdk] Nullable annotations for the internal folder + some misc cleanup (#4841) 2023-09-11 10:10:27 -07:00
Mikel Blanchard 185d62254c
[sdk] Add missing XML comments and nullable decorations for public APIs (#4840) 2023-09-08 13:00:12 -07:00
Mikel Blanchard 459783f700
[repo] Common.prod.props & csproj cleanup (#4835) 2023-09-07 11:04:19 -07:00
Utkarsh Umesan Pillai 92cdcc55f8
Update OTel latest stable version (#4836) 2023-09-06 23:57:25 -07:00
Vishwesh Bankwar c0d75a727c
Readme update - remove *condition for logs (#4834) 2023-09-06 19:30:41 -07:00
James Newton-King 1f6d2cc873
Fix Prometheus exporter writing bool label values (#4823) 2023-09-06 18:05:17 -07:00
Vishwesh Bankwar 0228fb9718
[otlp] Clarify breaking change for stable release (#4829) 2023-09-06 16:44:14 -07:00
1231 changed files with 45482 additions and 53293 deletions

4
.clomonitor.yml Normal file
View File

@ -0,0 +1,4 @@
# see https://github.com/cncf/clomonitor/blob/main/docs/checks.md#exemptions
exemptions:
- check: artifacthub_badge
reason: "Artifact Hub doesn't support .NET packages"

View File

@ -10,9 +10,18 @@ indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.sh]
end_of_line = lf
[*.{cs,cshtml,htm,html,md,py,sln,xml}]
indent_size = 4
###############################
# Copyright header #
###############################
[*.cs]
file_header_template = Copyright The OpenTelemetry Authors\nSPDX-License-Identifier: Apache-2.0
###############################
# .NET Coding Conventions #
###############################
@ -35,7 +44,7 @@ csharp_indent_labels = flush_left
# Modifier preferences
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:suggestion
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
# this. preferences
dotnet_style_qualification_for_field = true:suggestion
@ -47,8 +56,8 @@ dotnet_style_qualification_for_event = true:suggestion
csharp_style_var_for_built_in_types = true:silent
csharp_style_var_when_type_is_apparent = true:silent
csharp_style_var_elsewhere = true:silent
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
dotnet_style_predefined_type_for_member_access = true:silent
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion
# name all constant fields using PascalCase
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
@ -69,6 +78,7 @@ dotnet_style_readonly_field = true:suggestion
csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
dotnet_style_prefer_simplified_interpolation = true:suggestion
dotnet_style_object_initializer = true:suggestion
csharp_style_prefer_primary_constructors = false:none
# Expression-level preferences
dotnet_style_object_initializer = true:suggestion
@ -76,21 +86,23 @@ dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_unused_value_expression_statement_preference = discard_variable:none
# Expression-bodied members
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_methods = true:suggestion
dotnet_diagnostic.IDE0022.severity = suggestion # dotnet format doesn't respect the suggestion in the line above
csharp_style_expression_bodied_constructors = false:warning
csharp_style_expression_bodied_operators = true:suggestion
csharp_style_expression_bodied_properties = true:suggestion
csharp_style_expression_bodied_indexers = true:suggestion
csharp_style_expression_bodied_accessors = true:suggestion
# Pattern matching
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
@ -107,6 +119,7 @@ csharp_style_prefer_range_operator = false:none
csharp_style_pattern_local_over_anonymous_function = true:suggestion
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_namespace_declarations = file_scoped:warning
dotnet_style_namespace_match_folder = false:none
# Space preferences
csharp_space_after_cast = false
@ -122,10 +135,10 @@ csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:suggestion
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:suggestion
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:suggestion
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:suggestion
# Code analyzers
# CA1031: Do not catch general exception types
@ -146,7 +159,14 @@ dotnet_diagnostic.IDE0005.severity = warning
# RS0041: Public members should not use oblivious types
dotnet_diagnostic.RS0041.severity = suggestion
[obj/**.cs]
[*Tests.cs]
# CA1515: Disable making types internal for Tests classes. It is required by xunit
dotnet_diagnostic.CA1515.severity = none
# CA2007: Disable Consider calling ConfigureAwait on the awaited task. It is not working with xunit
dotnet_diagnostic.CA2007.severity = none
[**/obj/**.cs]
generated_code = true
[*.csproj]

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.sh eol=lf

View File

@ -1,45 +0,0 @@
---
name: Bug Report
about: Create a report to help us improve
labels: bug
---
# Bug Report
List of [all OpenTelemetry NuGet
packages](https://www.nuget.org/profiles/OpenTelemetry) and version that you are
using (e.g. `OpenTelemetry 1.0.2`):
* TBD
Runtime version (e.g. `net462`, `net48`, `netcoreapp3.1`, `net6.0` etc. You can
find this information from the `*.csproj` file):
* TBD
## Symptom
A clear and concise description of what the bug is.
**What is the expected behavior?**
What did you expect to see?
**What is the actual behavior?**
What did you see instead?
## Reproduce
Create a self-contained project using the template of your choice, apply the
minimum required code to result in the issue you're observing.
We will close this issue if:
* The repro project you share with us is complex. We can't investigate custom
projects, so don't point us to such, please.
* If we can not reproduce the behavior you're reporting.
## Additional Context
Add any other context about the problem here.

94
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@ -0,0 +1,94 @@
name: Bug report
title: "[bug] "
description: Create a report to help us improve
labels: [bug,needs-triage]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report! Please make sure to fill out the entire form below, providing as much context as you can in order to help us triage and track down the bug as quickly as possible.
Before filing a bug, please be sure you have searched through [existing bugs](https://github.com/open-telemetry/opentelemetry-dotnet/issues?q=is%3Aissue+is%3Aopen+label%3Abug) to see if an existing issue covers the bug.
- type: dropdown
id: package
attributes:
label: Package
description: Which NuGet package does this bug report concern?
multiple: false
options:
- OpenTelemetry
- OpenTelemetry.Api
- OpenTelemetry.Api.ProviderBuilderExtensions
- OpenTelemetry.Exporter.Console
- OpenTelemetry.Exporter.InMemory
- OpenTelemetry.Exporter.OpenTelemetryProtocol
- OpenTelemetry.Exporter.Prometheus.AspNetCore
- OpenTelemetry.Exporter.Prometheus.HttpListener
- OpenTelemetry.Exporter.Zipkin
- OpenTelemetry.Extensions.Hosting
- OpenTelemetry.Extensions.Propagators
- OpenTelemetry.Shims.OpenTracing
validations:
required: true
- type: textarea
attributes:
label: Package Version
description: List of [all OpenTelemetry NuGet packages](https://www.nuget.org/profiles/OpenTelemetry) and version that you are using (e.g. `OpenTelemetry 1.0.2`)
value: |
| Package Name | Version |
| ------------------------------------- | ------- |
| OpenTelemetry.Api | 1.8.0 |
| OpenTelemetry | 1.8.0 |
| TBD | TBD |
validations:
required: true
- type: input
attributes:
label: Runtime Version
description: What .NET runtime version did you use? (e.g. `net462`, `net48`, `net8.0`, etc. You can find this information from the `*.csproj` file)
validations:
required: true
- type: textarea
attributes:
label: Description
description: What happened? Please provide as much detail as you reasonably can.
validations:
required: true
- type: textarea
attributes:
label: Steps to Reproduce
description: Provide a [minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). We will close the issue if the repro project you share with us is complex or we cannot reproduce the behavior you are reporting. We cannot investigate custom projects, so don't point us to such, please.
validations:
required: true
- type: textarea
attributes:
label: Expected Result
description: What did you expect to see?
validations:
required: true
- type: textarea
attributes:
label: Actual Result
description: What did you see instead?
validations:
required: true
- type: textarea
attributes:
label: Additional Context
description: Any additional information you think may be relevant to this issue.
- type: dropdown
attributes:
label: Tip
description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
options:
- "<sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with :+1: to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>"
default: 0

7
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,7 @@
# https://docs.github.com/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
blank_issues_enabled: false
contact_links:
- name: Question
url: https://github.com/open-telemetry/opentelemetry-dotnet/discussions/new?category=q-a
about: Ask a question to help us improve our knowledge base and documentation.

View File

@ -1,29 +0,0 @@
---
name: Feature Request
about: Suggest an idea for this project
labels: enhancement
---
# Feature Request
Before opening a feature request against this repo, consider whether the feature
should/could be implemented in the [other OpenTelemetry client
libraries](https://github.com/open-telemetry/). If so, please [open an issue on
opentelemetry-specification](https://github.com/open-telemetry/opentelemetry-specification/issues/new)
first.
**Is your feature request related to a problem?**
If so, provide a concise description of the problem.
**Describe the solution you'd like:**
What do you want to happen instead? What is the expected behavior?
**Describe alternatives you've considered.**
Which alternative solutions or features have you considered?
## Additional Context
Add any other context about the feature request here.

View File

@ -0,0 +1,63 @@
name: Feature request
title: "[feature request] "
description: Suggest an idea for this project
labels: [enhancement,needs-triage]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this feature request! Please make sure to fill out the entire form below, providing as much context as you can in order to help us triage and track down your request as quickly as possible.
Before opening a feature request, consider whether the feature should/could be implemented in the [other OpenTelemetry client libraries](https://github.com/open-telemetry/). If so, please [open an issue on opentelemetry-specification](https://github.com/open-telemetry/opentelemetry-specification/issues/new) first.
- type: dropdown
id: package
attributes:
label: Package
description: Which NuGet package does this feature request concern?
multiple: false
options:
- OpenTelemetry
- OpenTelemetry.Api
- OpenTelemetry.Api.ProviderBuilderExtensions
- OpenTelemetry.Exporter.Console
- OpenTelemetry.Exporter.InMemory
- OpenTelemetry.Exporter.OpenTelemetryProtocol
- OpenTelemetry.Exporter.Prometheus.AspNetCore
- OpenTelemetry.Exporter.Prometheus.HttpListener
- OpenTelemetry.Exporter.Zipkin
- OpenTelemetry.Extensions.Hosting
- OpenTelemetry.Extensions.Propagators
- OpenTelemetry.Shims.OpenTracing
- type: textarea
attributes:
label: Is your feature request related to a problem?
description: If so, provide a concise description of the problem.
- type: textarea
attributes:
label: What is the expected behavior?
description: Describe the solution you would like.
validations:
required: true
- type: textarea
attributes:
label: Which alternative solutions or features have you considered?
description: Describe alternatives you've considered.
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: Any additional information you think may be relevant to this feature request.
- type: dropdown
attributes:
label: Tip
description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
options:
- "<sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with :+1: to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>"
default: 0

View File

@ -1,9 +0,0 @@
---
name: Question
about: Create a question to help us improve our knowledge base and documentation
labels: question
---
# Question
Use [Github Discussions](https://github.com/open-telemetry/opentelemetry-dotnet/discussions/new).

View File

@ -7,7 +7,7 @@ Please provide a brief description of the changes here.
## Merge requirement checklist
* [ ] [CONTRIBUTING](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/CONTRIBUTING.md) guidelines followed (nullable enabled, static analysis, etc.)
* [ ] [CONTRIBUTING](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/CONTRIBUTING.md) guidelines followed (license requirements, nullable enabled, static analysis, etc.)
* [ ] Unit tests added/updated
* [ ] Appropriate `CHANGELOG.md` files updated for non-trivial changes
* [ ] Changes in public API reviewed (if applicable)

31
.github/codecov.yml vendored
View File

@ -23,7 +23,32 @@ comment:
require_changes: no
ignore:
- "docs/**/*"
- "examples/**/*"
- "test/**/*"
- "**.md"
- ".github"
- ".vscode"
- "build"
- "docs"
- "examples"
- "src/Shared"
- "test"
flags:
unittests-Solution:
carryforward: true
paths:
- src
unittests-Project-Stable:
carryforward: true
paths:
- src
unittests-Project-Experimental:
carryforward: true
paths:
- src
unittests-UnstableCoreLibraries-Experimental:
carryforward: true
paths:
- src

View File

@ -6,3 +6,70 @@ updates:
interval: "daily"
labels:
- "infra"
- package-ecosystem: "docker"
directory: "/examples/MicroserviceExample/WebApi"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "docker"
directory: "examples/MicroserviceExample/WorkerService"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "docker"
directory: "test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "docker"
directory: "test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "dotnet-sdk"
directory: "/"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "pip"
directory: "test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"

View File

@ -0,0 +1,115 @@
# Called by ci.yml to build & test project files
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
name: Build Component
on:
workflow_call:
inputs:
project-name:
required: true
type: string
project-build-commands:
default: ''
required: false
type: string
code-cov-name:
required: true
type: string
code-cov-prefix:
default: 'unittests'
required: false
type: string
os-list:
default: '[ "windows-latest", "ubuntu-22.04", "ubuntu-22.04-arm" ]'
required: false
type: string
tfm-list:
default: '[ "net462", "net8.0", "net9.0" ]'
required: false
type: string
permissions:
contents: read
jobs:
build-test:
strategy:
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
matrix:
os: ${{ fromJSON(inputs.os-list) }}
version: ${{ fromJSON(inputs.tfm-list) }}
exclude:
- os: ubuntu-22.04
version: net462
- os: ubuntu-22.04-arm
version: net462
- os: ubuntu-22.04-arm
version: net8.0
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
# the version tag which is typically NOT on the first commit so we
# retrieve them all.
fetch-depth: 0
- name: Setup previous .NET runtimes
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
with:
dotnet-version: |
8.0.x
- name: Setup .NET
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: dotnet restore ${{ inputs.project-name }}
run: dotnet restore ${{ inputs.project-name }} ${{ inputs.project-build-commands }}
- name: dotnet build ${{ inputs.project-name }}
run: dotnet build ${{ inputs.project-name }} --configuration Release --no-restore ${{ inputs.project-build-commands }}
- name: dotnet test ${{ inputs.project-name }}
run: >
dotnet test ${{ inputs.project-name }}
--collect:"Code Coverage"
--results-directory:TestResults
--framework ${{ matrix.version }}
--configuration Release
--no-restore
--no-build
--logger:"console;verbosity=detailed"
--logger:"GitHubActions;report-warnings=false"
--logger:"junit;LogFilePath=TestResults/junit.xml"
-- RunConfiguration.DisableAppDomain=true
- name: Install coverage tool
run: dotnet tool install -g dotnet-coverage
- name: Merging test results
run: dotnet-coverage merge -f cobertura -o ./TestResults/Cobertura.xml ./TestResults/**/*.coverage
- name: Upload code coverage ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
continue-on-error: true # Note: Don't fail for upload failures
env:
OS: ${{ matrix.os }}
TFM: ${{ matrix.version }}
with:
files: TestResults/Cobertura.xml
env_vars: OS,TFM
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
name: Code Coverage for ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} on [${{ matrix.os }}.${{ matrix.version }}]
codecov_yml_path: .github/codecov.yml
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload test results ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
if: ${{ !cancelled() && hashFiles('./**/TestResults/junit.xml') != '' }}
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
env_vars: OS,TFM
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
name: Test results for ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} on [${{ matrix.os }}.${{ matrix.version }}]
token: ${{ secrets.CODECOV_TOKEN }}

58
.github/workflows/add-labels.yml vendored Normal file
View File

@ -0,0 +1,58 @@
name: 'Add labels to issues and pull requests'
on:
issues:
types: [ opened ]
pull_request_target:
branches: [ 'main*' ]
permissions:
contents: read
jobs:
add-labels-on-issues:
permissions:
issues: write
if: github.event_name == 'issues' && !github.event.issue.pull_request
runs-on: ubuntu-22.04
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add labels for package found in bug issue descriptions
shell: pwsh
run: |
Import-Module .\build\scripts\add-labels.psm1
AddLabelsOnIssuesForPackageFoundInBody `
-issueNumber ${{ github.event.issue.number }} `
-issueBody $env:ISSUE_BODY
env:
GH_TOKEN: ${{ github.token }}
ISSUE_BODY: ${{ github.event.issue.body }}
add-labels-on-pull-requests:
permissions:
pull-requests: write
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-22.04
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ github.event.repository.default_branch }} # Note: Do not run on the PR branch we want to execute add-labels.psm1 from main on the base repo only because pull_request_target can see secrets
- name: Add labels for files changed on pull requests
shell: pwsh
run: |
Import-Module .\build\scripts\add-labels.psm1
AddLabelsOnPullRequestsBasedOnFilesChanged `
-pullRequestNumber ${{ github.event.pull_request.number }} `
-labelPackagePrefix 'pkg:'
env:
GH_TOKEN: ${{ github.token }}

View File

@ -1,27 +0,0 @@
name: API Compatibility
on:
pull_request:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
jobs:
build-test:
runs-on: windows-latest
env:
CheckAPICompatibility: true
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # fetching all
- name: Setup dotnet
uses: actions/setup-dotnet@v3
- name: Install dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore --property:ExposeExperimentalFeatures=true

37
.github/workflows/automation.yml vendored Normal file
View File

@ -0,0 +1,37 @@
name: Resolve automation settings
on:
workflow_call:
outputs:
enabled:
value: ${{ jobs.resolve-automation.outputs.enabled == 'true' }}
token-secret-name:
value: ${{ jobs.resolve-automation.outputs.token-secret-name }}
username:
value: ${{ vars.AUTOMATION_USERNAME }}
email:
value: ${{ vars.AUTOMATION_EMAIL }}
secrets:
OPENTELEMETRYBOT_GITHUB_TOKEN:
required: false
permissions:
contents: read
jobs:
resolve-automation:
runs-on: ubuntu-22.04
outputs:
enabled: ${{ steps.evaluate.outputs.enabled }}
token-secret-name: ${{ steps.evaluate.outputs.token-secret-name }}
env:
OPENTELEMETRYBOT_GITHUB_TOKEN_EXISTS: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN != '' }}
steps:
- id: evaluate
run: |
echo "enabled=${{ env.OPENTELEMETRYBOT_GITHUB_TOKEN_EXISTS == 'true' }}" >> "$GITHUB_OUTPUT"
echo "token-secret-name=OPENTELEMETRYBOT_GITHUB_TOKEN" >> "$GITHUB_OUTPUT"

View File

@ -1,32 +0,0 @@
name: Publish AOTCompatibility testApp
on:
push:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
jobs:
aot-test:
strategy:
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
matrix:
os: [ ubuntu-latest ]
version: [ net7.0 ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # fetching all
- name: Setup dotnet
uses: actions/setup-dotnet@v3
- name: publish AOT testApp, assert static analysis warning count, and run the app
shell: pwsh
run: .\build\test-aot-compatibility.ps1 ${{ matrix.version }}

View File

@ -1,28 +0,0 @@
# Syntax: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
# See also: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
# Description: This workflow exists to unblock documentation-only PRs.
# IMPORTANT: This workflow MUST use the same 'name' and 'matrix' as the non -md workflow.
name: Test instrumentation libraries
on:
pull_request:
branches: [ 'main*' ]
paths:
- '**.md'
jobs:
build-test:
strategy:
matrix:
os: [ windows-latest, ubuntu-latest ]
version: [ net462, net6.0, net7.0 ]
exclude:
- os: ubuntu-latest
version: net462
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

View File

@ -1,44 +0,0 @@
name: Test instrumentation libraries # test instrumentation libraries with latest stable version of API/SDK as they are packed against it
on:
push:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
jobs:
build-test:
strategy:
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
matrix:
os: [ windows-latest, ubuntu-latest ]
version: [ net462, net6.0, net7.0 ]
exclude:
- os: ubuntu-latest
version: net462
runs-on: ${{ matrix.os }}
env:
RunningDotNetPack: true
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # fetching all
- name: Setup dotnet
uses: actions/setup-dotnet@v3
- name: Install dependencies
run: dotnet restore ./build/InstrumentationLibraries.proj
- name: Build
run: dotnet build ./build/InstrumentationLibraries.proj --configuration Release --no-restore
- name: Test ${{ matrix.version }}
run: dotnet test **/bin/Release/${{ matrix.version }}/OpenTelemetry.Instrumentation*.Tests.dll --logger:"console;verbosity=detailed"

View File

@ -1,41 +0,0 @@
# Syntax: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
# See also: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
# Description: This workflow exists to unblock documentation-only PRs.
# IMPORTANT: This workflow MUST use the same 'name' and 'matrix' as the non -md workflow.
name: Build
on:
pull_request:
branches: [ 'main*' ]
paths:
- '**.md'
jobs:
build-test-stable:
strategy:
matrix:
os: [ windows-latest, ubuntu-latest ]
version: [ net462, net6.0, net7.0 ]
exclude:
- os: ubuntu-latest
version: net462
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'
build-test-experimental:
strategy:
matrix:
os: [ windows-latest, ubuntu-latest ]
version: [ net462, net6.0, net7.0 ]
exclude:
- os: ubuntu-latest
version: net462
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

View File

@ -1,68 +1,196 @@
name: Build
on:
workflow_dispatch:
# The push trigger would run the CI workflow when any changes get merged to main branch.
# The build badge on the main README uses the CI results on the main branch to report the build status.
push:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
permissions:
contents: read
jobs:
build-test-stable:
strategy:
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
matrix:
os: [ windows-latest, ubuntu-latest ]
version: [ net462, net6.0, net7.0 ]
exclude:
- os: ubuntu-latest
version: net462
lint-misspell-sanitycheck:
uses: ./.github/workflows/sanitycheck.yml
runs-on: ${{ matrix.os }}
detect-changes:
runs-on: windows-latest
outputs:
changes: ${{ steps.changes.outputs.changes }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: AurorNZ/paths-filter@3b1f3abc3371cca888d8eb03dfa70bc8a9867629 # v4.0.0
id: changes
with:
fetch-depth: 0 # fetching all
filters: |
md: ['**.md']
build: ['build/**', '.github/**/*.yml', '**/*.targets', '**/*.props', 'global.json']
shared: ['src/Shared/**']
code: ['**.cs', '**.csproj', '.editorconfig']
solution: ['OpenTelemetry.sln']
packaged-code: ['src/**', '!**/*.md']
api-code: ['*/OpenTelemetry.Api*/**', '!**/*.md']
api-packages: ['src/OpenTelemetry.Api*/**', '!**/*.md']
instrumentation: ['*/OpenTelemetry.Instrumentation*/**', 'test/TestApp.AspNetCore/**', '!**/*.md']
sdk-code: ['src/OpenTelemetry/**', 'test/OpenTelemetry.Tests/**', '!**/*.md']
sdk-package: ['src/OpenTelemetry/**', '!**/*.md']
unstable-core-packages: ['src/OpenTelemetry.Exporter.Prometheus.AspNetCore/**', 'src/OpenTelemetry.Exporter.Prometheus.HttpListener/**', 'src/OpenTelemetry.Shims.OpenTracing/**', '!**/*.md']
otlp: ['*/OpenTelemetry.Exporter.OpenTelemetryProtocol*/**', '!**/*.md']
- name: Setup dotnet
uses: actions/setup-dotnet@v3
lint-md:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'md')
|| contains(needs.detect-changes.outputs.changes, 'build')
uses: ./.github/workflows/markdownlint.yml
- name: Install dependencies
run: dotnet restore
lint-dotnet-format:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'code')
|| contains(needs.detect-changes.outputs.changes, 'build')
uses: ./.github/workflows/dotnet-format.yml
- name: Build
run: dotnet build --configuration Release --no-restore --property:ExposeExperimentalFeatures=false
build-test-solution:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'solution')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/Component.BuildTest.yml
with:
project-name: 'OpenTelemetry.sln'
code-cov-name: 'Solution'
- name: Test ${{ matrix.version }}
run: dotnet test **/bin/**/${{ matrix.version }}/*.Tests.dll --logger:"console;verbosity=detailed"
build-test-project-stable:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'code')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/Component.BuildTest.yml
with:
project-name: './build/OpenTelemetry.proj'
project-build-commands: '-p:ExposeExperimentalFeatures=false'
code-cov-name: 'Project-Stable'
build-test-experimental:
build-test-project-experimental:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'code')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/Component.BuildTest.yml
with:
project-name: './build/OpenTelemetry.proj'
project-build-commands: '-p:ExposeExperimentalFeatures=true'
code-cov-name: 'Project-Experimental'
# Build unstable core libraries using stable packages released to NuGet
build-test-unstable-core:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'unstable-core-packages')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/Component.BuildTest.yml
with:
project-name: './build/UnstableCoreLibraries.proj'
project-build-commands: '-p:RunningDotNetPack=true -p:ExposeExperimentalFeatures=true'
code-cov-name: 'UnstableCoreLibraries-Experimental'
otlp-integration-test:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'api-packages')
|| contains(needs.detect-changes.outputs.changes, 'sdk-package')
|| contains(needs.detect-changes.outputs.changes, 'otlp')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
runs-on: ubuntu-22.04
strategy:
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
fail-fast: false
matrix:
os: [ windows-latest, ubuntu-latest ]
version: [ net462, net6.0, net7.0 ]
exclude:
- os: ubuntu-latest
version: net462
runs-on: ${{ matrix.os }}
version: [ net8.0, net9.0 ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # fetching all
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Run OTLP Exporter docker compose
run: docker compose --file=test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build
- name: Setup dotnet
uses: actions/setup-dotnet@v3
w3c-trace-context-integration-test:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'api-packages')
|| contains(needs.detect-changes.outputs.changes, 'sdk-package')
|| contains(needs.detect-changes.outputs.changes, 'instrumentation')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
version: [ net8.0, net9.0 ]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Run W3C Trace Context docker compose
run: docker compose --file=test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build
- name: Install dependencies
run: dotnet restore
validate-packages:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'packaged-code')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/package-validation.yml
- name: Build
run: dotnet build --configuration Release --no-restore --property:ExposeExperimentalFeatures=true
generate-docs:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'packaged-code')
|| contains(needs.detect-changes.outputs.changes, 'md')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/docfx.yml
- name: Test ${{ matrix.version }}
run: dotnet test **/bin/**/${{ matrix.version }}/*.Tests.dll --logger:"console;verbosity=detailed"
verify-aot-compat:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'packaged-code')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/verifyaotcompat.yml
concurrency-tests:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'api-code')
|| contains(needs.detect-changes.outputs.changes, 'sdk-code')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/concurrency-tests.yml
build-test:
needs: [
detect-changes,
lint-misspell-sanitycheck,
lint-md,
lint-dotnet-format,
build-test-solution,
build-test-project-stable,
build-test-project-experimental,
build-test-unstable-core,
otlp-integration-test,
w3c-trace-context-integration-test,
validate-packages,
generate-docs,
verify-aot-compat,
concurrency-tests
]
if: always() && !cancelled()
runs-on: ubuntu-22.04
steps:
- run: |
if ( ${{ contains(needs.*.result, 'failure') }} == true ); then echo 'build failed'; exit 1; else echo 'build complete'; fi

View File

@ -1,56 +0,0 @@
name: Code Coverage
on:
push:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
jobs:
build-test-report:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # fetching all
- name: Setup dotnet
uses: actions/setup-dotnet@v3
- name: Install dependencies
run: dotnet restore
- name: dotnet build
run: dotnet build --configuration Release --no-restore --property:ExposeExperimentalFeatures=true
# - name: dotnet test
# run: dotnet test --collect:"XPlat Code Coverage" --results-directory:"TestResults" --configuration Release --no-build -- RunConfiguration.DisableAppDomain=true
- name: dotnet test
run: dotnet test --collect:"Code Coverage" --results-directory:"TestResults" --configuration Release --no-build -- RunConfiguration.DisableAppDomain=true
- name: Process code coverage
run: .\build\process-codecoverage.ps1
shell: powershell
- name: Install report tool
run: dotnet tool install -g dotnet-reportgenerator-globaltool
- name: Merging test results
run: reportgenerator -reports:TestResults/**/*.xml -targetdir:TestResults -reporttypes:Cobertura -assemblyFilters:"-microsoft.data.sqlclient*;-grpc.core*;-opentracing*"
- uses: codecov/codecov-action@v3.1.4
with:
file: TestResults/Cobertura.xml
env_vars: OS
name: Code Coverage for ${{ matrix.os }}

View File

@ -1,64 +1,71 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "CodeQL"
on:
push:
branches: [ 'main' ]
pull_request:
branches: [ 'main' ]
schedule:
- cron: '0 0 * * *' # once in a day at 00:00
workflow_dispatch:
permissions: {}
jobs:
analyze:
name: Analyze
permissions:
actions: read # for github/codeql-action/init to get workflow details
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/analyze to upload SARIF results
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
# Override automatic language detection by changing the below list
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
language: ['csharp']
# Learn more...
# https://docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
language: ['actions', 'csharp']
steps:
- name: configure Pagefile
uses: al-cheb/configure-pagefile-action@v1.3
- name: Configure Pagefile
if: matrix.language == 'csharp'
uses: al-cheb/configure-pagefile-action@a3b6ebd6b634da88790d9c58d4b37a7f4a7b8708 # v1.4
with:
minimum-size: 8GB
maximum-size: 32GB
disk-root: "D:"
- name: Checkout repository
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
filter: 'tree:0'
persist-credentials: false
show-progress: false
- name: Initialize CodeQL
uses: github/codeql-action/init@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
with:
build-mode: none
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# https://git.io/JvXDl
# If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
with:
category: '/language:${{ matrix.language }}'
codeql:
if: ${{ !cancelled() }}
needs: [ analyze ]
runs-on: ubuntu-latest
steps:
- name: Report status
shell: bash
env:
SCAN_SUCCESS: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
run: |
if [ "${SCAN_SUCCESS}" == "true" ]
then
echo 'CodeQL analysis successful'
else
echo 'CodeQL analysis failed'
exit 1
fi

37
.github/workflows/concurrency-tests.yml vendored Normal file
View File

@ -0,0 +1,37 @@
# Called by ci.yml to run coyote concurrency tests
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
name: Concurrency Tests
on:
workflow_call:
permissions:
contents: read
jobs:
run-concurrency-tests:
strategy:
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
matrix:
os: [ windows-latest, ubuntu-22.04 ]
version: [ net8.0 ]
project: [ OpenTelemetry.Tests, OpenTelemetry.Api.Tests ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: Run Coyote Tests
shell: pwsh
run: .\build\scripts\test-threadSafety.ps1 -testProjectName ${{ matrix.project }} -targetFramework ${{ matrix.version }}
- name: Publish Artifacts
if: always() && !cancelled()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: ${{ matrix.os }}-${{ matrix.project }}-${{ matrix.version }}-coyoteoutput
path: '**/*_CoyoteOutput.*'

View File

@ -1,21 +1,26 @@
name: docfx
# Called by ci.yml to run documentation build
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
name: Build docfx
on:
push:
branches: [ 'main*' ]
pull_request:
branches: [ 'main*' ]
workflow_call:
permissions:
contents: read
jobs:
build:
run-docfx-build:
runs-on: windows-latest
steps:
- name: check out code
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: install docfx
run: choco install docfx -y
run: dotnet tool install -g docfx
- name: run .\build\docfx.cmd
shell: cmd

View File

@ -1,22 +0,0 @@
# Syntax: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
# See also: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
# Description: This workflow exists to unblock documentation-only PRs.
# IMPORTANT: This workflow MUST use the same 'name' and 'matrix' as the non -md workflow.
name: dotnet format
on:
pull_request:
branches: [ 'main*' ]
paths-ignore:
- '**.cs'
- '.editorconfig'
jobs:
check-format:
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'

View File

@ -1,30 +1,46 @@
name: dotnet format
# Called by ci.yml to perform dotnet format linting
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
name: Lint - dotnet format
on:
push:
branches: [ 'main*' ]
paths:
- '**.cs'
- '.editorconfig'
pull_request:
branches: [ 'main*' ]
paths:
- '**.cs'
- '.editorconfig'
workflow_call:
permissions:
contents: read
jobs:
check-format:
run-dotnet-format-stable:
runs-on: windows-latest
steps:
- name: check out code
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup dotnet
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: Install format tool
run: dotnet tool install -g dotnet-format
- name: dotnet restore
run: dotnet restore OpenTelemetry.sln
- name: dotnet format
run: dotnet-format --folder --check
run: dotnet format OpenTelemetry.sln --no-restore --verify-no-changes # Note: .proj files are currently not supported by dotnet format
env:
ExposeExperimentalFeatures: false
run-dotnet-format-experimental:
runs-on: windows-latest
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: dotnet restore
run: dotnet restore OpenTelemetry.sln
- name: dotnet format
run: dotnet format OpenTelemetry.sln --no-restore --verify-no-changes # Note: .proj files are currently not supported by dotnet format
env:
ExposeExperimentalFeatures: true

20
.github/workflows/fossa.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: FOSSA scanning
on:
push:
branches:
- main
permissions:
contents: read
jobs:
fossa:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: fossas/fossa-action@3ebcea1862c6ffbd5cf1b4d0bd6b3fe7bd6f2cac # v1.7.0
with:
api-key: ${{secrets.FOSSA_API_KEY}}
team: OpenTelemetry

View File

@ -1,39 +0,0 @@
# Syntax: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
# See also: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
# Description: This workflow exists to unblock documentation-only PRs.
# IMPORTANT: This workflow MUST use the same 'name' and 'matrix' as the non -md workflow.
name: Integration Tests
on:
pull_request:
branches: [ 'main*' ]
paths:
- '**.md'
jobs:
sql-test:
runs-on: ubuntu-latest
strategy:
matrix:
version: [net6.0,net7.0]
steps:
- run: 'echo "No build required"'
w3c-trace-context-test:
runs-on: ubuntu-latest
strategy:
matrix:
version: [net6.0,net7.0]
steps:
- run: 'echo "No build required"'
otlp-exporter-test:
runs-on: ubuntu-latest
strategy:
matrix:
version: [net6.0,net7.0]
steps:
- run: 'echo "No build required"'

View File

@ -1,36 +0,0 @@
name: Integration Tests
on:
push:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
branches: [ 'main*' ]
paths-ignore:
- '**.md'
jobs:
w3c-trace-context-test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: [net6.0,net7.0]
steps:
- uses: actions/checkout@v4
- name: Run W3C Trace Context docker-compose.integration
run: docker-compose --file=test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build
otlp-exporter-test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: [net6.0,net7.0]
steps:
- uses: actions/checkout@v4
- name: Run OTLP Exporter docker-compose.integration
run: docker-compose --file=test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build

View File

@ -1,25 +1,24 @@
name: markdownlint
# Called by ci.yml to perform markdown linting
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
name: Lint - Markdown
on:
push:
branches: [ 'main*' ]
paths:
- '**.md'
pull_request:
branches: [ 'main*' ]
paths:
- '**.md'
workflow_call:
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
run-markdownlint:
runs-on: ubuntu-22.04
steps:
- name: check out code
uses: actions/checkout@v4
- name: install markdownlint-cli
run: sudo npm install -g markdownlint-cli
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: run markdownlint
run: markdownlint .
uses: DavidAnson/markdownlint-cli2-action@992badcdf24e3b8eb7e87ff9287fe931bcb00c6e # v20.0.0
with:
globs: |
**/*.md
!.github/**/*.md

47
.github/workflows/ossf-scorecard.yml vendored Normal file
View File

@ -0,0 +1,47 @@
name: OSSF Scorecard
on:
push:
branches:
- main
schedule:
- cron: "24 5 * * 0" # once a week
workflow_dispatch:
permissions: read-all
jobs:
analysis:
runs-on: ubuntu-latest
permissions:
# Needed for Code scanning upload
security-events: write
# Needed for GitHub OIDC token if publish_results is true
id-token: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
with:
results_file: results.sarif
results_format: sarif
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable
# uploads of run results in SARIF format to the repository Actions tab.
# https://docs.github.com/en/actions/advanced-guides/storing-workflow-data-as-artifacts
- name: "Upload artifact"
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
with:
sarif_file: results.sarif

View File

@ -0,0 +1,58 @@
# Called by ci.yml to perform package validation
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
name: Package Validation
on:
workflow_call:
permissions:
contents: read
jobs:
run-package-validation-stable:
runs-on: windows-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
# the version tag which is typically NOT on the first commit so we
# retrieve them all.
fetch-depth: 0
- name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: dotnet pack
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=false /p:RunningDotNetPack=true
- name: Publish stable NuGet packages to Artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: packages-stable
path: ./artifacts/package/release
if-no-files-found: error
run-package-validation-experimental:
runs-on: windows-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
# the version tag which is typically NOT on the first commit so we
# retrieve them all.
fetch-depth: 0
- name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: dotnet pack
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=true /p:RunningDotNetPack=true
- name: Publish experimental NuGet packages to Artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: packages-experimental
path: ./artifacts/package/release
if-no-files-found: error

125
.github/workflows/post-release.yml vendored Normal file
View File

@ -0,0 +1,125 @@
name: Complete release
on:
workflow_dispatch:
inputs:
tag:
required: true
description: 'Release tag'
type: string
release:
types:
- published
issue_comment:
types:
- created
permissions:
contents: read
jobs:
automation:
uses: ./.github/workflows/automation.yml
secrets: inherit
push-packages-and-publish-release:
runs-on: ubuntu-22.04
needs: automation
if: |
github.event_name == 'issue_comment'
&& github.event.issue.pull_request
&& github.event.issue.locked == true
&& github.event.comment.user.login != needs.automation.outputs.username
&& contains(github.event.comment.body, '/PushPackages')
&& startsWith(github.event.issue.title, '[release] Prepare release ')
&& github.event.issue.pull_request.merged_at
&& needs.automation.outputs.enabled
env:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
ref: ${{ github.event.repository.default_branch }}
- name: Push packages and publish release
shell: pwsh
env:
NUGET_TOKEN: ${{ secrets.NUGET_TOKEN }}
run: |
Import-Module .\build\scripts\post-release.psm1
PushPackagesPublishReleaseUnlockAndPostNoticeOnPrepareReleasePullRequest `
-gitRepository '${{ github.repository }}' `
-pullRequestNumber '${{ github.event.issue.number }}' `
-botUserName '${{ needs.automation.outputs.username }}' `
-commentUserName '${{ github.event.comment.user.login }}' `
-artifactDownloadPath '${{ github.workspace }}/artifacts' `
-pushToNuget '${{ secrets.NUGET_TOKEN != '' }}'
post-release-published:
runs-on: ubuntu-22.04
needs:
- automation
if: |
needs.automation.outputs.enabled
&& (github.event_name == 'release' || github.event_name == 'workflow_dispatch')
env:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Note: By default GitHub only fetches 1 commit. We need all the tags
# for this work.
fetch-depth: 0
ref: ${{ github.event.repository.default_branch }}
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: Create GitHub Pull Request to update stable build version in props
if: |
(github.ref_type == 'tag' && startsWith(github.ref_name, 'core-') && !contains(github.ref_name, '-alpha') && !contains(github.ref_name, '-beta') && !contains(github.ref_name, '-rc'))
|| (inputs.tag && startsWith(inputs.tag, 'core-') && !contains(inputs.tag, '-alpha') && !contains(inputs.tag, '-beta') && !contains(inputs.tag, '-rc'))
shell: pwsh
run: |
Import-Module .\build\scripts\post-release.psm1
CreateStableVersionUpdatePullRequest `
-gitRepository '${{ github.repository }}' `
-tag '${{ inputs.tag || github.ref_name }}' `
-targetBranch '${{ github.event.repository.default_branch }}' `
-gitUserName '${{ needs.automation.outputs.username }}' `
-gitUserEmail '${{ needs.automation.outputs.email }}'
- name: Invoke core version update workflow in opentelemetry-dotnet-contrib repository
if: vars.CONTRIB_REPO
shell: pwsh
run: |
Import-Module .\build\scripts\post-release.psm1
InvokeCoreVersionUpdateWorkflowInRemoteRepository `
-remoteGitRepository '${{ vars.CONTRIB_REPO }}' `
-tag '${{ inputs.tag || github.ref_name }}'
- name: Post notice when release is published
shell: pwsh
run: |
Import-Module .\build\scripts\post-release.psm1
TryPostReleasePublishedNoticeOnPrepareReleasePullRequest `
-gitRepository '${{ github.repository }}' `
-botUserName '${{ needs.automation.outputs.username }}' `
-tag '${{ inputs.tag || github.ref_name }}'

214
.github/workflows/prepare-release.yml vendored Normal file
View File

@ -0,0 +1,214 @@
name: Prepare for a release
on:
workflow_dispatch:
inputs:
tag-prefix:
type: choice
options:
- core-
- coreunstable-
description: 'Release tag prefix'
required: true
version:
type: string
description: 'Release version'
required: true
pull_request:
types:
- closed
issue_comment:
types:
- created
permissions:
contents: read
jobs:
automation:
uses: ./.github/workflows/automation.yml
secrets: inherit
prepare-release-pr:
runs-on: ubuntu-22.04
needs: automation
if: github.event_name == 'workflow_dispatch' && needs.automation.outputs.enabled
env:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Create GitHub Pull Request to prepare release
shell: pwsh
run: |
Import-Module .\build\scripts\prepare-release.psm1
CreatePullRequestToUpdateChangelogsAndPublicApis `
-gitRepository '${{ github.repository }}' `
-minVerTagPrefix '${{ inputs.tag-prefix }}' `
-version '${{ inputs.version }}' `
-requestedByUserName '${{ github.event.sender.login }}' `
-targetBranch '${{ github.ref_name }}' `
-gitUserName '${{ needs.automation.outputs.username }}' `
-gitUserEmail '${{ needs.automation.outputs.email }}'
lock-pr-and-post-notice-to-create-release-tag:
runs-on: ubuntu-22.04
needs: automation
if: |
github.event_name == 'pull_request'
&& github.event.action == 'closed'
&& github.event.pull_request.user.login == needs.automation.outputs.username
&& github.event.pull_request.merged == true
&& startsWith(github.event.pull_request.title, '[release] Prepare release ')
&& needs.automation.outputs.enabled
env:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Lock GitHub Pull Request to prepare release
shell: pwsh
run: |
Import-Module .\build\scripts\prepare-release.psm1
LockPullRequestAndPostNoticeToCreateReleaseTag `
-gitRepository '${{ github.repository }}' `
-pullRequestNumber '${{ github.event.pull_request.number }}' `
-botUserName '${{ needs.automation.outputs.username }}'
create-release-tag-pr-post-notice:
runs-on: ubuntu-22.04
needs: automation
if: |
github.event_name == 'issue_comment'
&& github.event.issue.pull_request
&& github.event.issue.locked == true
&& github.event.comment.user.login != needs.automation.outputs.username
&& contains(github.event.comment.body, '/CreateReleaseTag')
&& startsWith(github.event.issue.title, '[release] Prepare release ')
&& github.event.issue.pull_request.merged_at
&& needs.automation.outputs.enabled
env:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below
fetch-depth: 0
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Create release tag
id: create-tag
shell: pwsh
run: |
Import-Module .\build\scripts\prepare-release.psm1
CreateReleaseTagAndPostNoticeOnPullRequest `
-gitRepository '${{ github.repository }}' `
-pullRequestNumber '${{ github.event.issue.number }}' `
-botUserName '${{ needs.automation.outputs.username }}' `
-gitUserName '${{ needs.automation.outputs.username }}' `
-gitUserEmail '${{ needs.automation.outputs.email }}'
update-changelog-release-dates-on-prepare-pr-post-notice:
runs-on: ubuntu-22.04
needs: automation
if: |
github.event_name == 'issue_comment'
&& github.event.issue.pull_request
&& github.event.issue.state == 'open'
&& github.event.comment.user.login != needs.automation.outputs.username
&& contains(github.event.comment.body, '/UpdateReleaseDates')
&& startsWith(github.event.issue.title, '[release] Prepare release ')
&& github.event.issue.pull_request.merged_at == null
&& needs.automation.outputs.enabled
env:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below
fetch-depth: 0
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Update release date
shell: pwsh
run: |
Import-Module .\build\scripts\prepare-release.psm1
UpdateChangelogReleaseDatesAndPostNoticeOnPullRequest `
-gitRepository '${{ github.repository }}' `
-pullRequestNumber '${{ github.event.issue.number }}' `
-botUserName '${{ needs.automation.outputs.username }}' `
-commentUserName '${{ github.event.comment.user.login }}' `
-gitUserName '${{ needs.automation.outputs.username }}' `
-gitUserEmail '${{ needs.automation.outputs.email }}'
update-releasenotes-on-prepare-pr-post-notice:
runs-on: ubuntu-22.04
needs: automation
if: |
github.event_name == 'issue_comment'
&& github.event.issue.pull_request
&& github.event.issue.state == 'open'
&& github.event.comment.user.login != needs.automation.outputs.username
&& contains(github.event.comment.body, '/UpdateReleaseNotes')
&& startsWith(github.event.issue.title, '[release] Prepare release ')
&& github.event.issue.pull_request.merged_at == null
&& needs.automation.outputs.enabled
env:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below
fetch-depth: 0
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Update release notes
env:
COMMENT_BODY: ${{ github.event.comment.body }}
shell: pwsh
run: |
Import-Module .\build\scripts\prepare-release.psm1
UpdateReleaseNotesAndPostNoticeOnPullRequest `
-gitRepository '${{ github.repository }}' `
-pullRequestNumber '${{ github.event.issue.number }}' `
-botUserName '${{ needs.automation.outputs.username }}' `
-commentUserName '${{ github.event.comment.user.login }}' `
-commentBody $Env:COMMENT_BODY `
-gitUserName '${{ needs.automation.outputs.username }}' `
-gitUserEmail '${{ needs.automation.outputs.email }}'

View File

@ -5,46 +5,143 @@
################### IMPORTANT ###################
#################################################
name: Pack and publish to MyGet
name: Build, pack, and publish to MyGet
on:
release:
types: [published]
workflow_dispatch:
push:
tags:
- 'core-*'
- 'coreunstable-*'
schedule:
- cron: '0 0 * * *' # once in a day at 00:00
jobs:
build-pack:
runs-on: windows-latest
permissions:
contents: read
jobs:
automation:
uses: ./.github/workflows/automation.yml
secrets: inherit
build-pack-publish:
runs-on: windows-latest
permissions:
contents: read
id-token: write
env:
RunningDotNetPack: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COSIGN_YES: "yes"
outputs:
artifact-url: ${{ steps.upload-artifacts.outputs.artifact-url }}
artifact-id: ${{ steps.upload-artifacts.outputs.artifact-id }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0 # fetching all
ref: ${{ github.ref || 'main' }}
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
# the version tag which is typically NOT on the first commit so we
# retrieve them all.
fetch-depth: 0
- name: Setup dotnet
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: Install dependencies
run: dotnet restore OpenTelemetry.proj
- name: Install Cosign
uses: sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2
with:
cosign-release: v2.5.3
- name: dotnet restore
run: dotnet restore ./build/OpenTelemetry.proj -p:RunningDotNetPack=true
- name: dotnet build
run: dotnet build OpenTelemetry.proj --configuration Release --no-restore -p:Deterministic=true -p:BuildNumber=${{ github.run_number }}
run: dotnet build ./build/OpenTelemetry.proj --configuration Release --no-restore -p:Deterministic=true -p:BuildNumber=${{ github.run_number }} -p:RunningDotNetPack=true
- name: Sign DLLs with Cosign Keyless
shell: pwsh
run: |
$projectFiles = Get-ChildItem -Path src/*/*.csproj -File
foreach ($projectFile in $projectFiles) {
$projectName = [System.IO.Path]::GetFileNameWithoutExtension($projectFile)
Get-ChildItem -Path artifacts/bin/$projectName/release_*/$projectName.dll -File | ForEach-Object {
$fileFullPath = $_.FullName
Write-Host "Signing $fileFullPath"
cosign.exe sign-blob $fileFullPath --yes --output-signature $fileFullPath-keyless.sig --output-certificate $fileFullPath-keyless.pem
}
}
- name: dotnet pack
run: dotnet pack OpenTelemetry.proj --configuration Release --no-build
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release --no-restore --no-build -p:PackTag=${{ github.ref_type == 'tag' && github.ref_name || '' }}
- name: Publish Artifacts
uses: actions/upload-artifact@v3
id: upload-artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: ${{ github.ref_name }}-packages
path: '**/bin/**/*.*nupkg'
path: ./artifacts/package/release
if-no-files-found: error
- name: Publish MyGet
env:
MYGET_TOKEN_EXISTS: ${{ secrets.MYGET_TOKEN != '' }}
if: env.MYGET_TOKEN_EXISTS == 'true' # Skip MyGet publish if run on a fork without the secret
run: |
nuget setApiKey ${{ secrets.MYGET_TOKEN }} -Source https://www.myget.org/F/opentelemetry/api/v2/package
nuget push **/bin/**/*.nupkg -Source https://www.myget.org/F/opentelemetry/api/v2/package
nuget push ./artifacts/package/release/*.nupkg -Source https://www.myget.org/F/opentelemetry/api/v2/package
post-build:
runs-on: ubuntu-22.04
needs:
- automation
- build-pack-publish
if: needs.automation.outputs.enabled && github.event_name == 'push'
env:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps:
- name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Download Artifacts
run: |
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token ${{ github.token }}" \
-L \
-o '${{ github.workspace }}/artifacts/${{ github.ref_name }}-packages.zip' \
--create-dirs \
"https://api.github.com/repos/${{ github.repository }}/actions/artifacts/${{ needs.build-pack-publish.outputs.artifact-id }}/zip"
- name: Create GitHub Release draft
shell: pwsh
run: |
Import-Module .\build\scripts\post-release.psm1
CreateDraftRelease `
-gitRepository '${{ github.repository }}' `
-tag '${{ github.ref_name }}' `
-releaseFiles '${{ github.workspace }}/artifacts/${{ github.ref_name }}-packages.zip#Packages'
- name: Post notice when packages are ready
shell: pwsh
run: |
Import-Module .\build\scripts\post-release.psm1
TryPostPackagesReadyNoticeOnPrepareReleasePullRequest `
-gitRepository '${{ github.repository }}' `
-tag '${{ github.ref_name }}' `
-tagSha '${{ github.sha }}' `
-packagesUrl '${{ needs.build-pack-publish.outputs.artifact-url }}' `
-botUserName '${{ needs.automation.outputs.username }}'

View File

@ -1,18 +1,20 @@
name: sanitycheck
# Called by ci.yml to perform general linting
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
name: Lint - Spelling & Encoding
on:
push:
branches: [ 'main*' ]
pull_request:
branches: [ 'main*' ]
workflow_call:
permissions:
contents: read
jobs:
misspell:
runs-on: ubuntu-latest
run-misspell:
runs-on: ubuntu-22.04
steps:
- name: check out code
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: install misspell
run: |
@ -22,12 +24,12 @@ jobs:
- name: run misspell
run: ./bin/misspell -error .
encoding:
runs-on: ubuntu-latest
run-sanitycheck:
runs-on: ubuntu-22.04
steps:
- name: check out code
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: detect non-ASCII encoding and trailing space
run: python3 ./build/sanitycheck.py
run: python3 ./build/scripts/sanitycheck.py

View File

@ -1,21 +1,32 @@
# Syntax: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
# Github Actions Stale: https://github.com/actions/stale
name: "Close stale pull requests"
name: "Manage stale issues and pull requests"
on:
schedule:
- cron: "12 3 * * *" # arbitrary time not to DDOS GitHub
permissions:
contents: read
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write # for actions/stale to close stale issues
pull-requests: write # for actions/stale to close stale PRs
runs-on: ubuntu-22.04
steps:
- uses: actions/stale@v8
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
with:
stale-pr-message: 'This PR was marked stale due to lack of activity and will be closed in 7 days. Commenting or Pushing will instruct the bot to automatically remove the label. This bot runs once per day.'
stale-issue-message: 'This issue was marked stale due to lack of activity and will be closed in 7 days. Commenting will instruct the bot to automatically remove the label. This bot runs once per day.'
close-issue-message: 'Closed as inactive. Feel free to reopen if this issue is still a concern.'
stale-pr-message: 'This PR was marked stale due to lack of activity and will be closed in 7 days. Commenting or pushing will instruct the bot to automatically remove the label. This bot runs once per day.'
close-pr-message: 'Closed as inactive. Feel free to reopen if this PR is still being worked on.'
operations-per-run: 400
days-before-pr-stale: 7
days-before-issue-stale: -1
days-before-issue-stale: 300
days-before-pr-close: 7
days-before-issue-close: -1
days-before-issue-close: 7
exempt-all-issue-milestones: true
exempt-issue-labels: 'keep-open,needs-triage'
exempt-pr-labels: 'keep-open'

29
.github/workflows/verifyaotcompat.yml vendored Normal file
View File

@ -0,0 +1,29 @@
# Called by ci.yml to perform AOT validation
# See: https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow
name: Publish & Verify AOT Compatibility
on:
workflow_call:
permissions:
contents: read
jobs:
run-verify-aot-compat:
strategy:
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
matrix:
os: [ ubuntu-22.04, windows-latest ]
version: [ net8.0, net9.0 ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: publish AOT testApp, assert static analysis warning count, and run the app
shell: pwsh
run: .\build\scripts\test-aot-compatibility.ps1 ${{ matrix.version }}

7
.gitignore vendored
View File

@ -21,6 +21,7 @@
x64/
x86/
bld/
[Aa]rtifacts/
[Bb]in/
[Oo]bj/
[Ll]og/
@ -348,3 +349,9 @@ ASALocalRun/
# Tempo files
tempo-data/
# Coyote Rewrite Files
rewrite.coyote.json
# Test results
TestResults/

View File

@ -1,7 +1,15 @@
# Default state for all rules
default: true
# allow long lines for tables and code blocks
# MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md013.md
MD013:
code_blocks: false
tables: false
# MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md033.md
MD033:
# Allowed elements
allowed_elements: [ 'details', 'summary' ]
# MD059/link-text-should-be-descriptive : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md059.md
MD059: false

View File

@ -10,16 +10,39 @@ for a summary description of past meetings. To request edit access, join the
meeting or get in touch on
[Slack](https://cloud-native.slack.com/archives/C01N3BC2W7Q).
Even though, anybody can contribute, there are benefits of being a member of our
community. See to the [community membership
Anyone may contribute but there are benefits of being a member of our community.
See the [community membership
document](https://github.com/open-telemetry/community/blob/main/community-membership.md)
on how to become a
[**Member**](https://github.com/open-telemetry/community/blob/main/community-membership.md#member),
[**Approver**](https://github.com/open-telemetry/community/blob/main/community-membership.md#approver)
[**Member**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#member),
[**Triager**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager),
[**Approver**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver),
and
[**Maintainer**](https://github.com/open-telemetry/community/blob/main/community-membership.md#maintainer).
[**Maintainer**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer).
## Find a Buddy and Get Started Quickly
## Give feedback
We are always looking for your feedback.
You can do this by [submitting a GitHub issue](https://github.com/open-telemetry/opentelemetry-dotnet/issues/new).
You may also prefer writing on [#otel-dotnet Slack channel](https://cloud-native.slack.com/archives/C01N3BC2W7Q).
### Report a bug
Reporting bugs is an important contribution. Please make sure to include:
* Expected and actual behavior;
* OpenTelemetry, OS, and .NET versions you are using;
* Steps to reproduce;
* [Minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example).
### Request a feature
If you would like to work on something that is not listed as an issue
(e.g. a new feature or enhancement) please create an issue and describe your proposal.
## Find a buddy and get started quickly
If you are looking for someone to help you find a starting point and be a
resource for your first contribution, join our Slack channel and find a buddy!
@ -34,17 +57,24 @@ resource for your first contribution, join our Slack channel and find a buddy!
Your OpenTelemetry buddy is your resource to talk to directly on all aspects of
contributing to OpenTelemetry: providing context, reviewing PRs, and helping
those get merged. Buddies will not be available 24/7, but is committed to
responding during their normal contribution hours.
those get merged. Buddies will not be available 24/7, but are committed to
responding during their normal working hours.
## Development Environment
You can contribute to this project from a Windows, macOS or Linux machine.
You can contribute to this project from a Windows, macOS, or Linux machine.
On all platforms, the minimum requirements are:
* Git client and command line tools.
* .NET 7.0+
* Git client and command line tools
* [.NET SDK (latest stable version)](https://dotnet.microsoft.com/download)
> [!NOTE]
> At times a pre-release version of the .NET SDK may be required to build code
in this repository. Check
[global.json](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/global.json)
to verify the current required version.
### Linux or MacOS
@ -59,42 +89,97 @@ of Windows.
* Visual Studio 2022+ or Visual Studio Code
* .NET Framework 4.6.2+
### Public API
## Public API validation
It is critical to keep public API surface small and clean. This repository is
using `Microsoft.CodeAnalysis.PublicApiAnalyzers` to validate the public APIs.
This analyzer will check if you changed a public property/method so the change
will be easily spotted in pull request. It will also ensure that OpenTelemetry
doesn't expose APIs outside of the library primary concerns like a generic
helper methods.
It is critical to **NOT** make breaking changes to public APIs which have been
released in stable builds. We also strive to keep a minimal public API surface.
This repository is using
[Microsoft.CodeAnalysis.PublicApiAnalyzers](https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md)
and [Package
validation](https://learn.microsoft.com/dotnet/fundamentals/apicompat/package-validation/overview)
to validate public APIs.
#### How to enable and configure
* `Microsoft.CodeAnalysis.PublicApiAnalyzers` will validate public API
changes/additions against a set of "public API files" which capture the
shipped/unshipped public APIs. These files must be maintained manually (not
recommended) or by using tooling/code fixes built into the package (see below
for details).
* Create a folder in your project called `.publicApi` with the frameworks that
as folders you target.
* Create two files called `PublicAPI.Shipped.txt` and `PublicAPI.Unshipped.txt`
in each framework that you target.
* Add the following lines to your csproj:
Public API files are also used to perform public API reviews by repo
approvers/maintainers before releasing stable builds.
```xml
<ItemGroup>
<AdditionalFiles Include=".publicApi\$(TargetFramework)\PublicAPI.Shipped.txt" />
<AdditionalFiles Include=".publicApi\$(TargetFramework)\PublicAPI.Unshipped.txt" />
</ItemGroup>
```
* `Package validation` will validate public API changes/additions against
previously released NuGet packages.
* Use
[IntelliSense](https://docs.microsoft.com/visualstudio/ide/using-intellisense)
to update the publicApi files.
This is performed automatically by the build/CI
[package-validation](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/.github/workflows/package-validation.yml)
workflow.
By default package validation is **NOT** run for local builds. To enable
package validation in local builds set the `EnablePackageValidation` property
to `true` in
[Common.prod.props](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/build/Common.prod.props)
(please do not check in this change).
### Working with Microsoft.CodeAnalysis.PublicApiAnalyzers
#### Update public API files when writing code
[IntelliSense](https://docs.microsoft.com/visualstudio/ide/using-intellisense)
will [suggest
modifications](https://github.com/dotnet/roslyn-analyzers/issues/3322#issuecomment-591031429)
to the `PublicAPI.Unshipped.txt` file when you make changes. After reviewing
these changes, ensure they are reflected across all targeted frameworks. You can
do this by:
* Using the "Fix all occurrences in Project" feature in Visual Studio.
* Manually cycling through each framework using Visual Studio's target framework
dropdown (in the upper right corner) and applying the IntelliSense
suggestions.
> [!IMPORTANT]
> Do **NOT** modify `PublicAPI.Shipped.txt` files. New features and bug fixes
**SHOULD** only require changes to `PublicAPI.Unshipped.txt` files. If you
have to modify a "shipped" file it likely means you made a mistake and broke a
stable API. Typically only maintainers modify the `PublicAPI.Shipped.txt` file
while performing stable releases. If you need help reach out to an approver or
maintainer on Slack or open a draft PR.
#### Enable public API validation in new projects
1. If you are **NOT** using experimental APIs:
* If your API is the same across all target frameworks:
* You only need two files: `.publicApi/PublicAPI.Shipped.txt` and
`.publicApi/PublicAPI.Unshipped.txt`.
* If your APIs differ between target frameworks:
* Place the shared APIs in `.publicApi/PublicAPI.Shipped.txt` and
`.publicApi/PublicAPI.Unshipped.txt`.
* Create framework-specific files for API differences (e.g.,
`.publicApi/net462/PublicAPI.Shipped.txt` and
`.publicApi/net462/PublicAPI.Unshipped.txt`).
2. If you are using experimental APIs:
* Follow the rules above, but create an additional layer in your folder
structure:
* For stable APIs: `.publicApi/Stable/*`.
* For experimental APIs: `.publicApi/Experimental/*`.
* The `Experimental` folder should contain APIs that are public only in
pre-release builds. Typically the `Experimental` folder only contains
`PublicAPI.Unshipped.txt` files as experimental APIs are never shipped
stable.
Example folder structure can be found
[here](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/src/OpenTelemetry.Api/.publicApi).
## Pull Requests
### How to Send Pull Requests
### How to create pull requests
Everyone is welcome to contribute code to `opentelemetry-dotnet` via GitHub pull
requests (PRs).
To create a new PR, fork the project in GitHub and clone the upstream repo:
To create a new PR, fork the project on GitHub and clone the upstream repo:
```sh
git clone https://github.com/open-telemetry/opentelemetry-dotnet.git
@ -125,7 +210,7 @@ If you made changes to the Markdown documents (`*.md` files), install the latest
markdownlint .
```
Check out a new branch, make modifications and push the branch to your fork:
Check out a new branch, make modifications, and push the branch to your fork:
```sh
$ git checkout -b feature
@ -136,20 +221,26 @@ $ git push fork feature
Open a pull request against the main `opentelemetry-dotnet` repo.
### How to Receive Comments
#### Tips and best practices for pull requests
* If the PR is not ready for review, please mark it as
[`draft`](https://github.blog/2019-02-14-introducing-draft-pull-requests/).
* Make sure CLA is signed and all required CI checks are clear.
* Submit small, focused PRs addressing a single
concern/issue.
* Submit small, focused PRs addressing a single concern/issue.
* Make sure the PR title reflects the contribution.
* Write a summary that helps understand the change.
* Include usage examples in the summary, where applicable.
* Include benchmarks (before/after) in the summary, for contributions that are
performance enhancements.
* We are open to bot generated PRs or AI/LLM assisted PRs. Actually, we are
using
[dependabot](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates)
to automate the security updates. However, if you use bots to generate spam
PRs (e.g. incorrect, noisy, non-improvements, unintelligible, trying to sell
your product, etc.), we might close the PR right away with a warning, and if
you keep doing so, we might block your user account.
### How to Get PRs Merged
### How to get pull requests merged
A PR is considered to be **ready to merge** when:
@ -157,18 +248,21 @@ A PR is considered to be **ready to merge** when:
[Approvers](https://github.com/open-telemetry/community/blob/main/community-membership.md#approver).
/
[Maintainers](https://github.com/open-telemetry/community/blob/main/community-membership.md#maintainer).
* Major feedbacks are resolved.
* Major feedback/comments are resolved.
* It has been open for review for at least one working day. This gives people
reasonable time to review.
* Trivial change (typo, cosmetic, doc, etc.) doesn't have to wait for one day.
* Urgent fix can take exception as long as it has been actively communicated.
* Trivial change (typo, cosmetic, doc, etc.) doesn't have to wait for one day.
* Urgent fix can take exception as long as it has been actively communicated.
Any Maintainer can merge the PR once it is **ready to merge**. Note, that some
PRs may not be merged immediately if the repo is in the process of a release and
the maintainers decided to defer the PR to the next release train.
Any maintainer can merge PRs once they are **ready to merge** however
maintainers might decide to wait on merging changes until there are more
approvals and/or dicussion, or based on other factors such as release timing and
risk to users. For example if a stable release is planned and a new change is
introduced adding public API(s) or behavioral changes it might be held until the
next alpha/beta release.
If a PR has been stuck (e.g. there are lots of debates and people couldn't agree
on each other), the owner should try to get people aligned by:
If a PR has become stuck (e.g. there is a lot of debate and people couldn't
agree on the direction), the owner should try to get people aligned by:
* Consolidating the perspectives and putting a summary in the PR. It is
recommended to add a link into the PR description, which points to a comment
@ -183,7 +277,7 @@ on each other), the owner should try to get people aligned by:
the owner should bring it to the OpenTelemetry .NET SIG
[meeting](README.md#contributing).
## Design Choices
## Design choices
As with other OpenTelemetry clients, opentelemetry-dotnet follows the
[opentelemetry-specification](https://github.com/open-telemetry/opentelemetry-specification).
@ -191,7 +285,7 @@ As with other OpenTelemetry clients, opentelemetry-dotnet follows the
It's especially valuable to read through the [library
guidelines](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/library-guidelines.md).
### Focus on Capabilities, Not Structure Compliance
### Focus on capabilities not structural compliance
OpenTelemetry is an evolving specification, one where the desires and use cases
are clear, but the method to satisfy those uses cases are not.
@ -205,10 +299,10 @@ than conform to specific API names or argument patterns in the spec.
For a deeper discussion, see [this spec
issue](https://github.com/open-telemetry/opentelemetry-specification/issues/165).
## Style Guide
## Style guide
This project includes a [`.editorconfig`](./.editorconfig) file which is
supported by all the IDEs/editor mentioned above. It works with the IDE/editor
supported by all the IDEs/editors mentioned above. It works with the IDE/editor
only and does not affect the actual build of the project.
This repository also includes StyleCop ruleset files under the `./build` folder.
@ -229,27 +323,33 @@ types](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-type
* Pass [static
analysis](https://learn.microsoft.com/dotnet/fundamentals/code-analysis/overview).
New projects MUST enable static analysis by specifying
`<AnalysisLevel>latest-all</AnalysisLevel>` in the project file (`.csproj`).
> **Note**
> [!NOTE]
> There are other project-level features enabled automatically via
[Common.props](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/build/Common.props)
new projects must NOT manually override these settings.
## New code
## License requirements
New code files MUST enable [nullable reference
types](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/nullable-reference-types)
manually in projects where it is not automatically enabled project-wide. This is
done by specifying `#nullable enable` towards the top of the file (usually after
the copyright header). We are currently working towards enabling nullable
context in every project by updating code as it is worked on, this requirement
is to make sure the surface area of code needing updates is shrinking and not
expanding.
OpenTelemetry .NET is licensed under the [Apache License, Version
2.0](./LICENSE.TXT).
> **Note**
> The first time a project is updated to use nullable context in public APIs
some housekeeping needs to be done in public API definitions (`.publicApi`
folder). This can be done automatically via a code fix offered by the public API
analyzer.
### Copying files from other projects
OpenTelemetry .NET uses some files from other projects, typically where a binary
distribution does not exist or would be inconvenient.
The following rules must be followed for PRs that include files from another
project:
* The license of the file is
[permissive](https://en.wikipedia.org/wiki/Permissive_free_software_licence).
* The license of the file is left intact.
* The contribution is correctly attributed in the [3rd party
notices](./THIRD-PARTY-NOTICES.TXT) file in the repository, as needed.
See
[EnvironmentVariablesExtensions.cs](./src/Shared/EnvironmentVariables/EnvironmentVariablesExtensions.cs)
for an example of a file copied from another project and attributed in the [3rd
party notices](./THIRD-PARTY-NOTICES.TXT) file.

6
Directory.Build.props Normal file
View File

@ -0,0 +1,6 @@
<Project>
<PropertyGroup>
<ArtifactsPath>$([System.IO.Path]::Combine('$(MSBuildThisFileDirectory)', 'artifacts'))</ArtifactsPath>
<UseArtifactsOutput>true</UseArtifactsOutput>
</PropertyGroup>
</Project>

View File

@ -1,10 +1,19 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<PropertyGroup>
<OTelLatestStableVer>1.5.1</OTelLatestStableVer>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<OTelLatestStableVer>1.12.0</OTelLatestStableVer>
<!--
This is typically the latest annual release of .NET. Use this wherever
possible and only deviate (use a specific version) when a package has a
more specific patch which must be reference directly.
-->
<LatestRuntimeOutOfBandVer>9.0.0</LatestRuntimeOutOfBandVer>
<!-- Mitigate https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-43485. -->
<SystemTextEncodingsWebOutOfBandMinimumCoreAppVer>8.0.0</SystemTextEncodingsWebOutOfBandMinimumCoreAppVer>
<SystemTextJsonOutOfBandMinimumCoreAppVer>8.0.5</SystemTextJsonOutOfBandMinimumCoreAppVer>
</PropertyGroup>
<!--
@ -13,80 +22,107 @@
vulnerability in the NuGet packages that are published from this repository.
-->
<ItemGroup>
<PackageVersion Include="Google.Protobuf" Version="[3.19.4,4.0)" />
<PackageVersion Include="Grpc" Version="[2.44.0,3.0)" />
<PackageVersion Include="Grpc.Net.Client" Version="[2.52.0,3.0)" />
<PackageVersion Include="Microsoft.AspNetCore.Http.Abstractions" Version="[2.1.1,6.0)" />
<PackageVersion Include="Microsoft.AspNetCore.Http.Features" Version="[2.1.1,6.0)" />
<PackageVersion Include="Microsoft.CSharp" Version="[4.7.0]" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="[3.1.0,)" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0,)" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.0,)" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="[2.1.0,)" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="[3.1.0,)" />
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="[3.1.0,)" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="[3.1.0,)" />
<PackageVersion Include="OpenTelemetry" Version="$(OTelLatestStableVer)" />
<PackageVersion Include="OpenTelemetry.Api.ProviderBuilderExtensions" Version="$(OTelLatestStableVer)" />
<!--
Typically, for the Microsoft.Extensions.* packages relating to DI Abstractions, Hosting Abstractions, and Logging,
the latest stable version should be used because:
1) Each major version bump will have some new API capabilities (e.g.For Logging, .NET 6 introduced compile-time logging
source generation, .NET 8 introduced automatic event id generation).
2) Each minor version bump is normally security hotfixes or critical bug fixes.
3) Since version 3.1.0, the .NET runtime team is holding a high bar for backward compatibility on
these packages even during major version bumps, so compatibility is not a concern here.
-->
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="$(LatestRuntimeOutOfBandVer)" />
<!--
OTel packages always point to latest stable release.
-->
<PackageVersion Include="OpenTelemetry" Version="[$(OTelLatestStableVer),2.0)" />
<PackageVersion Include="OpenTelemetry.Api" Version="[$(OTelLatestStableVer),2.0)" />
<PackageVersion Include="OpenTelemetry.Api.ProviderBuilderExtensions" Version="[$(OTelLatestStableVer),2.0)" />
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="[$(OTelLatestStableVer),2.0)" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="[$(OTelLatestStableVer),2.0)" />
<PackageVersion Include="OpenTelemetry.Extensions.Propagators" Version="[$(OTelLatestStableVer),2.0)" />
<PackageVersion Include="OpenTracing" Version="[0.12.1,0.13)" />
<!--
Typically, the latest stable version of System.Diagnostics.DiagnosticSource should be used here because:
1) Each major version bump will have some new OpenTelemetry API capabilities (e.g. .NET 6 introduced Meter
API, .NET 7 added UpDownCounter, .NET 8 is adding Meter/Instrument level attributes support, .NET 9 might
add Advice/Hint API) that the OpenTelemetry components rely on.
1) Each major version bump will likely have some new OpenTelemetry capabilities (e.g. .NET 6 introduced Meter
API, .NET 7 added UpDownCounter, .NET 8 added Meter/Instrument level attributes support, .NET 9 added
Advice/Hint API, etc.).
2) Each minor version bump is normally security hotfixes or critical bug fixes.
3) The .NET runtime team provides extra backward compatibility guarantee to System.Diagnostics.DiagnosticSource
even during major version bumps, so compatibility is not a concern here.
-->
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="7.0.2" />
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="$(LatestRuntimeOutOfBandVer)" />
</ItemGroup>
<!-- A conservative version of System.Reflection.Emit.Lightweight must be used here since there is no backward compatibility guarantee during major version bumps. -->
<PackageVersion Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
<ItemGroup>
<!--
Note: See TargetFrameworksRequiringSystemTextJsonDirectReference for the
list of targets where System.Text.Json direct reference is applied.
-->
<!-- A conservative version of System.Text.Encodings.Web must be used here since there is no backward compatibility guarantee during major version bumps. -->
<!--
We use conservative versions of these packages for older runtimes where
an upgrade might introduce breaking changes. For example see:
https://devblogs.microsoft.com/dotnet/system-text-json-in-dotnet-7/#breaking-changes.
-->
<PackageVersion Include="System.Text.Encodings.Web" Version="4.7.2" />
<!-- A conservative version of System.Text.Json must be used here since there is no backward compatibility guarantee during major version bumps. -->
<PackageVersion Include="System.Text.Json" Version="4.7.2" />
<!-- A conservative version of System.Threading.Tasks.Extensions must be used here since there is no backward compatibility guarantee during major version bumps. -->
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
<!-- Newer NETCoreApp runtimes need to be redirected to safe versions. -->
<PackageVersion Update="System.Text.Encodings.Web" Version="$(SystemTextEncodingsWebOutOfBandMinimumCoreAppVer)" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" />
<PackageVersion Update="System.Text.Json" Version="$(SystemTextJsonOutOfBandMinimumCoreAppVer)" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" />
</ItemGroup>
<!--
This section covers packages that are **not** directly referenced by the NuGet packages published from this repository.
For example, these packages are used in the tests, examples or referenced as "PrivateAssets", but not in the NuGet packages themselves.
These packages are referenced as "PrivateAssets" or used in tests/examples.
-->
<!-- 'net7.0' is the default `TargetFramework`. Use `VersionOverride` in the project to override the package versions from a different `TargetFramework` -->
<ItemGroup>
<PackageVersion Include="BenchmarkDotNet" Version="[0.13.6,0.14)" />
<PackageVersion Include="BenchmarkDotNet" Version="0.15.2" />
<PackageVersion Include="CommandLineParser" Version="[2.9.1,3.0)" />
<PackageVersion Include="Grpc.AspNetCore" Version="[2.55.0,3.0)" />
<PackageVersion Include="Grpc.AspNetCore.Server" Version="[2.55.0, 3.0)" />
<PackageVersion Include="Grpc.Tools" Version="[2.56.2,3.0)" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="7.0.9" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.9" />
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="[3.11.0-beta1.23402.2]" />
<PackageVersion Include="Microsoft.CodeCoverage" Version="[17.6.3]" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="2.1.2" />
<PackageVersion Include="Microsoft.DotNet.ApiCompat" Version="6.0.0-beta.21308.1" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="[3.1.6,5.0)" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="3.1.20" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="[6.0.0,)" />
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" />
<PackageVersion Include="Grpc.AspNetCore" Version="[2.59.0,3.0)" />
<PackageVersion Include="Grpc.AspNetCore.Server" Version="[2.59.0, 3.0)" />
<PackageVersion Include="Grpc.Tools" Version="[2.59.0,3.0)" />
<PackageVersion Include="Google.Protobuf" Version="[3.22.5,4.0)" />
<PackageVersion Include="Grpc" Version="[2.44.0,3.0)" />
<PackageVersion Include="Grpc.Net.Client" Version="[2.52.0,3.0)" />
<PackageVersion Include="JunitXml.TestLogger" Version="6.1.0" />
<PackageVersion Include="Microsoft.CSharp" Version="[4.7.0]" />
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="[3.11.0-beta1.23525.2]" />
<PackageVersion Include="Microsoft.Coyote" Version="1.7.11" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Telemetry.Abstractions" Version="[9.0.0,)" />
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="[1.0.3,2.0)" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="[17.6.3]" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="[1.1.1,2.0)" />
<PackageVersion Include="MinVer" Version="[4.3.0,5.0)" />
<PackageVersion Include="Moq" Version="[4.18.4,5.0)" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="[1.5.0,2.0)" />
<PackageVersion Include="RabbitMQ.Client" Version="[6.5.0,7.0)" />
<PackageVersion Include="StyleCop.Analyzers" Version="[1.2.0-beta.507,2.0)" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="[6.4.0]" />
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
<PackageVersion Include="Testcontainers.MsSql" Version="3.3.0" />
<PackageVersion Include="Testcontainers.SqlEdge" Version="3.3.0" />
<PackageVersion Include="xunit" Version="[2.5.0,3.0)" />
<PackageVersion Include="xunit.runner.visualstudio" Version="[2.5.0,3.0)" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="[17.13.0,18.0.0)" />
<PackageVersion Include="MinVer" Version="[5.0.0,6.0)" />
<PackageVersion Include="NuGet.Versioning" Version="6.11.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="[1.9.0,2.0)" />
<PackageVersion Include="OpenTelemetry.Instrumentation.GrpcNetClient" Version="[1.9.0-beta.1,2.0)" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="[1.9.0,2.0)" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="[1.9.0,2.0)" />
<PackageVersion Include="RabbitMQ.Client" Version="[6.8.1,7.0)" />
<PackageVersion Include="StyleCop.Analyzers" Version="[1.2.0-beta.556,2.0)" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="[6.7.3,)" />
<PackageVersion Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
<PackageVersion Include="xunit" Version="[2.9.3,3.0)" />
<PackageVersion Include="xunit.runner.visualstudio" Version="[2.8.2,3.0)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="8.0.8" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="9.0.0" />
</ItemGroup>
</Project>

View File

@ -3,23 +3,14 @@
<packageSources>
<clear />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
<add key="dotnet8" value="https://dnceng.pkgs.visualstudio.com/public/_packaging/dotnet8/nuget/v3/index.json" />
<add key=".Net Core Tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
</packageSources>
<!-- Define mappings by adding package patterns beneath the target source. -->
<!-- *.Tools packages will be restored from ".Net Core Tools", everything else from nuget.org. -->
<packageSourceMapping>
<!-- key value for <packageSource> should match key values from <packageSources> element -->
<packageSource key="NuGet">
<package pattern="*" />
</packageSource>
<packageSource key="dotnet8">
<package pattern="Microsoft.CodeAnalysis.PublicApiAnalyzers" />
</packageSource>
<packageSource key=".Net Core Tools">
<package pattern="Microsoft.DotNet.ApiCompat" />
</packageSource>
</packageSourceMapping>
<disabledPackageSources />

View File

@ -1,25 +0,0 @@
<Project>
<ItemGroup>
<SolutionProjects Include="**\*.csproj" />
<PackProjects Include="src\**\*.csproj" />
<!-- Not pack SemanticConventions project for now -->
<SolutionProjects Remove="src\OpenTelemetry.SemanticConventions\OpenTelemetry.SemanticConventions.csproj" />
<PackProjects Remove="src\OpenTelemetry.SemanticConventions\OpenTelemetry.SemanticConventions.csproj" />
<!-- Skip building these projects when publish packages workflow runs as these projects need to depend upon instrumentation libraries taking a project reference
instead of package reference on API/SDK-->
<SolutionProjects Remove="examples\**\*.csproj" Condition="'$(RunningDotNetPack)' == 'true'"/>
<SolutionProjects Remove="test\Benchmarks\Benchmarks.csproj" Condition="'$(RunningDotNetPack)' == 'true'"/>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(SolutionProjects)" Targets="Restore;Build" ContinueOnError="ErrorAndStop" />
</Target>
<Target Name="Pack">
<MSBuild Projects="@(PackProjects)" Targets="Pack" ContinueOnError="ErrorAndStop" />
</Target>
</Project>

View File

@ -11,16 +11,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
ProjectSection(SolutionItems) = preProject
.dockerignore = .dockerignore
.editorconfig = .editorconfig
.gitignore = .gitignore
CONTRIBUTING.md = CONTRIBUTING.md
Directory.Packages.props = Directory.Packages.props
test\Directory.Packages.props = test\Directory.Packages.props
examples\Directory.Packages.props = examples\Directory.Packages.props
docs\Directory.Packages.props = docs\Directory.Packages.props
global.json = global.json
LICENSE = LICENSE
LICENSE.TXT = LICENSE.TXT
NuGet.config = NuGet.config
OpenTelemetry.proj = OpenTelemetry.proj
README.md = README.md
RELEASENOTES.md = RELEASENOTES.md
THIRD-PARTY-NOTICES.TXT = THIRD-PARTY-NOTICES.TXT
VERSIONING.md = VERSIONING.md
EndProjectSection
EndProject
@ -29,22 +27,21 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{7CB2F02E
build\Common.nonprod.props = build\Common.nonprod.props
build\Common.prod.props = build\Common.prod.props
build\Common.props = build\Common.props
build\Common.targets = build\Common.targets
build\debug.snk = build\debug.snk
Directory.Packages.props = Directory.Packages.props
build\docfx.cmd = build\docfx.cmd
build\docker-compose.net6.0.yml = build\docker-compose.net6.0.yml
build\docker-compose.net7.0.yml = build\docker-compose.net7.0.yml
build\finalize-publicapi.ps1 = build\finalize-publicapi.ps1
build\docker-compose.net8.0.yml = build\docker-compose.net8.0.yml
build\docker-compose.net9.0.yml = build\docker-compose.net9.0.yml
build\GlobalAttrExclusions.txt = build\GlobalAttrExclusions.txt
build\opentelemetry-icon-color.png = build\opentelemetry-icon-color.png
build\OpenTelemetry.prod.loose.ruleset = build\OpenTelemetry.prod.loose.ruleset
build\OpenTelemetry.prod.ruleset = build\OpenTelemetry.prod.ruleset
build\OpenTelemetry.proj = build\OpenTelemetry.proj
build\OpenTelemetry.test.ruleset = build\OpenTelemetry.test.ruleset
build\PreBuild.ps1 = build\PreBuild.ps1
build\process-codecoverage.ps1 = build\process-codecoverage.ps1
build\RELEASING.md = build\RELEASING.md
build\stylecop.json = build\stylecop.json
build\test-aot-compatibility.ps1 = build\test-aot-compatibility.ps1
build\UnstableCoreLibraries.proj = build\UnstableCoreLibraries.proj
build\xunit.runner.json = build\xunit.runner.json
EndProjectSection
EndProject
@ -52,10 +49,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.Zipk
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Api", "src\OpenTelemetry.Api\OpenTelemetry.Api.csproj", "{99F8A331-05E9-45A5-89BA-4C54E825E5B2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.AspNetCore", "src\OpenTelemetry.Instrumentation.AspNetCore\OpenTelemetry.Instrumentation.AspNetCore.csproj", "{752D2182-A351-41D8-99EE-DD363D7D5B43}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.AspNetCore.Tests", "test\OpenTelemetry.Instrumentation.AspNetCore.Tests\OpenTelemetry.Instrumentation.AspNetCore.Tests.csproj", "{2A47F6A8-63E5-4237-8046-94CAF321E797}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "testdata", "testdata", "{77C7929A-2EED-4AA6-8705-B5C443C8AA0F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{E359BB2B-9AEC-497D-B321-7DF2450C3B8E}"
@ -78,36 +71,36 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.Open
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{F1D0972B-38CF-49C2-9F4B-4C5DE02FB71D}"
ProjectSection(SolutionItems) = preProject
.github\codecov.yml = .github\codecov.yml
.github\CODEOWNERS = .github\CODEOWNERS
.github\dependabot.yml = .github\dependabot.yml
.github\PULL_REQUEST_TEMPLATE.md = .github\PULL_REQUEST_TEMPLATE.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ISSUE_TEMPLATE", "ISSUE_TEMPLATE", "{A533C800-3DC3-4D04-90A7-0CE7A1E6BDB3}"
ProjectSection(SolutionItems) = preProject
.github\ISSUE_TEMPLATE\bug_report.md = .github\ISSUE_TEMPLATE\bug_report.md
.github\ISSUE_TEMPLATE\feature_request.md = .github\ISSUE_TEMPLATE\feature_request.md
.github\ISSUE_TEMPLATE\question.md = .github\ISSUE_TEMPLATE\question.md
.github\ISSUE_TEMPLATE\bug_report.yml = .github\ISSUE_TEMPLATE\bug_report.yml
.github\ISSUE_TEMPLATE\feature_request.yml = .github\ISSUE_TEMPLATE\feature_request.yml
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{E69578EB-B456-4062-A645-877CD964528B}"
ProjectSection(SolutionItems) = preProject
.github\workflows\apicompatibility.yml = .github\workflows\apicompatibility.yml
.github\workflows\ci-aot.yml = .github\workflows\ci-aot.yml
.github\workflows\ci-instrumentation-libraries-md.yml = .github\workflows\ci-instrumentation-libraries-md.yml
.github\workflows\ci-instrumentation-libraries.yml = .github\workflows\ci-instrumentation-libraries.yml
.github\workflows\ci-md.yml = .github\workflows\ci-md.yml
.github\workflows\add-labels.yml = .github\workflows\add-labels.yml
.github\workflows\automation.yml = .github\workflows\automation.yml
.github\workflows\ci.yml = .github\workflows\ci.yml
.github\workflows\code-coverage.yml = .github\workflows\code-coverage.yml
.github\workflows\codeql-analysis.yml = .github\workflows\codeql-analysis.yml
.github\workflows\Component.BuildTest.yml = .github\workflows\Component.BuildTest.yml
.github\workflows\concurrency-tests.yml = .github\workflows\concurrency-tests.yml
.github\workflows\docfx.yml = .github\workflows\docfx.yml
.github\workflows\dotnet-format-md.yml = .github\workflows\dotnet-format-md.yml
.github\workflows\dotnet-format.yml = .github\workflows\dotnet-format.yml
.github\workflows\integration-md.yml = .github\workflows\integration-md.yml
.github\workflows\integration.yml = .github\workflows\integration.yml
.github\workflows\markdownlint.yml = .github\workflows\markdownlint.yml
.github\workflows\package-validation.yml = .github\workflows\package-validation.yml
.github\workflows\post-release.yml = .github\workflows\post-release.yml
.github\workflows\prepare-release.yml = .github\workflows\prepare-release.yml
.github\workflows\publish-packages-1.0.yml = .github\workflows\publish-packages-1.0.yml
.github\workflows\sanitycheck.yml = .github\workflows\sanitycheck.yml
.github\workflows\stale.yml = .github\workflows\stale.yml
.github\workflows\verifyaotcompat.yml = .github\workflows\verifyaotcompat.yml
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C1542297-8763-4DF4-957C-489ED771C21D}"
@ -122,32 +115,27 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{D2E73927-5
test\Directory.Build.targets = test\Directory.Build.targets
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.Grpc.Tests", "test\OpenTelemetry.Instrumentation.Grpc.Tests\OpenTelemetry.Instrumentation.Grpc.Tests.csproj", "{305E9DFD-E73B-4A28-8769-795C25551020}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.Console", "examples\Console\Examples.Console.csproj", "{FF3E6E08-E8E4-4523-B526-847CD989279F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.AspNetCore", "examples\AspNetCore\Examples.AspNetCore.csproj", "{0935622B-9377-4056-8343-AE6ECDC274CF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Benchmarks", "test\Benchmarks\Benchmarks.csproj", "{DE9130A4-F30A-49D7-8834-41DE3021218B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.SqlClient.Tests", "test\OpenTelemetry.Instrumentation.SqlClient.Tests\OpenTelemetry.Instrumentation.SqlClient.Tests.csproj", "{0C606039-BE0A-4EE6-B8F7-F75B41E52CB8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.SqlClient", "src\OpenTelemetry.Instrumentation.SqlClient\OpenTelemetry.Instrumentation.SqlClient.csproj", "{41C30DC1-8C57-4E14-A83A-7635A3C7960B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.Http.Tests", "test\OpenTelemetry.Instrumentation.Http.Tests\OpenTelemetry.Instrumentation.Http.Tests.csproj", "{DE9EB7D8-9CC5-4073-90B3-9FBF685B3305}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.Http", "src\OpenTelemetry.Instrumentation.Http\OpenTelemetry.Instrumentation.Http.csproj", "{412C64D1-43D6-4E4C-8AD8-E20E63B415BD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.GrpcNetClient", "src\OpenTelemetry.Instrumentation.GrpcNetClient\OpenTelemetry.Instrumentation.GrpcNetClient.csproj", "{0246BFC4-8AAF-45E1-A127-DB43D6E345BB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{7C87CAF9-79D7-4C26-9FFB-F3F1FB6911F1}"
ProjectSection(SolutionItems) = preProject
docs\README.md = docs\README.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{2C7DD1DA-C229-4D9E-9AF0-BCD5CD3E4948}"
ProjectSection(SolutionItems) = preProject
examples\Directory.Build.props = examples\Directory.Build.props
examples\Directory.Build.targets = examples\Directory.Build.targets
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "trace", "trace", "{5B7FB835-3FFF-4BC2-99C5-A5B5FAE3C818}"
ProjectSection(SolutionItems) = preProject
docs\trace\README.md = docs\trace\README.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "metrics", "metrics", "{3277B1C0-BDFE-4460-9B0D-D9A661FB48DB}"
ProjectSection(SolutionItems) = preProject
@ -156,7 +144,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "metrics", "metrics", "{3277
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "logs", "logs", "{3862190B-E2C5-418E-AFDC-DB281FB5C705}"
ProjectSection(SolutionItems) = preProject
docs\logs\getting-started-console\README.md = docs\logs\getting-started-console\README.md
docs\logs\README.md = docs\logs\README.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MicroserviceExample", "MicroserviceExample", "{4D492D62-5150-45F9-817F-C99562E364E2}"
@ -175,6 +163,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{CB401DF1-FF5C-4055-886E-1183E832B2D6}"
ProjectSection(SolutionItems) = preProject
docs\Directory.Build.props = docs\Directory.Build.props
docs\Directory.Packages.props = docs\Directory.Packages.props
docs\docfx.json = docs\docfx.json
docs\toc.yml = docs\toc.yml
EndProjectSection
@ -211,8 +200,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Tests.Stress"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "getting-started-prometheus-grafana", "docs\metrics\getting-started-prometheus-grafana\getting-started-prometheus-grafana.csproj", "{41B784AA-3301-4126-AF9F-1D59BD04B0BF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.SemanticConventions", "src\OpenTelemetry.SemanticConventions\OpenTelemetry.SemanticConventions.csproj", "{D4519DF6-CC72-4AC4-A851-E21383098D11}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "customizing-the-sdk", "docs\logs\customizing-the-sdk\customizing-the-sdk.csproj", "{6C7A1595-36D6-4229-BBB5-5A6B5791791D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Extensions.Propagators", "src\OpenTelemetry.Extensions.Propagators\OpenTelemetry.Extensions.Propagators.csproj", "{E91B2E40-E428-43B3-8A43-09709F0E69E4}"
@ -235,6 +222,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Tests.Stress.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestApp.AspNetCore", "test\TestApp.AspNetCore\TestApp.AspNetCore.csproj", "{5FDAF679-DE5A-4C73-A49B-8ABCF2399229}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "complex-objects", "docs\logs\complex-objects\complex-objects.csproj", "{9AAB00EC-ED6F-4462-82DE-7D864A9DB6C5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "redaction", "docs\logs\redaction\redaction.csproj", "{A2DF46DE-50D7-4887-8C9D-4BD79CA19FAA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.Console.Tests", "test\OpenTelemetry.Exporter.Console.Tests\OpenTelemetry.Exporter.Console.Tests.csproj", "{011E70E1-152A-47BB-AF83-12DD12B125ED}"
@ -260,30 +249,18 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}"
ProjectSection(SolutionItems) = preProject
src\Shared\ActivityHelperExtensions.cs = src\Shared\ActivityHelperExtensions.cs
src\Shared\ActivityInstrumentationHelper.cs = src\Shared\ActivityInstrumentationHelper.cs
src\Shared\AssemblyVersionExtensions.cs = src\Shared\AssemblyVersionExtensions.cs
src\Shared\DiagnosticDefinitions.cs = src\Shared\DiagnosticDefinitions.cs
src\Shared\ExceptionExtensions.cs = src\Shared\ExceptionExtensions.cs
src\Shared\Guard.cs = src\Shared\Guard.cs
src\Shared\HttpSemanticConventionHelper.cs = src\Shared\HttpSemanticConventionHelper.cs
src\Shared\MathHelper.cs = src\Shared\MathHelper.cs
src\Shared\PeerServiceResolver.cs = src\Shared\PeerServiceResolver.cs
src\Shared\PeriodicExportingMetricReaderHelper.cs = src\Shared\PeriodicExportingMetricReaderHelper.cs
src\Shared\PooledList.cs = src\Shared\PooledList.cs
src\Shared\ResourceSemanticConventions.cs = src\Shared\ResourceSemanticConventions.cs
src\Shared\SemanticConventions.cs = src\Shared\SemanticConventions.cs
src\Shared\SpanAttributeConstants.cs = src\Shared\SpanAttributeConstants.cs
src\Shared\SpanHelper.cs = src\Shared\SpanHelper.cs
src\Shared\StatusHelper.cs = src\Shared\StatusHelper.cs
src\Shared\TagAndValueTransformer.cs = src\Shared\TagAndValueTransformer.cs
src\Shared\TagTransformer.cs = src\Shared\TagTransformer.cs
src\Shared\TagTransformerJsonHelper.cs = src\Shared\TagTransformerJsonHelper.cs
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DiagnosticSourceInstrumentation", "DiagnosticSourceInstrumentation", "{28F3EC79-660C-4659-8B73-F90DC1173316}"
ProjectSection(SolutionItems) = preProject
src\Shared\DiagnosticSourceInstrumentation\DiagnosticSourceListener.cs = src\Shared\DiagnosticSourceInstrumentation\DiagnosticSourceListener.cs
src\Shared\DiagnosticSourceInstrumentation\DiagnosticSourceSubscriber.cs = src\Shared\DiagnosticSourceInstrumentation\DiagnosticSourceSubscriber.cs
src\Shared\DiagnosticSourceInstrumentation\ListenerHandler.cs = src\Shared\DiagnosticSourceInstrumentation\ListenerHandler.cs
src\Shared\DiagnosticSourceInstrumentation\PropertyFetcher.cs = src\Shared\DiagnosticSourceInstrumentation\PropertyFetcher.cs
src\Shared\ThreadSafeRandom.cs = src\Shared\ThreadSafeRandom.cs
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EnvironmentVariables", "EnvironmentVariables", "{6D4B4FB2-0A8A-4044-948B-C063FD340439}"
@ -295,19 +272,83 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EnvironmentVariables", "Env
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Options", "Options", "{494902DD-C63F-48E0-BED3-B58EFB4051C8}"
ProjectSection(SolutionItems) = preProject
src\Shared\Options\ConfigurationExtensions.cs = src\Shared\Options\ConfigurationExtensions.cs
src\Shared\Options\DelegatingOptionsFactory.cs = src\Shared\Options\DelegatingOptionsFactory.cs
src\Shared\Options\DelegatingOptionsFactoryServiceCollectionExtensions.cs = src\Shared\Options\DelegatingOptionsFactoryServiceCollectionExtensions.cs
src\Shared\Options\SingletonOptionsManager.cs = src\Shared\Options\SingletonOptionsManager.cs
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shims", "Shims", "{A0CB9A10-F22D-4E66-A449-74B3D0361A9C}"
ProjectSection(SolutionItems) = preProject
src\Shared\Shims\IsExternalInit.cs = src\Shared\Shims\IsExternalInit.cs
src\Shared\Shims\Lock.cs = src\Shared\Shims\Lock.cs
src\Shared\Shims\NullableAttributes.cs = src\Shared\Shims\NullableAttributes.cs
src\Shared\Shims\UnconditionalSuppressMessageAttribute.cs = src\Shared\Shims\UnconditionalSuppressMessageAttribute.cs
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Api.Tests", "test\OpenTelemetry.Api.Tests\OpenTelemetry.Api.Tests.csproj", "{777C04B8-1BD5-43D7-B3CD-D2189DFABCF3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Metrics", "Metrics", "{1C459B5B-C702-46FF-BF1A-EE795E420FFA}"
ProjectSection(SolutionItems) = preProject
src\Shared\Metrics\Base2ExponentialBucketHistogramHelper.cs = src\Shared\Metrics\Base2ExponentialBucketHistogramHelper.cs
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "getting-started-aspnetcore", "docs\logs\getting-started-aspnetcore\getting-started-aspnetcore.csproj", "{99B4D965-8782-4694-8DFA-B7A3630CEF60}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "links-creation", "docs\trace\links-creation-with-new-activities\links-creation.csproj", "{B4856711-6D4C-4246-A686-49458D4C1301}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "diagnostics", "diagnostics", "{52AF6D7D-9E66-4234-9A2C-5D16C6F22B40}"
ProjectSection(SolutionItems) = preProject
docs\diagnostics\README.md = docs\diagnostics\README.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "experimental-apis", "experimental-apis", "{17A22B0E-6EC3-4A39-B955-0A486AD06699}"
ProjectSection(SolutionItems) = preProject
docs\diagnostics\experimental-apis\OTEL1000.md = docs\diagnostics\experimental-apis\OTEL1000.md
docs\diagnostics\experimental-apis\OTEL1001.md = docs\diagnostics\experimental-apis\OTEL1001.md
docs\diagnostics\experimental-apis\OTEL1004.md = docs\diagnostics\experimental-apis\OTEL1004.md
docs\diagnostics\experimental-apis\README.md = docs\diagnostics\experimental-apis\README.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "resources", "resources", "{A115CE4C-71A8-4B95-96A5-C1DF46FD94C2}"
ProjectSection(SolutionItems) = preProject
docs\resources\README.md = docs\resources\README.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "extending-the-sdk", "docs\resources\extending-the-sdk\extending-the-sdk.csproj", "{7BE494FC-4B0D-4340-A62A-9C9F3E7389FE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dedicated-pipeline", "docs\logs\dedicated-pipeline\dedicated-pipeline.csproj", "{19545B37-8518-4BDD-AD49-00C031FB3C2A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Configuration", "Configuration", "{87A20A76-D524-4AAC-AF92-8725BFED0415}"
ProjectSection(SolutionItems) = preProject
src\Shared\Configuration\IConfigurationExtensionsLogger.cs = src\Shared\Configuration\IConfigurationExtensionsLogger.cs
src\Shared\Configuration\OpenTelemetryConfigurationExtensions.cs = src\Shared\Configuration\OpenTelemetryConfigurationExtensions.cs
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TagWriter", "TagWriter", "{993E65E5-E71B-40FD-871C-60A9EBD59724}"
ProjectSection(SolutionItems) = preProject
src\Shared\TagWriter\ArrayTagWriter.cs = src\Shared\TagWriter\ArrayTagWriter.cs
src\Shared\TagWriter\JsonStringArrayTagWriter.cs = src\Shared\TagWriter\JsonStringArrayTagWriter.cs
src\Shared\TagWriter\TagWriter.cs = src\Shared\TagWriter\TagWriter.cs
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{44982E0D-C8C6-42DC-9F8F-714981F27CE6}"
ProjectSection(SolutionItems) = preProject
build\scripts\add-labels.psm1 = build\scripts\add-labels.psm1
build\scripts\finalize-publicapi.ps1 = build\scripts\finalize-publicapi.ps1
build\scripts\post-release.psm1 = build\scripts\post-release.psm1
build\scripts\prepare-release.psm1 = build\scripts\prepare-release.psm1
build\scripts\sanitycheck.py = build\scripts\sanitycheck.py
build\scripts\test-aot-compatibility.ps1 = build\scripts\test-aot-compatibility.ps1
build\scripts\test-threadSafety.ps1 = build\scripts\test-threadSafety.ps1
build\scripts\update-changelogs.ps1 = build\scripts\update-changelogs.ps1
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "exemplars", "docs\metrics\exemplars\exemplars.csproj", "{79C12C80-B27B-41FB-AE79-A3BB74CFA782}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Proto", "Proto", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
ProjectSection(SolutionItems) = preProject
src\Shared\Proto\README.md = src\Shared\Proto\README.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -330,14 +371,6 @@ Global
{99F8A331-05E9-45A5-89BA-4C54E825E5B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99F8A331-05E9-45A5-89BA-4C54E825E5B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99F8A331-05E9-45A5-89BA-4C54E825E5B2}.Release|Any CPU.Build.0 = Release|Any CPU
{752D2182-A351-41D8-99EE-DD363D7D5B43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{752D2182-A351-41D8-99EE-DD363D7D5B43}.Debug|Any CPU.Build.0 = Debug|Any CPU
{752D2182-A351-41D8-99EE-DD363D7D5B43}.Release|Any CPU.ActiveCfg = Release|Any CPU
{752D2182-A351-41D8-99EE-DD363D7D5B43}.Release|Any CPU.Build.0 = Release|Any CPU
{2A47F6A8-63E5-4237-8046-94CAF321E797}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A47F6A8-63E5-4237-8046-94CAF321E797}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A47F6A8-63E5-4237-8046-94CAF321E797}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A47F6A8-63E5-4237-8046-94CAF321E797}.Release|Any CPU.Build.0 = Release|Any CPU
{AAC408FE-40EF-4479-97D9-697F2C1A0B28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AAC408FE-40EF-4479-97D9-697F2C1A0B28}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AAC408FE-40EF-4479-97D9-697F2C1A0B28}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -370,10 +403,6 @@ Global
{7C4026CA-6434-4762-8B77-D657EAEE1325}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C4026CA-6434-4762-8B77-D657EAEE1325}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C4026CA-6434-4762-8B77-D657EAEE1325}.Release|Any CPU.Build.0 = Release|Any CPU
{305E9DFD-E73B-4A28-8769-795C25551020}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{305E9DFD-E73B-4A28-8769-795C25551020}.Debug|Any CPU.Build.0 = Debug|Any CPU
{305E9DFD-E73B-4A28-8769-795C25551020}.Release|Any CPU.ActiveCfg = Release|Any CPU
{305E9DFD-E73B-4A28-8769-795C25551020}.Release|Any CPU.Build.0 = Release|Any CPU
{FF3E6E08-E8E4-4523-B526-847CD989279F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF3E6E08-E8E4-4523-B526-847CD989279F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF3E6E08-E8E4-4523-B526-847CD989279F}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -386,26 +415,6 @@ Global
{DE9130A4-F30A-49D7-8834-41DE3021218B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE9130A4-F30A-49D7-8834-41DE3021218B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE9130A4-F30A-49D7-8834-41DE3021218B}.Release|Any CPU.Build.0 = Release|Any CPU
{0C606039-BE0A-4EE6-B8F7-F75B41E52CB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C606039-BE0A-4EE6-B8F7-F75B41E52CB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C606039-BE0A-4EE6-B8F7-F75B41E52CB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C606039-BE0A-4EE6-B8F7-F75B41E52CB8}.Release|Any CPU.Build.0 = Release|Any CPU
{41C30DC1-8C57-4E14-A83A-7635A3C7960B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41C30DC1-8C57-4E14-A83A-7635A3C7960B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41C30DC1-8C57-4E14-A83A-7635A3C7960B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41C30DC1-8C57-4E14-A83A-7635A3C7960B}.Release|Any CPU.Build.0 = Release|Any CPU
{DE9EB7D8-9CC5-4073-90B3-9FBF685B3305}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE9EB7D8-9CC5-4073-90B3-9FBF685B3305}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE9EB7D8-9CC5-4073-90B3-9FBF685B3305}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE9EB7D8-9CC5-4073-90B3-9FBF685B3305}.Release|Any CPU.Build.0 = Release|Any CPU
{412C64D1-43D6-4E4C-8AD8-E20E63B415BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{412C64D1-43D6-4E4C-8AD8-E20E63B415BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{412C64D1-43D6-4E4C-8AD8-E20E63B415BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{412C64D1-43D6-4E4C-8AD8-E20E63B415BD}.Release|Any CPU.Build.0 = Release|Any CPU
{0246BFC4-8AAF-45E1-A127-DB43D6E345BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0246BFC4-8AAF-45E1-A127-DB43D6E345BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0246BFC4-8AAF-45E1-A127-DB43D6E345BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0246BFC4-8AAF-45E1-A127-DB43D6E345BB}.Release|Any CPU.Build.0 = Release|Any CPU
{07336602-860B-4975-95DD-405D19C00901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{07336602-860B-4975-95DD-405D19C00901}.Debug|Any CPU.Build.0 = Debug|Any CPU
{07336602-860B-4975-95DD-405D19C00901}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -482,10 +491,6 @@ Global
{41B784AA-3301-4126-AF9F-1D59BD04B0BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41B784AA-3301-4126-AF9F-1D59BD04B0BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41B784AA-3301-4126-AF9F-1D59BD04B0BF}.Release|Any CPU.Build.0 = Release|Any CPU
{D4519DF6-CC72-4AC4-A851-E21383098D11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D4519DF6-CC72-4AC4-A851-E21383098D11}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D4519DF6-CC72-4AC4-A851-E21383098D11}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D4519DF6-CC72-4AC4-A851-E21383098D11}.Release|Any CPU.Build.0 = Release|Any CPU
{6C7A1595-36D6-4229-BBB5-5A6B5791791D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C7A1595-36D6-4229-BBB5-5A6B5791791D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C7A1595-36D6-4229-BBB5-5A6B5791791D}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -530,6 +535,10 @@ Global
{5FDAF679-DE5A-4C73-A49B-8ABCF2399229}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5FDAF679-DE5A-4C73-A49B-8ABCF2399229}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5FDAF679-DE5A-4C73-A49B-8ABCF2399229}.Release|Any CPU.Build.0 = Release|Any CPU
{9AAB00EC-ED6F-4462-82DE-7D864A9DB6C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9AAB00EC-ED6F-4462-82DE-7D864A9DB6C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9AAB00EC-ED6F-4462-82DE-7D864A9DB6C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9AAB00EC-ED6F-4462-82DE-7D864A9DB6C5}.Release|Any CPU.Build.0 = Release|Any CPU
{A2DF46DE-50D7-4887-8C9D-4BD79CA19FAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A2DF46DE-50D7-4887-8C9D-4BD79CA19FAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A2DF46DE-50D7-4887-8C9D-4BD79CA19FAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -578,6 +587,26 @@ Global
{777C04B8-1BD5-43D7-B3CD-D2189DFABCF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{777C04B8-1BD5-43D7-B3CD-D2189DFABCF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{777C04B8-1BD5-43D7-B3CD-D2189DFABCF3}.Release|Any CPU.Build.0 = Release|Any CPU
{99B4D965-8782-4694-8DFA-B7A3630CEF60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{99B4D965-8782-4694-8DFA-B7A3630CEF60}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99B4D965-8782-4694-8DFA-B7A3630CEF60}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99B4D965-8782-4694-8DFA-B7A3630CEF60}.Release|Any CPU.Build.0 = Release|Any CPU
{B4856711-6D4C-4246-A686-49458D4C1301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4856711-6D4C-4246-A686-49458D4C1301}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4856711-6D4C-4246-A686-49458D4C1301}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4856711-6D4C-4246-A686-49458D4C1301}.Release|Any CPU.Build.0 = Release|Any CPU
{7BE494FC-4B0D-4340-A62A-9C9F3E7389FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7BE494FC-4B0D-4340-A62A-9C9F3E7389FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7BE494FC-4B0D-4340-A62A-9C9F3E7389FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7BE494FC-4B0D-4340-A62A-9C9F3E7389FE}.Release|Any CPU.Build.0 = Release|Any CPU
{19545B37-8518-4BDD-AD49-00C031FB3C2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19545B37-8518-4BDD-AD49-00C031FB3C2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{19545B37-8518-4BDD-AD49-00C031FB3C2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{19545B37-8518-4BDD-AD49-00C031FB3C2A}.Release|Any CPU.Build.0 = Release|Any CPU
{79C12C80-B27B-41FB-AE79-A3BB74CFA782}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{79C12C80-B27B-41FB-AE79-A3BB74CFA782}.Debug|Any CPU.Build.0 = Debug|Any CPU
{79C12C80-B27B-41FB-AE79-A3BB74CFA782}.Release|Any CPU.ActiveCfg = Release|Any CPU
{79C12C80-B27B-41FB-AE79-A3BB74CFA782}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -613,6 +642,7 @@ Global
{6C7A1595-36D6-4229-BBB5-5A6B5791791D} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{9A07D215-90AC-4BAF-BCDB-73D74FD3A5C5} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{5FDAF679-DE5A-4C73-A49B-8ABCF2399229} = {77C7929A-2EED-4AA6-8705-B5C443C8AA0F}
{9AAB00EC-ED6F-4462-82DE-7D864A9DB6C5} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{A2DF46DE-50D7-4887-8C9D-4BD79CA19FAA} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{DEDE8442-03CA-48CF-99B9-EA224D89D148} = {5B7FB835-3FFF-4BC2-99C5-A5B5FAE3C818}
{EF4F6280-14D1-49D4-8095-1AC36E169AA8} = {5B7FB835-3FFF-4BC2-99C5-A5B5FAE3C818}
@ -620,10 +650,22 @@ Global
{800DB925-6014-4136-AC01-3356CF7CADD3} = {5B7FB835-3FFF-4BC2-99C5-A5B5FAE3C818}
{9C99621C-343E-479C-A943-332DB6129B71} = {5B7FB835-3FFF-4BC2-99C5-A5B5FAE3C818}
{62AF4BD3-DCAE-4D44-AA5B-991C1071166B} = {5B7FB835-3FFF-4BC2-99C5-A5B5FAE3C818}
{28F3EC79-660C-4659-8B73-F90DC1173316} = {A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}
{6D4B4FB2-0A8A-4044-948B-C063FD340439} = {A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}
{494902DD-C63F-48E0-BED3-B58EFB4051C8} = {A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}
{A0CB9A10-F22D-4E66-A449-74B3D0361A9C} = {A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}
{1C459B5B-C702-46FF-BF1A-EE795E420FFA} = {A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}
{99B4D965-8782-4694-8DFA-B7A3630CEF60} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{B4856711-6D4C-4246-A686-49458D4C1301} = {5B7FB835-3FFF-4BC2-99C5-A5B5FAE3C818}
{52AF6D7D-9E66-4234-9A2C-5D16C6F22B40} = {7C87CAF9-79D7-4C26-9FFB-F3F1FB6911F1}
{17A22B0E-6EC3-4A39-B955-0A486AD06699} = {52AF6D7D-9E66-4234-9A2C-5D16C6F22B40}
{A115CE4C-71A8-4B95-96A5-C1DF46FD94C2} = {7C87CAF9-79D7-4C26-9FFB-F3F1FB6911F1}
{7BE494FC-4B0D-4340-A62A-9C9F3E7389FE} = {A115CE4C-71A8-4B95-96A5-C1DF46FD94C2}
{19545B37-8518-4BDD-AD49-00C031FB3C2A} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{87A20A76-D524-4AAC-AF92-8725BFED0415} = {A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}
{993E65E5-E71B-40FD-871C-60A9EBD59724} = {A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}
{44982E0D-C8C6-42DC-9F8F-714981F27CE6} = {7CB2F02E-03FA-4FFF-89A5-C51F107623FD}
{79C12C80-B27B-41FB-AE79-A3BB74CFA782} = {3277B1C0-BDFE-4460-9B0D-D9A661FB48DB}
{02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {A49299FB-C5CD-4E0E-B7E1-B7867BBD67CC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {55639B5C-0770-4A22-AB56-859604650521}

282
README.md
View File

@ -6,9 +6,32 @@
[![NuGet](https://img.shields.io/nuget/dt/OpenTelemetry.svg)](https://www.nuget.org/profiles/OpenTelemetry)
[![Build](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/ci.yml)
The .NET [OpenTelemetry](https://opentelemetry.io/) client.
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/open-telemetry/opentelemetry-dotnet/badge)](https://scorecard.dev/viewer/?uri=github.com/open-telemetry/opentelemetry-dotnet)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10017/badge)](https://www.bestpractices.dev/projects/10017)
[![FOSSA License Status](https://app.fossa.com/api/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet.svg?type=shield&issueType=license)](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet?ref=badge_shield&issueType=license)
[![FOSSA Security Status](https://app.fossa.com/api/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet.svg?type=shield&issueType=security)](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet?ref=badge_shield&issueType=security)
## Supported .NET Versions
The .NET [OpenTelemetry](https://opentelemetry.io/) implementation.
<details>
<summary>Table of Contents</summary>
* [Supported .NET versions](#supported-net-versions)
* [Project status](#project-status)
* [Getting started](#getting-started)
* [Getting started with Logging](#getting-started-with-logging)
* [Getting started with Metrics](#getting-started-with-metrics)
* [Getting started with Tracing](#getting-started-with-tracing)
* [Repository structure](#repository-structure)
* [Troubleshooting](#troubleshooting)
* [Extensibility](#extensibility)
* [Releases](#releases)
* [Contributing](#contributing)
* [References](#references)
</details>
## Supported .NET versions
Packages shipped from this repository generally support all the officially
supported versions of [.NET](https://dotnet.microsoft.com/download/dotnet) and
@ -17,52 +40,88 @@ older Windows-based .NET implementation), except `.NET Framework 3.5`.
Any exceptions to this are noted in the individual `README.md`
files.
## Project Status
## Project status
| Signal | Status |
| ------- | ---------- |
| Logs | Stable* |
| Metrics | Stable |
| Traces | Stable |
**Stable** across all 3 signals (`Logs`, `Metrics`, and `Traces`).
*While the `OpenTelemetryLoggerProvider` (i.e integration with `ILogger`) is
stable, the [OTLP Exporter for
Logs](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/src/OpenTelemetry.Exporter.OpenTelemetryProtocol#enable-log-exporter)
is still non-stable.
> [!CAUTION]
> Certain components, marked as
[pre-release](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/VERSIONING.md#pre-releases),
are still work in progress and can undergo breaking changes before stable
release. Check the individual `README.md` file for each component to understand its
current state.
See [Spec Compliance
Matrix](https://github.com/open-telemetry/opentelemetry-specification/blob/main/spec-compliance-matrix.md)
to understand which portions of the specification has been implemented in this
repo.
To understand which portions of the [OpenTelemetry
Specification](https://github.com/open-telemetry/opentelemetry-specification)
have been implemented in OpenTelemetry .NET see: [Spec Compliance
Matrix](https://github.com/open-telemetry/opentelemetry-specification/blob/main/spec-compliance-matrix.md).
## Getting Started
## Getting started
If you are new here, please read the getting started docs:
* Logs: [Console](./docs/logs/getting-started-console/README.md)
* Metrics: [ASP.NET Core](./docs/metrics/getting-started-aspnetcore/README.md) |
[Console](./docs/metrics/getting-started-console/README.md)
* Traces: [ASP.NET Core](./docs/trace/getting-started-aspnetcore/README.md) |
[Console](./docs/trace/getting-started-console/README.md)
### Getting started with Logging
This repository includes multiple installable components, available on
[NuGet](https://www.nuget.org/profiles/OpenTelemetry). Each component has its
individual `README.md` file, which covers the instruction on how to install and
how to get started. To find all the available components, please take a look at
the `src` folder.
If you are new to
[logging](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/README.md),
it is recommended to first follow the [getting started in 5 minutes - ASP.NET
Core Application](./docs/logs/getting-started-aspnetcore/README.md) guide or
the [getting started in 5 minutes - Console
Application](./docs/logs/getting-started-console/README.md) guide to get up
and running.
For general information and best practices see: [OpenTelemetry .NET
Logs](./docs/logs/README.md). For a more detailed explanation of SDK logging
features see: [Customizing OpenTelemetry .NET SDK for
Logs](./docs/logs/customizing-the-sdk/README.md).
### Getting started with Metrics
If you are new to
[metrics](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/README.md),
it is recommended to first follow the [getting started in 5 minutes - ASP.NET
Core Application](./docs/metrics/getting-started-aspnetcore/README.md) guide
or the [getting started in 5 minutes - Console
Application](./docs/metrics/getting-started-console/README.md) guide to get
up and running.
For general information and best practices see: [OpenTelemetry .NET
Metrics](./docs/metrics/README.md). For a more detailed explanation of SDK
metric features see: [Customizing OpenTelemetry .NET SDK for
Metrics](./docs/metrics/customizing-the-sdk/README.md).
### Getting started with Tracing
If you are new to
[traces](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/README.md),
it is recommended to first follow the [getting started in 5 minutes - ASP.NET
Core Application](./docs/trace/getting-started-aspnetcore/README.md) guide
or the [getting started in 5 minutes - Console
Application](./docs/trace/getting-started-console/README.md) guide to get up
and running.
For general information and best practices see: [OpenTelemetry .NET
Traces](./docs/trace/README.md). For a more detailed explanation of SDK tracing
features see: [Customizing OpenTelemetry .NET SDK for
Tracing](./docs/trace/customizing-the-sdk/README.md).
## Repository structure
This repository includes only what is defined in the [OpenTelemetry
Specification](https://github.com/open-telemetry/opentelemetry-specification)
and is shipped as separate packages through
[NuGet](https://www.nuget.org/profiles/OpenTelemetry). Each component has an
individual `README.md` and `CHANGELOG.md` file which covers the instructions on
how to install and get started, and details about the individual changes made
(respectively). To find all the available components, please take a look at the
`src` folder.
Here are the most commonly used components:
* [OpenTelemetry .NET API](./src/OpenTelemetry.Api/README.md)
* [OpenTelemetry .NET SDK](./src/OpenTelemetry/README.md)
Here are the [instrumentation
libraries](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/glossary.md#instrumentation-library):
* [ASP.NET Core](./src/OpenTelemetry.Instrumentation.AspNetCore/README.md)
* [Grpc.Net.Client](./src/OpenTelemetry.Instrumentation.GrpcNetClient/README.md)
* [HTTP clients](./src/OpenTelemetry.Instrumentation.Http/README.md)
* [SQL client](./src/OpenTelemetry.Instrumentation.SqlClient/README.md)
* [OpenTelemetry API](./src/OpenTelemetry.Api/README.md)
* [OpenTelemetry SDK](./src/OpenTelemetry/README.md)
* [OpenTelemetry Hosting
Extensions](./src/OpenTelemetry.Extensions.Hosting/README.md)
Here are the [exporter
libraries](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/glossary.md#exporter-library):
@ -75,15 +134,19 @@ libraries](https://github.com/open-telemetry/opentelemetry-specification/blob/ma
* [Prometheus HttpListener](./src/OpenTelemetry.Exporter.Prometheus.HttpListener/README.md)
* [Zipkin](./src/OpenTelemetry.Exporter.Zipkin/README.md)
See the [OpenTelemetry registry](https://opentelemetry.io/registry/?s=net) and
[OpenTelemetry .NET Contrib
repo](https://github.com/open-telemetry/opentelemetry-dotnet-contrib) for more
components.
Additional packages including [instrumentation
libraries](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/glossary.md#instrumentation-library),
exporters, resource detectors, and extensions can be found in the
[opentelemetry-dotnet-contrib
repository](https://github.com/open-telemetry/opentelemetry-dotnet-contrib)
and/or the [OpenTelemetry
registry](https://opentelemetry.io/ecosystem/registry/?language=dotnet).
## Troubleshooting
See [Troubleshooting](./src/OpenTelemetry/README.md#troubleshooting).
Additionally check readme file for the individual components for any additional
For general instructions see:
[Troubleshooting](./src/OpenTelemetry/README.md#troubleshooting). Additionally
`README.md` files for individual components may contain more detailed
troubleshooting information.
## Extensibility
@ -95,7 +158,7 @@ extension scenarios:
library](./docs/trace/extending-the-sdk/README.md#instrumentation-library).
* Building a custom exporter for
[logs](./docs/logs/extending-the-sdk/README.md#exporter),
[metrics](./docs/metrics/extending-the-sdk/README.md#exporter) and
[metrics](./docs/metrics/extending-the-sdk/README.md#exporter), and
[traces](./docs/trace/extending-the-sdk/README.md#exporter).
* Building a custom processor for
[logs](./docs/logs/extending-the-sdk/README.md#processor) and
@ -103,14 +166,64 @@ extension scenarios:
* Building a custom sampler for
[traces](./docs/trace/extending-the-sdk/README.md#sampler).
## Releases
For details about upcoming planned releases see:
[Milestones](https://github.com/open-telemetry/opentelemetry-dotnet/milestones).
The dates and features described in issues and milestones are estimates and
subject to change.
For highlights and annoucements for stable releases see: [Release
Notes](./RELEASENOTES.md).
To access packages, source code, and/or view a list of changes for all
components in a release see:
[Releases](https://github.com/open-telemetry/opentelemetry-dotnet/releases).
Nightly builds from this repo are published to [MyGet](https://www.myget.org),
and can be installed using the
`https://www.myget.org/F/opentelemetry/api/v3/index.json` source.
### Digital signing
Starting with the `1.10.0` release the DLLs included in the packages pushed to
NuGet are digitally signed using [Sigstore](https://www.sigstore.dev/). Within
each NuGet package the digital signature and its corresponding certificate file
are placed alongside the shipped DLL(s) in the `/lib` folder. When a project
targets multiple frameworks each target outputs a dedicated DLL and signing
artifacts into a sub folder based on the
[TFM](https://learn.microsoft.com/dotnet/standard/frameworks).
The digitial signature and certificate files share the same name prefix as the
DLL to ensure easy identification and association.
To verify the integrity of a DLL inside a NuGet package use the
[cosign](https://github.com/sigstore/cosign) tool from Sigstore:
```bash
cosign verify-blob \
--signature OpenTelemetry.dll-keyless.sig \
--certificate OpenTelemetry.dll-keyless.pem.cer \
--certificate-identity "https://github.com/open-telemetry/opentelemetry-dotnet/.github/workflows/publish-packages-1.0.yml@refs/tags/core-1.10.0-rc.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
OpenTelemetry.dll
```
> [!NOTE]
> A successful verification outputs `Verify OK`.
For more verification options please refer to the [cosign
documentation](https://github.com/sigstore/cosign/blob/main/doc/cosign_verify-blob.md).
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)
For information about contributing to the project see:
[CONTRIBUTING.md](CONTRIBUTING.md).
We meet weekly on Tuesdays, and the time of the meeting alternates between 11AM
We meet weekly on Tuesdays, and the time of the meeting alternates between 9AM
PT and 4PM PT. The meeting is subject to change depending on contributors'
availability. Check the [OpenTelemetry community
calendar](https://calendar.google.com/calendar/embed?src=google.com_b79e3e90j7bbsa2n2p5an5lf60%40group.calendar.google.com)
calendar](https://github.com/open-telemetry/community?tab=readme-ov-file#calendar)
for specific dates and for Zoom meeting links.
Meeting notes are available as a public [Google
@ -118,52 +231,65 @@ doc](https://docs.google.com/document/d/1yjjD6aBcLxlRazYrawukDgrhZMObwHARJbB9glW
If you have trouble accessing the doc, please get in touch on
[Slack](https://cloud-native.slack.com/archives/C01N3BC2W7Q).
[Maintainers](https://github.com/open-telemetry/community/blob/main/community-membership.md#maintainer)
([@open-telemetry/dotnet-maintainers](https://github.com/orgs/open-telemetry/teams/dotnet-maintainers)):
The meeting is open for all to join. We invite everyone to join our meeting,
regardless of your experience level. Whether you're a seasoned OpenTelemetry
developer, just starting your journey, or simply curious about the work we do,
you're more than welcome to participate!
### Maintainers
* [Alan West](https://github.com/alanwest), New Relic
* [Mikel Blanchard](https://github.com/CodeBlanch), Microsoft
* [Utkarsh Umesan Pillai](https://github.com/utpilla), Microsoft
* [Rajkumar Rangaraj](https://github.com/rajkumar-rangaraj), Microsoft
[Approvers](https://github.com/open-telemetry/community/blob/main/community-membership.md#approver)
([@open-telemetry/dotnet-approvers](https://github.com/orgs/open-telemetry/teams/dotnet-approvers)):
For more information about the maintainer role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer).
### Approvers
* [Cijo Thomas](https://github.com/cijothomas), Microsoft
* [Reiley Yang](https://github.com/reyang), Microsoft
* [Robert Paj&#x105;k](https://github.com/pellared), Splunk
* [Vishwesh Bankwar](https://github.com/vishweshbankwar), Microsoft
* [Martin Costello](https://github.com/martincostello), Grafana Labs
* [Mikel Blanchard](https://github.com/CodeBlanch), Microsoft
* [Piotr Kie&#x142;kowicz](https://github.com/Kielek), Splunk
[Emeritus
Maintainer/Approver/Triager](https://github.com/open-telemetry/community/blob/main/community-membership.md#emeritus-maintainerapprovertriager):
For more information about the approver role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver).
### Triagers
* [Martin Thwaites](https://github.com/martinjt), Honeycomb
* [Timothy "Mothra" Lee](https://github.com/TimothyMothra)
For more information about the triager role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager).
### Emeritus Maintainers
* [Mike Goldsmith](https://github.com/MikeGoldsmith)
* [Sergey Kanzhelev](https://github.com/SergeyKanzhelev)
* [Utkarsh Umesan Pillai](https://github.com/utpilla)
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager).
### Emeritus Approvers
* [Bruno Garcia](https://github.com/bruno-garcia)
* [Eddy Nakamura](https://github.com/eddynaka)
* [Liudmila Molkova](https://github.com/lmolkova)
* [Mike Goldsmith](https://github.com/MikeGoldsmith)
* [Paulo Janotti](https://github.com/pjanotti)
* [Sergey Kanzhelev](https://github.com/SergeyKanzhelev)
* [Reiley Yang](https://github.com/reyang)
* [Robert Paj&#x105;k](https://github.com/pellared)
* [Vishwesh Bankwar](https://github.com/vishweshbankwar)
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager).
### Emeritus Triagers
* [Victor Lu](https://github.com/victlu)
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager).
### Thanks to all the people who have contributed
[![contributors](https://contributors-img.web.app/image?repo=open-telemetry/opentelemetry-dotnet)](https://github.com/open-telemetry/opentelemetry-dotnet/graphs/contributors)
## Release Schedule
## References
Only the [core components](./VERSIONING.md#core-components) of the repo have
released a stable version. Components which are marked
[pre-release](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/VERSIONING.md#pre-releases),
are still work in progress and can undergo many breaking changes before stable
release.
See the [release
notes](https://github.com/open-telemetry/opentelemetry-dotnet/releases) for
existing releases.
See the [project
milestones](https://github.com/open-telemetry/opentelemetry-dotnet/milestones)
for details on upcoming releases. The dates and features described in issues and
milestones are estimates, and subject to change.
Daily builds from this repo are published to MyGet, and can be installed from
[this source](https://www.myget.org/F/opentelemetry/api/v3/index.json).
* [OpenTelemetry Project](https://opentelemetry.io/)
* [OpenTelemetry Specification](https://github.com/open-telemetry/opentelemetry-specification)

133
RELEASENOTES.md Normal file
View File

@ -0,0 +1,133 @@
# Release Notes
This file contains highlights and announcements covering all components.
For more details see `CHANGELOG.md` files maintained in the root source
directory of each individual package.
## 1.12.0
Release details: [1.12.0](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.12.0)
* **Breaking Change**: `OpenTelemetry.Exporter.OpenTelemetryProtocol` now
defaults to using OTLP/HTTP instead of OTLP/gRPC when targeting .NET Framework
and .NET Standard. This change may cause telemetry export to fail unless
appropriate adjustments are made. Explicitly setting OTLP/gRPC may result in a
`NotSupportedException` unless further configuration is applied. See
[#6209](https://github.com/open-telemetry/opentelemetry-dotnet/issues/6209) for
full details and mitigation guidance. [#6229](https://github.com/open-telemetry/opentelemetry-dotnet/pull/6229)
## 1.11.1
Release details: [1.11.1](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.11.1)
* Fixed a bug preventing `OpenTelemetry.Exporter.OpenTelemetryProtocol` from
exporting telemetry on .NET Framework.
## 1.11.0
Release details: [1.11.0](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.11.0)
* `OpenTelemetry.Exporter.OpenTelemetryProtocol` no longer depends on the
`Google.Protobuf`, `Grpc`, or `Grpc.Net.Client` packages. Serialization and
transmission of outgoing data is now performed manually to improve the overall
performance.
## 1.10.0
Release details: [1.10.0](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.10.0)
* Bumped the package versions of `System.Diagnostic.DiagnosticSource` and other
Microsoft.Extensions.* packages to `9.0.0`.
* Added support for new APIs introduced in `System.Diagnostics.DiagnosticSource`
`9.0.0`:
* [InstrumentAdvice&lt;T&gt;](https://learn.microsoft.com/dotnet/api/system.diagnostics.metrics.instrumentadvice-1)
For details see: [Explicit bucket histogram
aggregation](./docs/metrics/customizing-the-sdk/README.md#explicit-bucket-histogram-aggregation).
* [Gauge&lt;T&gt;](https://learn.microsoft.com/dotnet/api/system.diagnostics.metrics.gauge-1)
* [ActivitySource.Tags](https://learn.microsoft.com/dotnet/api/system.diagnostics.activitysource.tags)
(supported in OtlpExporter & ConsoleExporter)
* Experimental features promoted to stable:
* `CardinalityLimit` can now be managed for individual metrics via the View
API. For details see: [Changing cardinality limit for a
Metric](./docs/metrics/customizing-the-sdk/README.md#changing-the-cardinality-limit-for-a-metric).
* The [overflow
attribute](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#overflow-attribute)
(`otel.metric.overflow`) behavior is now enabled by default. The
`OTEL_DOTNET_EXPERIMENTAL_METRICS_EMIT_OVERFLOW_ATTRIBUTE` environment
variable is no longer required. For details see: [Cardinality
Limits](./docs/metrics/README.md#cardinality-limits).
* The MetricPoint reclaim behavior is now enabled by default when Delta
aggregation temporality is used. The
`OTEL_DOTNET_EXPERIMENTAL_METRICS_RECLAIM_UNUSED_METRIC_POINTS` environment
variable is no longer required. For details see: [Cardinality
Limits](./docs/metrics/README.md#cardinality-limits).
* Added `OpenTelemetrySdk.Create` API for configuring OpenTelemetry .NET signals
(logging, tracing, and metrics) via a single builder. This new API simplifies
bootstrap and teardown, and supports cross-cutting extensions targeting
`IOpenTelemetryBuilder`.
* Removed out of support `net6.0` target and added `net9.0` target.
## 1.9.0
Release details: [1.9.0](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.9.0)
* `Exemplars` are now part of the stable API! For details see: [customizing
exemplars
collection](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/docs/metrics/customizing-the-sdk#exemplars).
* `WithLogging` is now part of the stable API! Logging, Metrics, and Tracing can
now all be configured using the `With` style and the builders finally have
parity in their APIs.
## 1.8.0
Release details: [1.8.0](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.8.0)
* `TracerProvider` sampler can now be configured via the `OTEL_TRACES_SAMPLER` &
`OTEL_TRACES_SAMPLER_ARG` envvars.
* A new `UseOtlpExporter` cross-cutting extension has been added to register the
`OtlpExporter` and enable all signals in a single call.
* `exception.type`, `exception.message`, `exception.stacktrace` will now
automatically be included by the `OtlpLogExporter` when logging exceptions.
Previously an experimental environment variable had to be set.
## 1.7.0
Release details: [1.7.0](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.7.0)
* Bumped the package versions of System.Diagnostic.DiagnosticSource and other
Microsoft.Extensions.* packages to `8.0.0`.
* Added `net8.0` targets to all the components.
* OTLP Exporter
* Updated to use `ILogger` `CategoryName` as the instrumentation scope for
logs.
* Added named options support for OTLP Log Exporter.
* Added support for instrumentation scope attributes in metrics.
* Added support under an experimental flag to emit log exception attributes.
* Added support under an experimental flag to emit log eventId and eventName.
attributes.
* Added support for the
[IMetricsBuilder](https://learn.microsoft.com/dotnet/api/microsoft.extensions.diagnostics.metrics.imetricsbuilder)
API.
* Added an experimental opt-in metrics feature to reclaim unused MetricPoints
which enables a higher number of unique dimension combinations to be emitted.
See [reclaim unused metric
points](https://github.com/open-telemetry/opentelemetry-dotnet/blob/32c64d04defb5c92d056fd8817638151168b10da/docs/metrics/README.md#cardinality-limits)
for more details.

48
THIRD-PARTY-NOTICES.TXT Normal file
View File

@ -0,0 +1,48 @@
OpenTelemetry .NET uses third-party libraries or other resources that may be
distributed under licenses different than the OpenTelemetry .NET software.
The attached notices are provided for information only.
License notice for .NET
-------------------------------
The MIT License (MIT)
Copyright (c) .NET Foundation and Contributors
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License notice for gRPC for .NET (https://github.com/grpc/grpc-dotnet)
----------------------------------------------------------------------------------------------
Copyright 2019 The gRPC Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -56,9 +56,9 @@ without corresponding changes here will result in build breaks - this helps
catch any unintended changes to public API from being shipped accidentally. This
also helps reviewers quickly understand if a given PR is proposing public API
changes. For example,
[this](https://github.com/open-telemetry/opentelemetry-dotnet/tree/master/src/OpenTelemetry.Instrumentation.AspNetCore/.publicApi)
[this](https://github.com/open-telemetry/opentelemetry-dotnet/tree/master/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/.publicApi)
shows the public APIs, per target framework for the
`OpenTelemetry.Instrumentation.AspNetCore` package.
`OpenTelemetry.Exporter.OpenTelemetryProtocol` package.
APIs which are released as part of stable packages will be listed in the
"Shipped.txt" file, and those APIs which are released as part of

View File

@ -2,13 +2,13 @@
<Import Project=".\Common.props" />
<PropertyGroup>
<NoWarn>$(NoWarn),1574,1591</NoWarn>
<NoWarn>$(NoWarn),CS1574,CS1591</NoWarn>
<IsPackable>false</IsPackable>
<CodeAnalysisRuleSet>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\OpenTelemetry.test.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup>
<DefaultTargetFrameworkForExampleApps>net7.0</DefaultTargetFrameworkForExampleApps>
<DefaultTargetFrameworkForExampleApps>net9.0</DefaultTargetFrameworkForExampleApps>
</PropertyGroup>
<PropertyGroup Condition="$(MSBuildProjectName.EndsWith('.Tests'))">
@ -19,8 +19,18 @@
<Content Include="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\xunit.runner.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<!--Temp workaround to allow using daily dotnet 6 builds-->
<!--<PackageReference Include="System.Runtime.CompilerServices.Unsafe" PrivateAssets="All" NoWarn="NU1605" Version="6.0.0-preview.4.21253.7" />-->
</ItemGroup>
<ItemGroup Condition="'$(IsTestProject)' == 'true'">
<PackageReference Include="GitHubActionsTestLogger" />
<PackageReference Include="JunitXml.TestLogger" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.runner.visualstudio" PrivateAssets="All" />
</ItemGroup>
<ItemGroup Condition="'$(IsTestProject)' == 'true'">
<Compile Include="$(RepoRoot)\test\Shared\StrongNameTests.cs" Link="StrongNameTests.cs" />
</ItemGroup>
<PropertyGroup>
@ -32,4 +42,38 @@
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<Target Name="SkipVSTestForInvalidTargetFramework" BeforeTargets="VSTest" Condition="'$(IsTestProject)' == 'true'">
<!-- Note: When running dotnet test from CLI with the framework parameter
errors will be generated for projects which do not implement the requested
target. In order to enable running tests for a given framework across a
solution/project with mixed targets (eg: dotnet test OpenTelemetry.sln -f
net462) we convert this into a skip message only. -->
<PropertyGroup Condition="$(TargetFrameworks.Contains($(TargetFramework))) != 'true'">
<_SkipTests>true</_SkipTests>
<IsTestProject>false</IsTestProject>
</PropertyGroup>
<Message Importance="high" Text="Skipping test execution for '$(TargetPath)' because it does not contain the '$(TargetFramework)' target." Condition="'$(_SkipTests)' == 'true'" />
</Target>
<Target Name="ResolveExposedExperimentalFeatures" BeforeTargets="CoreCompile">
<!-- Note: What this does is look for $(ProjectReferenceName).BuildFlags.txt
files for all the dependencies of the project being compiled. If
ExposeExperimentalFeatures=true is found in those files we set compiler
constants for each project where experimental features were exposed.
Example:
OPENTELEMETRY_EXPORTER_INMEMORY_EXPERIMENTAL_FEATURES_EXPOSED;OPENTELEMETRY_EXPERIMENTAL_FEATURES_EXPOSED;OPENTELEMETRY_API_EXPERIMENTAL_FEATURES_EXPOSED;OPENTELEMETRY_API_PROVIDERBUILDEREXTENSIONS_EXPERIMENTAL_FEATURES_EXPOSED
-->
<ItemGroup>
<DependenciesWithExposedExperimentalFeatures
Include="@(_ResolvedProjectReferencePaths->'%(Filename)')"
Condition="$([System.IO.File]::Exists('%(RootDir)%(Directory)%(Filename).BuildFlags.txt')) AND $([System.IO.File]::ReadAllText('%(RootDir)%(Directory)%(Filename).BuildFlags.txt').Contains('ExposeExperimentalFeatures=true'))" />
<CompilerConstantsForDependenciesWithExposedExperimentalFeatures Include="@(DependenciesWithExposedExperimentalFeatures->'$([System.String]::Copy('%(DependenciesWithExposedExperimentalFeatures.Identity)').ToUpper().Replace('.', '_'))_EXPERIMENTAL_FEATURES_EXPOSED')" />
</ItemGroup>
<PropertyGroup Condition="'@(CompilerConstantsForDependenciesWithExposedExperimentalFeatures)' != ''">
<DefineConstants>$(DefineConstants);@(CompilerConstantsForDependenciesWithExposedExperimentalFeatures)</DefineConstants>
</PropertyGroup>
</Target>
</Project>

View File

@ -1,53 +1,70 @@
<Project>
<Import Project=".\Common.props" />
<PropertyGroup>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)/OpenTelemetry.prod.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Label="BuildFlags">
<ExposeExperimentalFeatures Condition="'$(ExposeExperimentalFeatures)' == ''">true</ExposeExperimentalFeatures>
<EnablePackageValidation Condition="'$(EnablePackageValidation)' == ''">false</EnablePackageValidation>
</PropertyGroup>
<PropertyGroup Label="PackageProperties">
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/open-telemetry/opentelemetry-dotnet</RepositoryUrl>
<PackageTags>Observability;OpenTelemetry;Monitoring;Telemetry;Tracing;Metrics;Logging</PackageTags>
<PackageIcon>opentelemetry-icon-color.png</PackageIcon>
<PackageProjectUrl>https://opentelemetry.io</PackageProjectUrl>
<Authors>OpenTelemetry Authors</Authors>
<Copyright>Copyright The OpenTelemetry Authors</Copyright>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackagePrimaryLicenseFile>$(RepoRoot)\LICENSE.TXT</PackagePrimaryLicenseFile>
<PackageThirdPartyNoticesFile>$(RepoRoot)\THIRD-PARTY-NOTICES.TXT</PackageThirdPartyNoticesFile>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageChangelogFile>CHANGELOG.md</PackageChangelogFile>
<PackageReleaseNotesFile>$(RepoRoot)\RELEASENOTES.md</PackageReleaseNotesFile>
</PropertyGroup>
<PropertyGroup Label="SourceLinkProperties">
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<ContinuousIntegrationBuild Condition="'$(Deterministic)'=='true'">true</ContinuousIntegrationBuild>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MinVer" PrivateAssets="All" Condition="'$(IntegrationBuild)' != 'true'" />
<PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="All" />
</ItemGroup>
<PropertyGroup>
<RunApiCompat>true</RunApiCompat>
<ExposeExperimentalFeatures Condition="'$(ExposeExperimentalFeatures)' == ''">true</ExposeExperimentalFeatures>
</PropertyGroup>
<ItemGroup Condition="'$(MinVerTagPrefix)' == 'core-' AND '$(CheckAPICompatibility)' == 'true' AND '$(RunApiCompat)' == 'true'">
<PackageReference Include="Microsoft.DotNet.ApiCompat" PrivateAssets="All" />
<ResolvedMatchingContract Include="$(RepoRoot)\build\LastMajorVersionBinaries\$(AssemblyName)\$(OTelLatestStableVer)\lib\$(TargetFramework)\$(AssemblyName).dll" />
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)opentelemetry-icon-color.png" Pack="true" PackagePath="\" />
<SourceRoot Condition="'$(Deterministic)'=='true'" Include="$(MSBuildThisFileDirectory)/" />
<None Include="$(IntermediateOutputPath)$(ProjectName).BuildFlags.txt"
Link="$(ProjectName).BuildFlags.txt"
CopyToOutputDirectory="PreserveNewest"
Visible="false" />
<!-- Note: This includes all the PublicApiAnalyzers files in projects to make editing easier in the IDE -->
<None Include=".publicApi\**\PublicAPI.*.txt" />
</ItemGroup>
<Target Name="PreBuild" BeforeTargets="DispatchToInnerBuilds;ValidateApiCompatForSrc" Condition="'$(MinVerTagPrefix)' == 'core-' AND '$(CheckAPICompatibility)' == 'true' AND '$(RunApiCompat)' == 'true'">
<!-- Note: DispatchToInnerBuilds is called for projects with multiple
targets defined to spawn a build process for each target framework being
compiled. Executing BEFORE that step means this runs once for a project
instead of in parallel for each target framework defined. If we ever have a
project with only a single target, this will NOT run and an alternative
solution will be needed. -->
<Message Text="ApiCompat: Running the powershell script to download the package for $(MSBuildProjectName)." Importance="High"/>
<Exec Command="powershell -ExecutionPolicy Unrestricted -File &quot;$(RepoRoot)\build\PreBuild.ps1&quot; -package $(AssemblyName) -version &quot;$(OTelLatestStableVer)&quot; -workDir &quot;$(RepoRoot)\build\LastMajorVersionBinaries&quot;" />
</Target>
<Target Name="FindContractDependencyPaths" BeforeTargets="ValidateApiCompatForSrc" AfterTargets="ResolveAssemblyReferences" Condition="'$(MinVerTagPrefix)' == 'core-' AND '$(CheckAPICompatibility)' == 'true' AND '$(RunApiCompat)' == 'true'">
<Message Text="ApiCompat: Finding the contract dependency path for $(MSBuildProjectName)." Importance="High"/>
<Target Name="IncludeSigningSignaturesInPackages" BeforeTargets="_GetTargetFrameworksOutput">
<!-- Note: This target adds any signatures found to nuget packages -->
<ItemGroup>
<_ReferencePathDirectories Include="@(ReferencePath -> '%(RootDir)%(Directory)')" />
<SignatureFiles Include="$(RepoRoot)\src\$(MSBuildProjectName)\bin\$(Configuration)\*\$(MSBuildProjectName).dll-keyless.sig" />
<Content Include="@(SignatureFiles)" Link="%(RecursiveDir)%(Filename)%(Extension)" PackagePath="lib" />
<CertificateFiles Include="$(RepoRoot)\src\$(MSBuildProjectName)\bin\$(Configuration)\*\$(MSBuildProjectName).dll-keyless.pem" />
<Content Include="@(CertificateFiles)" Link="%(RecursiveDir)%(Filename)%(Extension)" PackagePath="lib" />
</ItemGroup>
<PropertyGroup>
<ContractDependencyPaths>@(_ReferencePathDirectories->Distinct())</ContractDependencyPaths>
</PropertyGroup>
<Message Importance="high" Text="**IncludeSignaturesInPackagesDebug** SignatureFiles: @(SignatureFiles)" />
<Message Importance="high" Text="**IncludeCertificatesInPackagesDebug** SignatureFiles: @(CertificateFiles)" />
</Target>
<PropertyGroup>
<!-- OmniSharp/VS Code requires TargetFrameworks to be in descending order for IntelliSense and analysis. -->
<DefaultTargetFrameworks>net6.0;netstandard2.0;net462</DefaultTargetFrameworks>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)/OpenTelemetry.prod.ruleset</CodeAnalysisRuleSet>
<NoWarn>$(NoWarn),1573,1712</NoWarn>
<PackageOutputPath Condition="$(Build_ArtifactStagingDirectory) != ''">$(Build_ArtifactStagingDirectory)</PackageOutputPath>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<ApiCompatExcludeAttributeList>$(RepoRoot)\build\GlobalAttrExclusions.txt</ApiCompatExcludeAttributeList>
</PropertyGroup>
<Target Name="AssemblyVersionTarget" AfterTargets="MinVer" Condition="'$(MinVerVersion)'!='' AND '$(BuildNumber)' != ''">
<Target Name="AssemblyVersionTarget" AfterTargets="MinVer" Condition="'$(MinVerVersion)' != '' AND '$(BuildNumber)' != ''">
<!-- Note: $(BuildNumber) is typically only set for builds initiated by the
publish workflow. The goal here is to set the assembly FileVersion and
resolve ExposeExperimentalFeatures based on the version MinVer resolved from
@ -58,6 +75,10 @@
<ExposeExperimentalFeatures Condition="'$(MinVerPreRelease)' == ''">false</ExposeExperimentalFeatures>
</PropertyGroup>
<Error
Condition="'$(MinVerTagPrefix)' == 'coreunstable-' AND ('$(MinVerPreRelease)' == '' OR $(MinVerPreRelease.StartsWith('rc')))"
Text="Unstable core packages cannot be released stable or as release candidates." />
<!-- Note: The '$(TargetFramework)' != '' check here is to reduce log spam
in builds like dotnet pack which fire MinVer but don't resolve the actual
TargetFramework -->
@ -67,6 +88,72 @@
Text="**AssemblyVersionDebug** TargetFramework: $(TargetFramework), MinVerVersion: $(MinVerVersion), BuildNumber: $(BuildNumber), FileVersion: $(FileVersion), ExposeExperimentalFeatures: $(ExposeExperimentalFeatures)" />
</Target>
<Target Name="EnsurePackageValidationBaselineVersion"
BeforeTargets="RunPackageValidation"
Condition="'$(DisablePackageBaselineValidation)' != 'true' AND '$(PackageValidationBaselineVersion)' == '' AND '$(MinVerTagPrefix)' != 'coreunstable-'">
<Error Text="Cannot perform package validation without a baseline package version." />
</Target>
<Target Name="IncludeReadmeAndReleaseNotesInPackages" BeforeTargets="_GetTargetFrameworksOutput">
<!-- Note: This target runs during pack to convert relative links in
markdowns into github permalinks which will work when rendered on Nuget. -->
<Exec
Command="git rev-parse HEAD"
ConsoleToMsBuild="True"
IgnoreExitCode="True"
StandardOutputImportance="low">
<Output PropertyName="GitCommitConsoleOutput" TaskParameter="ConsoleOutput"/>
<Output PropertyName="GitCommitExitCode" TaskParameter="ExitCode"/>
</Exec>
<Exec
Command="git remote get-url origin"
ConsoleToMsBuild="True"
IgnoreExitCode="True"
StandardOutputImportance="low">
<Output PropertyName="GitOriginConsoleOutput" TaskParameter="ConsoleOutput"/>
<Output PropertyName="GitOriginExitCode" TaskParameter="ExitCode"/>
</Exec>
<PropertyGroup>
<MarkdownCommentRegex>\[([^]]+?)\]\(\.(.+?)\)</MarkdownCommentRegex>
<GitHubRepoUrl>$(GitOriginConsoleOutput.Replace('.git',''))</GitHubRepoUrl>
<GitHubPermalinkUrl Condition="'$(PackTag)' != ''">$(GitHubRepoUrl)/blob/$(PackTag)</GitHubPermalinkUrl>
<GitHubPermalinkUrl Condition="'$(PackTag)' == ''">$(GitHubRepoUrl)/blob/$(GitCommitConsoleOutput)</GitHubPermalinkUrl>
</PropertyGroup>
<Message Importance="high" Text="**GitInformationDebug** GitCommitConsoleOutput: $(GitCommitConsoleOutput), GitCommitExitCode: $(GitCommitExitCode), GitOriginConsoleOutput: $(GitOriginConsoleOutput), GitOriginExitCode: $(GitOriginExitCode), GitHubPermalinkUrl: $(GitHubPermalinkUrl)" />
<ItemGroup>
<PackageMarkdownFiles Include="README.md" />
</ItemGroup>
<ItemGroup>
<PackageMarkdownFiles Update="@(PackageMarkdownFiles)" Path="$([MSBuild]::ValueOrDefault('%(FullPath)','').Replace('$(RepoRoot)', '').Replace('%(FileName)%(Extension)', ''))" />
</ItemGroup>
<WriteLinesToFile
File="$(IntermediateOutputPath)%(PackageMarkdownFiles.Filename)%(PackageMarkdownFiles.Extension)"
Lines="$([System.Text.RegularExpressions.Regex]::Replace($([System.IO.File]::ReadAllText(%(PackageMarkdownFiles.FullPath))), '$(MarkdownCommentRegex)', '[$1]($(GitHubPermalinkUrl)%(PackageMarkdownFiles.Path).$2)').Replace('\', '/'))"
Overwrite="true"
Encoding="UTF-8"/>
<PropertyGroup>
<_PackageReleaseNotesFilePath>$([System.IO.Path]::GetFullPath('$(PackageReleaseNotesFile)').Replace('$(RepoRoot)', '').Replace('\', '/'))</_PackageReleaseNotesFilePath>
<_PackageChangelogFilePath>$([System.IO.Path]::GetFullPath('$(PackageChangelogFile)').Replace('$(RepoRoot)', '').Replace('\', '/'))</_PackageChangelogFilePath>
<PackageReleaseNotes>
For highlights and announcements see: $(GitHubPermalinkUrl)$(_PackageReleaseNotesFilePath).
For detailed changes see: $(GitHubPermalinkUrl)$(_PackageChangelogFilePath).
</PackageReleaseNotes>
</PropertyGroup>
<ItemGroup>
<Content Include="$(IntermediateOutputPath)*.md" PackagePath="/" />
</ItemGroup>
</Target>
<Target Name="ResolveExposeExperimentalFeatures" BeforeTargets="CoreCompile" DependsOnTargets="AssemblyVersionTarget">
<!-- Note: This runs for all builds. The goal here is to set the
EXPOSE_EXPERIMENTAL_FEATURES compiler constant if
@ -76,10 +163,22 @@
<DefineConstants>$(DefineConstants);EXPOSE_EXPERIMENTAL_FEATURES</DefineConstants>
</PropertyGroup>
<!-- Note: We write a file into the output dir which captures the state of
ExposeExperimentalFeatures for the current compilation. This is used by
consuming projects (tests, benchmarks, examples, etc) to add compiler
constants which can be used to detect experimental APIs -->
<WriteLinesToFile
File="$(IntermediateOutputPath)$(ProjectName).BuildFlags.txt"
Lines="ExposeExperimentalFeatures=$(ExposeExperimentalFeatures)"
Overwrite="true"/>
<!-- Note: This selects the correct PublicApiAnalyzers files based on $(ExposeExperimentalFeatures) -->
<ItemGroup>
<AdditionalFiles Include=".publicApi\Stable\PublicAPI.*.txt" />
<AdditionalFiles Include=".publicApi\Stable\$(TargetFramework)\PublicAPI.*.txt" />
<AdditionalFiles Include=".publicApi\Experimental\PublicAPI.*.txt" Condition="'$(ExposeExperimentalFeatures)' == 'true'" />
<AdditionalFiles Include=".publicApi\Experimental\$(TargetFramework)\PublicAPI.*.txt" Condition="'$(ExposeExperimentalFeatures)' == 'true'" />
<AdditionalFiles Include=".publicApi\PublicAPI.*.txt" />
<AdditionalFiles Include=".publicApi\$(TargetFramework)\PublicAPI.*.txt" />
</ItemGroup>
@ -92,40 +191,4 @@
Text="**ResolveExposeExperimentalFeaturesDebug** TargetFramework: $(TargetFramework), DefineConstants: $(DefineConstants)" />
</Target>
<PropertyGroup>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/open-telemetry/opentelemetry-dotnet</RepositoryUrl>
<PackageTags>Observability;OpenTelemetry;Monitoring;Telemetry;Tracing</PackageTags>
<PackageIcon>opentelemetry-icon-color.png</PackageIcon>
<PackageProjectUrl>https://opentelemetry.io</PackageProjectUrl>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<Authors>OpenTelemetry Authors</Authors>
<Copyright>Copyright The OpenTelemetry Authors</Copyright>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
</PropertyGroup>
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)opentelemetry-icon-color.png" Pack="true" PackagePath="\" />
</ItemGroup>
<PropertyGroup Label="SourceLink">
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
</PropertyGroup>
<ItemGroup Condition="'$(Deterministic)'=='true'">
<SourceRoot Include="$(MSBuildThisFileDirectory)/" />
</ItemGroup>
<PropertyGroup Condition="'$(Deterministic)'=='true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
<!-- Note: This includes all the PublicApiAnalyzers files in projects to make editing easier in the IDE -->
<ItemGroup>
<None Include=".publicApi\**\PublicAPI.*.txt" />
</ItemGroup>
</Project>

View File

@ -4,13 +4,48 @@
<SignAssembly>true</SignAssembly>
<RepoRoot>$([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory)).Parent.FullName)</RepoRoot>
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)debug.snk</AssemblyOriginatorKeyFile>
<DefineConstants>$(DefineConstants);SIGNED</DefineConstants>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<!--temporarily disable. See 3958-->
<!--<AnalysisLevel>latest-All</AnalysisLevel>-->
<NuGetAudit>true</NuGetAudit>
<NuGetAuditMode>all</NuGetAuditMode>
<NuGetAuditLevel>low</NuGetAuditLevel>
<!-- Suppress warnings for repo code using experimental features -->
<NoWarn>$(NoWarn);OTEL1000;OTEL1001;OTEL1002;OTEL1004</NoWarn>
<AnalysisLevel>latest-All</AnalysisLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(SignAssembly)' == 'true' ">
<StrongNamePublicKey>002400000480000094000000060200000024000052534131000400000100010051C1562A090FB0C9F391012A32198B5E5D9A60E9B80FA2D7B434C9E5CCB7259BD606E66F9660676AFC6692B8CDC6793D190904551D2103B7B22FA636DCBB8208839785BA402EA08FC00C8F1500CCEF28BBF599AA64FFB1E1D5DC1BF3420A3777BADFE697856E9D52070A50C3EA5821C80BEF17CA3ACFFA28F89DD413F096F898</StrongNamePublicKey>
</PropertyGroup>
<PropertyGroup Label="BuildFlags">
<RunningDotNetPack Condition="'$(RunningDotNetPack)' == ''">false</RunningDotNetPack>
</PropertyGroup>
<!-- OmniSharp/VS Code requires TargetFrameworks to be in descending order for IntelliSense and analysis. -->
<PropertyGroup>
<NetFrameworkMinimumSupportedVersion>net462</NetFrameworkMinimumSupportedVersion>
<NetFrameworkSupportedVersions>net481;net48;net472;net471;net47;net462</NetFrameworkSupportedVersions>
<!-- production TFMs -->
<TargetFrameworksForLibraries>net9.0;net8.0;netstandard2.0;$(NetFrameworkMinimumSupportedVersion)</TargetFrameworksForLibraries>
<TargetFrameworksForLibrariesExtended>net9.0;net8.0;netstandard2.1;netstandard2.0;$(NetFrameworkMinimumSupportedVersion)</TargetFrameworksForLibrariesExtended>
<TargetFrameworksForPrometheusAspNetCore>net9.0;net8.0</TargetFrameworksForPrometheusAspNetCore>
<TargetFrameworksRequiringSystemTextJsonDirectReference>net8.0;netstandard2.1;netstandard2.0;$(NetFrameworkMinimumSupportedVersion)</TargetFrameworksRequiringSystemTextJsonDirectReference>
<!-- non-production TFMs -->
<TargetFrameworksForAspNetCoreTests>net9.0;net8.0</TargetFrameworksForAspNetCoreTests>
<TargetFrameworksForAotCompatibilityTests>net9.0;net8.0</TargetFrameworksForAotCompatibilityTests>
<TargetFrameworksForDocs>net9.0;net8.0</TargetFrameworksForDocs>
<TargetFrameworksForDocs Condition="$(OS) == 'Windows_NT' And '$(UsingMicrosoftNETSdkWeb)' != 'True'">
$(TargetFrameworksForDocs);$(NetFrameworkSupportedVersions)
</TargetFrameworksForDocs>
<TargetFrameworksForTests>net9.0;net8.0</TargetFrameworksForTests>
<TargetFrameworksForTests Condition="$(OS) == 'Windows_NT'">
$(TargetFrameworksForTests);$(NetFrameworkMinimumSupportedVersion)
</TargetFrameworksForTests>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
@ -20,6 +55,7 @@
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
@ -29,26 +65,13 @@
<ItemGroup>
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" PrivateAssets="All" />
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" Condition="'$(SkipAnalysis)'!='true'" />
<PackageReference Include="Microsoft.CodeCoverage" PrivateAssets="All" Condition="'$(Configuration)'=='Release'" />
<!--
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" PrivateAssets="All" Condition="'$(SkipAnalysis)'!='true'" />
-->
</ItemGroup>
<ItemGroup Condition="'$(IncludeDiagnosticSourceInstrumentationHelpers)'=='true'">
<Compile Include="$(RepoRoot)\src\Shared\ActivityInstrumentationHelper.cs" Link="Includes\ActivityInstrumentationHelper.cs" />
<Compile Include="$(RepoRoot)\src\Shared\DiagnosticSourceInstrumentation\DiagnosticSourceListener.cs" Link="Includes\DiagnosticSourceListener.cs" />
<Compile Include="$(RepoRoot)\src\Shared\DiagnosticSourceInstrumentation\DiagnosticSourceSubscriber.cs" Link="Includes\DiagnosticSourceSubscriber.cs" />
<Compile Include="$(RepoRoot)\src\Shared\DiagnosticSourceInstrumentation\ListenerHandler.cs" Link="Includes\ListenerHandler.cs" />
<Compile Include="$(RepoRoot)\src\Shared\DiagnosticSourceInstrumentation\PropertyFetcher.cs" Link="Includes\PropertyFetcher.cs" />
</ItemGroup>
<ItemGroup Condition="'$(IncludeInstrumentationHelpers)'=='true' Or '$(IncludeDiagnosticSourceInstrumentationHelpers)'=='true'">
<ItemGroup Condition="'$(IncludeInstrumentationHelpers)'=='true'">
<Compile Include="$(RepoRoot)\src\Shared\ActivityHelperExtensions.cs" Link="Includes\ActivityHelperExtensions.cs" />
<Compile Include="$(RepoRoot)\src\Shared\ExceptionExtensions.cs" Link="Includes\ExceptionExtensions.cs" />
<Compile Include="$(RepoRoot)\src\Shared\SemanticConventions.cs" Link="Includes\SemanticConventions.cs" />
<Compile Include="$(RepoRoot)\src\Shared\SpanAttributeConstants.cs" Link="Includes\SpanAttributeConstants.cs" />
<Compile Include="$(RepoRoot)\src\Shared\SpanHelper.cs" Link="Includes\SpanHelper.cs" />
<Compile Include="$(RepoRoot)\src\Shared\StatusHelper.cs" Link="Includes\StatusHelper.cs" />
</ItemGroup>

12
build/Common.targets Normal file
View File

@ -0,0 +1,12 @@
<Project>
<ItemGroup Condition="'$(ReferenceSystemTextJsonPackages)' == 'true' AND $(TargetFrameworksRequiringSystemTextJsonDirectReference.Contains('$(TargetFramework)'))">
<!-- Note: System.Text.Encodings.Web is referenced on NET Framework & NET
Standard targets because System.Text.Json v4.7.2 uses
System.Text.Encodings.Web >= v4.7.1 but System.Text.Encodings.Web needs to
be at v4.7.2 to be safe. -->
<PackageReference Include="System.Text.Encodings.Web" Condition="'$(TargetFrameworkIdentifier)' != '.NETCoreApp'" />
<PackageReference Include="System.Text.Json" />
</ItemGroup>
</Project>

View File

@ -1,9 +0,0 @@
<Project>
<ItemGroup>
<SolutionProjects Include="..\**\OpenTelemetry.Instrumentation*.csproj" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(SolutionProjects)" Targets="Restore;Build" ContinueOnError="ErrorAndStop" />
</Target>
</Project>

34
build/OpenTelemetry.proj Normal file
View File

@ -0,0 +1,34 @@
<Project>
<PropertyGroup>
<RepoRoot>$([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory)).Parent.FullName)</RepoRoot>
</PropertyGroup>
<ItemGroup>
<SolutionProjects Include="$(RepoRoot)\**\*.csproj" />
<PackProjects Include="$(RepoRoot)\src\**\*.csproj" />
<TestProjects Include="$(RepoRoot)\test\**\*.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(RunningDotNetPack)' == 'true'">
<!-- Skip building these projects when publish packages workflow runs -->
<SolutionProjects Remove="$(RepoRoot)\docs\**\*.csproj" />
<SolutionProjects Remove="$(RepoRoot)\examples\**\*.csproj" />
<SolutionProjects Remove="@(TestProjects)" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(SolutionProjects)" Targets="Build" ContinueOnError="ErrorAndStop" />
</Target>
<Target Name="Restore">
<MSBuild Projects="@(SolutionProjects)" Targets="Restore" ContinueOnError="ErrorAndStop" />
</Target>
<Target Name="VSTest">
<MSBuild Projects="@(TestProjects)" Targets="VSTest" ContinueOnError="ErrorAndStop" />
</Target>
<Target Name="Pack">
<MSBuild Projects="@(PackProjects)" Targets="Pack" ContinueOnError="ErrorAndStop" />
</Target>
</Project>

View File

@ -1,46 +0,0 @@
param(
[string]$package,
[string]$version,
[string]$workDir = ".\LastMajorVersionBinaries"
)
if (-Not (Test-Path $workDir))
{
Write-Host "Working directory for compatibility check packages '$workDir' not found, creating..."
New-Item -Path $workDir -ItemType "directory" | Out-Null
}
if (Test-Path -Path "$workDir\$package.$version.zip")
{
Write-Host "Previous package $package@$version already downloaded for compatibility check"
}
else
{
Write-Host "Retrieving package $package@$version for compatibility check"
try
{
$Response = Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/$package/$version -Outfile "$workDir\$package.$version.zip"
}
catch
{
$StatusCode = $_.Exception.Response.StatusCode.value__
throw "Error downloading the package $package@$version. Status code of the received response: $StatusCode"
}
}
if (Test-Path -Path "$workDir\$package\$version\lib")
{
Write-Host "Previous package $package@$version already extracted to '$workDir\$package\$version\lib'"
}
else
{
Write-Host "Extracting package $package@$version from '$workDir\$package.$version.zip' to '$workDir\$package\$version' for compatibility check"
try
{
Expand-Archive -LiteralPath "$workDir\$package.$version.zip" -DestinationPath "$workDir\$package\$version" -Force
}
catch
{
throw "Error extracting $package@$version.zip"
}
}

View File

@ -1,132 +1,218 @@
# Release process
Only for Maintainers.
**Note: Approvers (collaborators) can perform much of the release process but
Maintainers (admins) are needed to merge PRs and for the push to NuGet.**
1. Decide the tag name (version name) to be released. e.g. 1.4.0-beta.1,
1.0.0-rc9.7 etc.
2. Run the following PowerShell from the root of the repo to get combined
changelog (to be used later).
```powershell
$changelogs = Get-ChildItem -Path . -Recurse -Filter changelog.md
foreach ($changelog in $changelogs)
{
Add-Content -Path .\combinedchangelog.md -Value "**$($changelog.Directory.Name)**"
$lines = Get-Content -Path $changelog.FullName
$started = $false
$ended = $false
foreach ($line in $lines)
{
if($line -like "## Unreleased" -and $started -ne $true)
{
$started = $true
}
elseif($line -like "## *" -and $started -eq $true)
{
$ended = $true
break
}
else
{
if ($started -eq $true)
{
Add-Content -Path .\combinedchangelog.md $line
}
}
}
}
```
This generates combined changelog to be used in GitHub release. Once
contents of combined changelog is saved somewhere, delete the file.
3. Run the following PowerShell script from the root of the repo. This updates
all the changelog to have release date for the current version being
released. Replace the version with actual version. In the script below,
replace `1.4.0-beta.1` with the tag name chosen for the package in Step 1.
```powershell
$changelogs = Get-ChildItem -Path . -Recurse -Filter changelog.md
foreach ($changelog in $changelogs)
{
(Get-Content -Path $changelog.FullName) -replace "Unreleased", "Unreleased
## 1.4.0-beta.1
Released $(Get-Date -UFormat '%Y-%b-%d')" | Set-Content -Path $changelog.FullName
}
```
4. Normalize PublicApi files (Stable Release Only): Run the PowerShell script
`.\build\finalize-publicapi.ps1`. This will merge the contents of
Unshipped.txt into the Shipped.txt.
5. Submit PR with the above changes, and get it merged.
6. Tag Git with version to be released. We use
1. Decide the component(s) and tag name (version name) to be released. We use
[MinVer](https://github.com/adamralph/minver) to do versioning, which
produces version numbers based on git tags.
Note: If releasing only core components, only add and push the tag prefixed
with `core-`. For example:
Notes:
```sh
git tag -a core-1.4.0-beta.1 -m "1.4.0-beta.1 of all core components"
git push origin core-1.4.0-beta.1
```
* There are different categories of packages. Check the project file for
what you want to release and look for `MinVerTagPrefix`.
If releasing only non-core components, only add and push the tags without
prefix. For example:
* `core-`: Core packages. These packages are defined\goverened by the
OpenTelemetry Specification or are part of fundamental infrastructure
and have released stable versions. They may be released as `alpha`,
`beta`, `rc`, or stable.
```sh
git tag -a 1.0.0-rc9.7 -m "1.0.0-rc9.7 of all non-core components"
git push origin 1.0.0-rc9.7
```
* `OpenTelemetry.Api` - Defined by spec (API)
* `OpenTelemetry.Api.ProviderBuilderExtensions` - Fundamental
infrastructure
* `OpenTelemetry` - Defined by spec (SDK)
* `OpenTelemetry.Exporter.Console` - Defined by spec
* `OpenTelemetry.Exporter.InMemory` - Defined by spec
* `OpenTelemetry.Exporter.OpenTelemetryProtocol` - Defined by spec
* `OpenTelemetry.Exporter.Zipkin` - Defined by spec
* `OpenTelemetry.Extensions.Hosting` - Fundamental infrastructure
* `OpenTelemetry.Extensions.Propagators` - Defined by spec
If releasing both, push both tags above.
* `coreunstable-`: Core unstable packages. These packages are
defined\goverened by the OpenTelemetry Specification or are part of
fundamental infrastructure but have not released stable versions. As
of the `1.9.0` release cycle they may only be released as `alpha` or
`beta`.
7. Go to the [list of
tags](https://github.com/open-telemetry/opentelemetry-dotnet/tags)
and find the tag created for the core components. Click the three
dots next to the tag and choose `Create release`.
* Give the release a name based on the tags created
(e.g., `1.4.0-beta.1 / 1.0.0-rc9.7`).
* Paste the contents of combined changelog from Step 2.
* Check "This is a pre-release" if applicable.
* Click "Publish release". This will kick off the [Pack and publish to
MyGet workflow](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/publish-packages-1.0.yml).
* `OpenTelemetry.Exporter.Prometheus.AspNetCore` - Defined by spec
(experimental)
* `OpenTelemetry.Exporter.Prometheus.HttpListener` - Defined by spec
(experimental)
* `OpenTelemetry.Shims.OpenTracing` - Defined by spec (stable but
incomplete implementation)
8. Validate using MyGet packages. Basic sanity checks :)
* As of the `1.9.0` release cycle core unstable packages always depend on
the stable versions of core packages. Before releasing a non-core
component ensure the `OTelLatestStableVer` property in
`Directory.Packages.props` has been updated to the latest stable core
version.
9. From the above build, get the artifacts from the drop, which has all the
NuGet packages.
2. Run the [Prepare for a
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/prepare-release.yml)
workflow. Specify the `tag-prefix` and the `version` for the release. Make
sure to run the workflow on the branch being released. This is typically
`main` but could be some other branch for hotfix (eg `main-1.8.0`). The
workflow will open a PR to update `CHANGELOG.md` files for the projects
being released. If a stable version is specified as the `version` parameter,
the workflow will also merge the contents of any detected
`PublicAPI.Unshipped.txt` files in the `.publicApi` folder into the
corresponding `PublicAPI.Shipped.txt` files for the projects being released.
10. Copy all the NuGet files and symbols into a local folder. If only releasing
core packages, only copy them over.
<details>
<summary>Instructions for preparing for a release manually</summary>
11. Download latest [nuget.exe](https://www.nuget.org/downloads) into the same
folder from Step 9.
* Update CHANGELOG files
12. Obtain the API key from nuget.org (Only maintainers have access)
Run the PowerShell script `.\build\scripts\update-changelogs.ps1
-minVerTagPrefix [MinVerTagPrefix] -version [Version]`. Where
`[MinVerTagPrefix]` is the tag prefix (eg `core-`) for the components
being released and `[Version]` is the version being released (eg
`1.9.0`). This will update `CHANGELOG.md` files for the projects being
released.
13. Run the following commands from PowerShell from local folder used in Step 9:
* **Stable releases only**: Normalize PublicApi files
```powershell
.\nuget.exe setApiKey <actual api key>
Run the PowerShell script `.\build\scripts\finalize-publicapi.ps1
-minVerTagPrefix [MinVerTagPrefix]`. Where `[MinVerTagPrefix]` is the tag
prefix (eg `core-`) for the components being released. This will merge
the contents of any detected `PublicAPI.Unshipped.txt` files in the
`.publicApi` folder into the corresponding `PublicAPI.Shipped.txt` files
for the projects being released.
</details
get-childitem -Recurse | where {$_.extension -eq ".nupkg"} | foreach ($_) {.\nuget.exe push $_.fullname -Source https://api.nuget.org/v3/index.json}
```
3. For stable releases, use the `/UpdateReleaseNotes` command on the PR opened
by [Prepare for a
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/prepare-release.yml)
workflow in step 2 to update [Release Notes](../RELEASENOTES.md) with any
big or interesting new features.
14. Packages would be available in nuget.org in few minutes. Validate that the
package is uploaded.
* The `/UpdateReleaseDates` command may also be used to update dates in
`CHANGELOG.md` files. This is useful when the PR is opened a few days
before the planned release date to review public API changes.
15. Delete the API key generated in Step 11.
4. :stop_sign: The PR opened by [Prepare for a
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/prepare-release.yml)
workflow in step 2 has to be merged.
16. Update the OpenTelemetry.io document
[here](https://github.com/open-telemetry/opentelemetry.io/tree/main/content/en/docs/net)
by sending a Pull Request.
5. Once the PR opened by [Prepare for a
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/prepare-release.yml)
workflow in step 2 has been merged a trigger will automatically add a
comment and lock the PR. Post a comment with "/CreateReleaseTag" in the
body. This will tell the [Prepare for a
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/prepare-release.yml)
workflow to push the tag for the merge commit of the PR which will trigger
the [Build, pack, and publish to
MyGet](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/publish-packages-1.0.yml)
workflow.
17. If a new stable version of the core packages were released, update
`OTelLatestStableVer` in Directory.Packages.props to the just released
stable version.
<details>
<summary>Instructions for pushing tags manually</summary>
Note: In the below examples `git push origin` is used. If running in a fork,
add the main repo as `upstream` and use `git push upstream` instead. Pushing
a tag to `origin` in a fork pushes the tag to the fork.
* If releasing core components, add and push the tag prefixed with `core-`.
For example:
```sh
git tag -a core-1.4.0-beta.1 -m "1.4.0-beta.1 of all core components"
git push origin core-1.4.0-beta.1
```
* If releasing core unstable components, push the tag prefixed with
`coreunstable-`. For example:
```sh
git tag -a coreunstable-1.9.0-beta.1 -m "1.9.0-beta.1 of all core unstable components"
git push origin coreunstable-1.9.0-beta.1
```
Pushing the tag will kick off the [Build, pack, and publish to
MyGet](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/publish-packages-1.0.yml)
workflow.
</details>
6. :stop_sign: Wait for the [Build, pack, and publish to
MyGet](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/publish-packages-1.0.yml)
workflow to complete. When complete a trigger will automatically add a
comment on the PR opened by [Prepare for a
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/prepare-release.yml)
workflow in step 2. Use MyGet or download the packages using the provided
link to validate locally everything works. After validation has been
performed have a maintainer post a comment with "/PushPackages" in the body.
This will trigger the [Complete
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/prepare-release.yml)
workflow to push the packages to NuGet and publish the draft release created
by the [Build, pack, and publish to
MyGet](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/publish-packages-1.0.yml)
workflow. Comments will automatically be added on the PR opened by [Prepare
for a
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/prepare-release.yml)
workflow in step 2 as the process is run and the PR will be unlocked.
<details>
<summary>Instructions for pushing packages to NuGet manually</summary>
1. The [Build, pack, and publish to
MyGet](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/publish-packages-1.0.yml)
workflow pushes the packages to MyGet and attaches them as artifacts on
the workflow run.
2. Validate locally everything works using the packages pushed to MyGet or
downloaded from the drop attached to the workflow run. Basic sanity
checks :)
3. Download the artifacts from the drop attached to the workflow run. The
artifacts archive (`.zip`) contains all the NuGet packages (`.nupkg`) and
symbols (`.snupkg`) from the build which were pushed to MyGet.
4. Extract the artifacts from the archive (`.zip`) into a local folder.
5. Download latest [nuget.exe](https://www.nuget.org/downloads) into the
same folder from step 4.
6. Create or regenerate an API key from nuget.org (only maintainers have
access). When creating API keys make sure it is set to expire in 1 day or
less.
7. Run the following commands from PowerShell from local folder used in step
4:
```powershell
.\nuget.exe setApiKey <actual api key>
get-childitem -Recurse | where {$_.extension -eq ".nupkg"} | foreach ($_) {.\nuget.exe push $_.fullname -Source https://api.nuget.org/v3/index.json}
```
8. Validate that the package(s) are uploaded. Packages are available
immediately to maintainers on nuget.org but aren't publicly visible until
scanning completes. This process usually takes a few minutes.
9. Open the
[Releases](https://github.com/open-telemetry/opentelemetry-dotnet/releases)
page on the GitHub repository. The [Build, pack, and publish to
MyGet](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/publish-packages-1.0.yml)
workflow creates a draft release for the tag which was pushed. Edit the
draft Release and click `Publish release`.
</details>
7. If a new stable version of the core packages was released, a PR should have
been automatically created by the [Complete
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/post-release.yml)
workflow to update the `OTelLatestStableVer` property in
`Directory.Packages.props` to the just released stable version. Merge that
PR once the build passes (this requires the packages be available on NuGet).
8. The [Complete
release](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/post-release.yml)
workflow should have invoked the [Core version
update](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/actions/workflows/core-version-update.yml)
workflow on the
[opentelemetry-dotnet-contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/)
repository which opens a PR to update dependencies. Verify this PR was
opened successfully.
9. For stable releases post an announcement in the [Slack
channel](https://cloud-native.slack.com/archives/C01N3BC2W7Q) announcing the
release and link to the release notes.

View File

@ -0,0 +1,27 @@
<Project>
<PropertyGroup>
<RepoRoot>$([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory)).Parent.FullName)</RepoRoot>
</PropertyGroup>
<ItemGroup>
<SolutionProjects Include="$(RepoRoot)\**\OpenTelemetry.Exporter.Prometheus.AspNetCore*.csproj" />
<SolutionProjects Include="$(RepoRoot)\**\OpenTelemetry.Exporter.Prometheus.HttpListener*.csproj" />
<SolutionProjects Include="$(RepoRoot)\**\OpenTelemetry.Shims.OpenTracing*.csproj" />
<TestProjects Include="$(RepoRoot)\test\**\OpenTelemetry.Exporter.Prometheus.AspNetCore.Tests.csproj" />
<TestProjects Include="$(RepoRoot)\test\**\OpenTelemetry.Exporter.Prometheus.HttpListener.Tests.csproj" />
<TestProjects Include="$(RepoRoot)\test\**\OpenTelemetry.Shims.OpenTracing.Tests.csproj" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(SolutionProjects)" Targets="Build" ContinueOnError="ErrorAndStop" />
</Target>
<Target Name="Restore">
<MSBuild Projects="@(SolutionProjects)" Targets="Restore" ContinueOnError="ErrorAndStop" />
</Target>
<Target Name="VSTest">
<MSBuild Projects="@(TestProjects)" Targets="VSTest" ContinueOnError="ErrorAndStop" />
</Target>
</Project>

View File

@ -1,9 +0,0 @@
version: '3.7'
services:
tests:
build:
args:
PUBLISH_FRAMEWORK: net6.0
TEST_SDK_VERSION: "6.0"
BUILD_SDK_VERSION: "7.0"

View File

@ -1,9 +0,0 @@
version: '3.7'
services:
tests:
build:
args:
PUBLISH_FRAMEWORK: net7.0
TEST_SDK_VERSION: "7.0"
BUILD_SDK_VERSION: "7.0"

View File

@ -0,0 +1,7 @@
services:
tests:
build:
args:
PUBLISH_FRAMEWORK: net8.0
TEST_SDK_VERSION: "8.0"
BUILD_SDK_VERSION: "9.0"

View File

@ -0,0 +1,7 @@
services:
tests:
build:
args:
PUBLISH_FRAMEWORK: net9.0
TEST_SDK_VERSION: "9.0"
BUILD_SDK_VERSION: "9.0"

View File

@ -1,31 +0,0 @@
# After every stable release, all PublicApi text files (Shipped & Unshipped) should be merged.
$path = "src\*\.publicApi\**\";
$directory = Split-Path -Path $PSScriptRoot -Parent;
$searchPath = Join-Path -Path $directory -ChildPath $path;
Write-Host "Search Directory: $searchPath";
Write-Host "";
Get-ChildItem -Path $searchPath -Recurse -Filter *.Shipped.txt |
ForEach-Object {
Write-Host $_.FullName;
[string]$shipped = $_.FullName;
[string]$unshipped = $shipped -replace ".shipped.txt", ".Unshipped.txt";
if (Test-Path $unshipped) {
Write-Host $unshipped;
Get-Content $shipped, $unshipped | # get contents of both text files
Where-Object {$_ -ne ""} | # filter empty lines
Sort-Object | # sort lines
Get-Unique | # filter duplicates
Set-Content $shipped; # write to shipped.txt
Clear-Content $unshipped; # empty unshipped.txt
Write-Host "...MERGED and SORTED";
}
Write-Host "";
}

View File

@ -1,16 +0,0 @@
$rootDirectory = Split-Path $PSScriptRoot -Parent
[xml]$commonProps = Get-Content -Path $rootDirectory\Directory.Packages.props
$packages = $commonProps.Project.ItemGroup.PackageVersion
$microsoftCodeCoveragePkgVer = [string]($packages | Where-Object {$_.Include -eq "Microsoft.CodeCoverage"}).Version # This is collected in the format: "[17.4.1]"
$microsoftCodeCoveragePkgVer = $microsoftCodeCoveragePkgVer.Trim();
$microsoftCodeCoveragePkgVer = $microsoftCodeCoveragePkgVer.SubString(1, $microsoftCodeCoveragePkgVer.Length - 2) # Removing square brackets
$files = Get-ChildItem "TestResults" -Filter "*.coverage" -Recurse
Write-Host $env:USERPROFILE
foreach ($file in $files)
{
$command = $env:USERPROFILE+ '\.nuget\packages\microsoft.codecoverage\' + $microsoftCodeCoveragePkgVer + '\build\netstandard2.0\CodeCoverage\CodeCoverage.exe analyze /output:' + $file.DirectoryName + '\' + $file.Name + '.xml '+ $file.FullName
Write-Host $command
Invoke-Expression $command
}

View File

@ -0,0 +1,148 @@
function AddLabelsOnIssuesForPackageFoundInBody {
param(
[Parameter(Mandatory=$true)][int]$issueNumber,
[Parameter(Mandatory=$true)][string]$issueBody
)
$match = [regex]::Match($issueBody, '^[#]+ Package\s*(OpenTelemetry(?:\.\w+)*)')
if ($match.Success -eq $false)
{
Return
}
gh issue edit $issueNumber --add-label $("pkg:" + $match.Groups[1].Value)
}
Export-ModuleMember -Function AddLabelsOnIssuesForPackageFoundInBody
function AddLabelsOnPullRequestsBasedOnFilesChanged {
param(
[Parameter(Mandatory=$true)][int]$pullRequestNumber,
[Parameter(Mandatory=$true)][string]$labelPackagePrefix # 'pkg:' on main repo, 'comp:' on contrib repo
)
# Note: This function is intended to work on main repo and on contrib. Please
# keep them in sync.
$repoLabels = gh label list --json name,id -L 200 | ConvertFrom-Json
$filesChangedOnPullRequest = gh pr diff $pullRequestNumber --name-only
$labelsOnPullRequest = (gh pr view $pullRequestNumber --json labels | ConvertFrom-Json).labels
$visitedProjects = New-Object System.Collections.Generic.HashSet[string]
$labelsToAdd = New-Object System.Collections.Generic.HashSet[string]
$labelsToRemove = New-Object System.Collections.Generic.HashSet[string]
# Note: perf label may be added but it is kind of a guess so we don't remove
# it automatically in order to also allow manual inclusion after reviewing files
$managedLabels = 'infra', 'documentation', 'dependencies'
$rootInfraFiles = 'global.json', 'NuGet.config', 'codeowners'
$documentationFiles = 'readme.md', 'contributing.md', 'releasing.md', 'versioning.md', 'releasenotes.md'
foreach ($fileChanged in $filesChangedOnPullRequest)
{
$fileChanged = $fileChanged.ToLower()
$fullFileName = [System.IO.Path]::GetFileName($fileChanged)
$fileName = [System.IO.Path]::GetFileNameWithoutExtension($fileChanged)
$fileExtension = [System.IO.Path]::GetExtension($fileChanged)
if ($fileChanged.StartsWith('src/') -or $fileChanged.StartsWith('test/'))
{
$match = [regex]::Match($fileChanged, '^(?:(?:src)|(?:test))\/(.*?)\/.+$')
if ($match.Success -eq $false)
{
continue
}
$rawProjectName = $match.Groups[1].Value
if ($rawProjectName.Contains(".benchmarks") -or $rawProjectName.Contains(".stress"))
{
$added = $labelsToAdd.Add("perf")
}
$projectName = $rawProjectName.Replace(".tests", "").Replace(".benchmarks", "").Replace(".stress", "")
if ($visitedProjects.Contains($projectName))
{
continue
}
$added = $visitedProjects.Add($projectName);
foreach ($repoLabel in $repoLabels)
{
if ($repoLabel.name.StartsWith($labelPackagePrefix))
{
$package = $repoLabel.name.Substring($labelPackagePrefix.Length).ToLower()
if ($package.StartsWith('opentelemetry') -eq $false)
{
# Note: On contrib labels don't have "OpenTelemetry." prefix
$package = 'opentelemetry.' + $package
}
if ($package -eq $projectName)
{
$added = $labelsToAdd.Add($repoLabel.name)
break
}
}
}
}
if ($documentationFiles.Contains($fullFileName) -or
$fileChanged.StartsWith('docs/') -or
$fileChanged.StartsWith('examples/'))
{
$added = $labelsToAdd.Add("documentation")
}
if ($fileChanged.StartsWith('build/') -or
$fileChanged.StartsWith('.github/') -or
$rootInfraFiles.Contains($fullFileName) -or
$fileExtension -eq ".props" -or
$fileExtension -eq ".targets" -or
$fileChanged.StartsWith('test/openTelemetry.aotcompatibility'))
{
$added = $labelsToAdd.Add("infra")
}
if ($fileChanged.StartsWith('test/benchmarks'))
{
$added = $labelsToAdd.Add("perf")
}
if ($fullFileName -eq 'directory.packages.props')
{
$added = $labelsToAdd.Add("dependencies")
}
}
foreach ($labelOnPullRequest in $labelsOnPullRequest)
{
if ($labelsToAdd.Contains($labelOnPullRequest.name))
{
$removed = $labelsToAdd.Remove($labelOnPullRequest.name)
}
elseif ($labelOnPullRequest.name.StartsWith($labelPackagePrefix) -or
$managedLabels.Contains($labelOnPullRequest.name))
{
$added = $labelsToRemove.Add($labelOnPullRequest.name)
}
}
if ($labelsToAdd.Count -gt 0)
{
foreach ($label in $labelsToAdd)
{
gh pr edit $pullRequestNumber --add-label $label
}
}
if ($labelsToRemove.Count -gt 0)
{
foreach ($label in $labelsToRemove)
{
gh pr edit $pullRequestNumber --remove-label $label
}
}
}
Export-ModuleMember -Function AddLabelsOnPullRequestsBasedOnFilesChanged

View File

@ -0,0 +1,39 @@
param(
[Parameter(Mandatory=$true)][string]$minVerTagPrefix
)
# For stable releases "Unshipped" PublicApi text files are merged into "Shipped" versions.
$projectDirs = Get-ChildItem -Path src/**/*.csproj | Select-String "<MinVerTagPrefix>$minVerTagPrefix</MinVerTagPrefix>" -List | Select Path | Split-Path -Parent
$path = "\.publicApi\**\PublicAPI.Shipped.txt";
foreach ($projectDir in $projectDirs) {
$searchPath = Join-Path -Path $projectDir -ChildPath $path;
Write-Host "Search glob: $searchPath";
Get-ChildItem -Path $searchPath -Recurse |
ForEach-Object {
Write-Host "Shipped: $_";
[string]$shipped = $_.FullName;
[string]$unshipped = $shipped -replace ".shipped.txt", ".Unshipped.txt";
if (Test-Path $unshipped) {
Write-Host "Unshipped: $unshipped";
Get-Content $shipped, $unshipped | # get contents of both text files
Where-Object {$_ -ne ""} | # filter empty lines
Sort-Object | # sort lines
Get-Unique | # filter duplicates
Set-Content $shipped; # write to shipped.txt
Clear-Content $unshipped; # empty unshipped.txt
Write-Host "...MERGED and SORTED";
}
Write-Host "";
}
}

View File

@ -0,0 +1,598 @@
function CreateDraftRelease {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$tag,
[Parameter()][string]$releaseFiles
)
$match = [regex]::Match($tag, '^(.*?-)(.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse prefix or version from tag'
}
$tagPrefix = $match.Groups[1].Value
$version = $match.Groups[2].Value
$isPrerelease = $version -match '-alpha' -or $version -match '-beta' -or $version -match '-rc'
$projects = @(Get-ChildItem -Path src/**/*.csproj | Select-String "<MinVerTagPrefix>$tagPrefix</MinVerTagPrefix>" -List | Select Path)
if ($projects.Length -eq 0)
{
throw 'No projects found with MinVerTagPrefix matching prefix from tag'
}
$notes = ''
$previousVersion = ''
foreach ($project in $projects)
{
$projectName = [System.IO.Path]::GetFileNameWithoutExtension($project.Path)
$changelogContent = Get-Content -Path "src/$projectName/CHANGELOG.md"
$started = $false
$content = ""
foreach ($line in $changelogContent)
{
if ($line -like "## $version" -and $started -ne $true)
{
$started = $true
}
elseif ($line -like "Released *" -and $started -eq $true)
{
continue
}
elseif ($line -like "## *" -and $started -eq $true)
{
$match = [regex]::Match($line, '^##\s*(.*)$')
if ($match.Success -eq $true)
{
$previousVersion = $match.Groups[1].Value
}
break
}
else
{
if ($started -eq $true -and ([string]::IsNullOrWhitespace($line) -eq $false -or $content.Length -gt 0))
{
$content += " " + $line + "`r`n"
}
}
}
if ([string]::IsNullOrWhitespace($content) -eq $true)
{
$content = " No notable changes."
}
$content = $content.trimend()
$notes +=
@"
* NuGet: [$projectName v$version](https://www.nuget.org/packages/$projectName/$version)
$content
See [CHANGELOG](https://github.com/$gitRepository/blob/$tag/src/$projectName/CHANGELOG.md) for details.
"@
}
if ($isPrerelease -eq $true)
{
$notes =
@"
The following changes are from the previous release [$previousVersion](https://github.com/$gitRepository/releases/tag/$tagPrefix$previousVersion).
"@ + $notes
gh release create $tag $releaseFiles `
--title $tag `
--verify-tag `
--notes $notes `
--prerelease `
--draft
}
else
{
$notes =
@"
For highlights and announcements pertaining to this release see: [Release Notes > $version](https://github.com/$gitRepository/blob/main/RELEASENOTES.md#$($version.Replace('.',''))).
The following changes are from the previous release [$previousVersion](https://github.com/$gitRepository/releases/tag/$tagPrefix$previousVersion).
"@ + $notes
gh release create $tag $releaseFiles `
--title $tag `
--verify-tag `
--notes $notes `
--latest `
--draft
}
}
Export-ModuleMember -Function CreateDraftRelease
function TryPostPackagesReadyNoticeOnPrepareReleasePullRequest {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$tag,
[Parameter(Mandatory=$true)][string]$tagSha,
[Parameter(Mandatory=$true)][string]$packagesUrl,
[Parameter(Mandatory=$true)][string]$botUserName
)
$prListResponse = gh pr list --search $tagSha --state merged --json number,author,title,comments | ConvertFrom-Json
if ($prListResponse.Length -eq 0)
{
Write-Host 'No prepare release PR found for tag & commit skipping post notice'
return
}
foreach ($pr in $prListResponse)
{
if ($pr.author.login -ne $botUserName -or $pr.title -ne "[release] Prepare release $tag")
{
continue
}
$foundComment = $false
foreach ($comment in $pr.comments)
{
if ($comment.author.login -eq $botUserName -and $comment.body.StartsWith("I just pushed the [$tag]"))
{
$foundComment = $true
break
}
}
if ($foundComment -eq $false)
{
continue
}
$body =
@"
The packages for [$tag](https://github.com/$gitRepository/releases/tag/$tag) are now available: $packagesUrl.
Once these packages have been validated have a maintainer post a comment with "/PushPackages" in the body if you would like me to push to NuGet.
"@
$pullRequestNumber = $pr.number
gh pr comment $pullRequestNumber --body $body
return
}
Write-Host 'No prepare release PR found matched author and title with a valid comment'
}
Export-ModuleMember -Function TryPostPackagesReadyNoticeOnPrepareReleasePullRequest
function PushPackagesPublishReleaseUnlockAndPostNoticeOnPrepareReleasePullRequest {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$pullRequestNumber,
[Parameter(Mandatory=$true)][string]$botUserName,
[Parameter(Mandatory=$true)][string]$commentUserName,
[Parameter(Mandatory=$true)][string]$artifactDownloadPath,
[Parameter(Mandatory=$true)][string]$pushToNuget
)
$prViewResponse = gh pr view $pullRequestNumber --json author,title,comments | ConvertFrom-Json
if ($prViewResponse.author.login -ne $botUserName)
{
throw 'PR author was unexpected'
}
$match = [regex]::Match($prViewResponse.title, '^\[release\] Prepare release (.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse tag from PR title'
}
$tag = $match.Groups[1].Value
$commentUserPermission = gh api "repos/$gitRepository/collaborators/$commentUserName/permission" | ConvertFrom-Json
if ($commentUserPermission.permission -ne 'admin')
{
gh pr comment $pullRequestNumber `
--body "I'm sorry @$commentUserName but you don't have permission to push packages. Only maintainers can push to NuGet."
return
}
$foundComment = $false
$packagesUrl = ''
foreach ($comment in $prViewResponse.comments)
{
if ($comment.author.login -eq $botUserName -and $comment.body.StartsWith("The packages for [$tag](https://github.com/$gitRepository/releases/tag/$tag) are now available:"))
{
$foundComment = $true
break
}
}
if ($foundComment -eq $false)
{
throw 'Could not find package push comment on pr'
}
gh release download $tag `
-p "$tag-packages.zip" `
-D "$artifactDownloadPath"
Expand-Archive -LiteralPath "$artifactDownloadPath/$tag-packages.zip" -DestinationPath "$artifactDownloadPath\"
if ($pushToNuget -eq 'true')
{
gh pr comment $pullRequestNumber `
--body "I am uploading the packages for ``$tag`` to NuGet and then I will publish the release."
nuget push "$artifactDownloadPath/**/*.nupkg" -Source https://api.nuget.org/v3/index.json -ApiKey "$env:NUGET_TOKEN" -SymbolApiKey "$env:NUGET_TOKEN"
if ($LASTEXITCODE -gt 0)
{
gh pr comment $pullRequestNumber `
--body "Something went wrong uploading the packages for ``$tag`` to NuGet."
throw 'nuget push failure'
}
}
else {
gh pr comment $pullRequestNumber `
--body "I am publishing the release without uploading the packages to NuGet because a token wasn't configured."
}
gh release edit $tag --draft=false
gh pr unlock $pullRequestNumber
}
Export-ModuleMember -Function PushPackagesPublishReleaseUnlockAndPostNoticeOnPrepareReleasePullRequest
function CreateStableVersionUpdatePullRequest {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$tag,
[Parameter()][string]$targetBranch="main",
[Parameter()][string]$lineEnding="`n",
[Parameter()][string]$gitUserName,
[Parameter()][string]$gitUserEmail
)
$match = [regex]::Match($tag, '.*?-(.*)')
if ($match.Success -eq $false)
{
throw 'Could not parse version from tag'
}
$version = $match.Groups[1].Value
$branch="release/post-stable-${tag}-update"
if ([string]::IsNullOrEmpty($gitUserName) -eq $false)
{
git config user.name $gitUserName
}
if ([string]::IsNullOrEmpty($gitUserEmail) -eq $false)
{
git config user.email $gitUserEmail
}
git switch --create $branch origin/$targetBranch --no-track 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git switch failure'
}
$projectsAndDependenciesBefore = GetCoreDependenciesForProjects
(Get-Content Directory.Packages.props) `
-replace '<OTelLatestStableVer>.*<\/OTelLatestStableVer>', "<OTelLatestStableVer>$version</OTelLatestStableVer>" |
Set-Content Directory.Packages.props
$projectsAndDependenciesAfter = GetCoreDependenciesForProjects
$changedProjects = @{}
$projectsAndDependenciesBefore.GetEnumerator() | ForEach-Object {
$projectDir = $_.Key
$projectDependenciesBefore = $_.Value
$projectDependenciesAfter = $projectsAndDependenciesAfter[$projectDir]
$projectDependenciesBefore.GetEnumerator() | ForEach-Object {
$packageName = $_.Key
$packageVersionBefore = $_.Value
if ($projectDependenciesAfter[$packageName] -ne $packageVersionBefore)
{
$changedProjects[$projectDir] = $true
}
}
}
git add Directory.Packages.props 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git add failure'
}
git commit -m "Update OTelLatestStableVer in Directory.Packages.props to $version." 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git commit failure'
}
git push -u origin $branch 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git push failure'
}
$body =
@"
Note: This PR was opened automatically by the [post-release workflow](https://github.com/$gitRepository/actions/workflows/post-release.yml).
Merge once packages are available on NuGet and the build passes.
## Changes
* Sets ``OTelLatestStableVer`` in ``Directory.Packages.props`` to ``$version``.
"@
$createPullRequestResponse = gh pr create `
--title "[release] Core stable release $version updates" `
--body $body `
--base $targetBranch `
--head $branch `
--label release
Write-Host $createPullRequestResponse
$match = [regex]::Match($createPullRequestResponse, "\/pull\/(.*)$")
if ($match.Success -eq $false)
{
throw 'Could not parse pull request number from gh pr create response'
}
$pullRequestNumber = $match.Groups[1].Value
if ($changedProjects.Count -eq 0)
{
Return
}
$entry = @"
* Updated OpenTelemetry core component version(s) to ``$version``.
([#$pullRequestNumber](https://github.com/$gitRepository/pull/$pullRequestNumber))
"@
$lastLineBlank = $true
$changelogFilesUpdated = 0
foreach ($projectDir in $changedProjects.Keys)
{
$path = Join-Path -Path $projectDir -ChildPath "CHANGELOG.md"
if ([System.IO.File]::Exists($path) -eq $false)
{
Write-Host "No CHANGELOG found in $projectDir"
continue
}
$changelogContent = Get-Content -Path $path
$started = $false
$isRemoving = $false
$content = ""
foreach ($line in $changelogContent)
{
if ($line -like "## Unreleased" -and $started -ne $true)
{
$started = $true
}
elseif ($line -like "## *" -and $started -eq $true)
{
if ($lastLineBlank -eq $false)
{
$content += $lineEnding
}
$content += $entry
$started = $false
$isRemoving = $false
}
elseif ($started -eq $true -and ($line -like '*Update* OpenTelemetry SDK version to*' -or $line -like '*Updated OpenTelemetry core component version(s) to*'))
{
$isRemoving = $true
continue
}
if ($line.StartsWith('* '))
{
if ($isRemoving -eq $true)
{
$isRemoving = $false
}
if ($lastLineBlank -eq $false)
{
$content += $lineEnding
}
}
if ($isRemoving -eq $true)
{
continue
}
$content += $line + $lineEnding
$lastLineBlank = [string]::IsNullOrWhitespace($line)
}
if ($started -eq $true)
{
# Note: If we never wrote the entry it means the file ended in the unreleased section
if ($lastLineBlank -eq $false)
{
$content += $lineEnding
}
$content += $entry
}
Set-Content -Path $path -Value $content.TrimEnd()
git add $path 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git add failure'
}
$changelogFilesUpdated++
}
if ($changelogFilesUpdated -gt 0)
{
git commit -m "Update CHANGELOGs for projects using OTelLatestStableVer." 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git commit failure'
}
git push -u origin $branch 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git push failure'
}
}
}
Export-ModuleMember -Function CreateStableVersionUpdatePullRequest
function GetCoreDependenciesForProjects {
$projects = @(Get-ChildItem -Path 'src/*/*.csproj')
$projectsAndDependencies = @{}
foreach ($project in $projects)
{
# Note: dotnet restore may fail if the core packages aren't available yet but that is fine, we just want to generate project.assets.json for these projects.
$output = dotnet restore $project -p:RunningDotNetPack=true
$projectDir = $project | Split-Path -Parent
$content = (Get-Content "$projectDir/obj/project.assets.json" -Raw)
$projectDependencies = @{}
$matches = [regex]::Matches($content, '"(OpenTelemetry(?:.*))?": {[\S\s]*?"target": "Package",[\S\s]*?"version": "(.*)"[\S\s]*?}')
foreach ($match in $matches)
{
$packageName = $match.Groups[1].Value
$packageVersion = $match.Groups[2].Value
if ($packageName -eq 'OpenTelemetry' -or
$packageName -eq 'OpenTelemetry.Api' -or
$packageName -eq 'OpenTelemetry.Api.ProviderBuilderExtensions' -or
$packageName -eq 'OpenTelemetry.Extensions.Hosting' -or
$packageName -eq 'OpenTelemetry.Extensions.Propagators')
{
$projectDependencies[$packageName.ToString()] = $packageVersion.ToString()
}
}
$projectsAndDependencies[$projectDir.ToString()] = $projectDependencies
}
return $projectsAndDependencies
}
function InvokeCoreVersionUpdateWorkflowInRemoteRepository {
param(
[Parameter(Mandatory=$true)][string]$remoteGitRepository,
[Parameter(Mandatory=$true)][string]$tag,
[Parameter()][string]$targetBranch="main"
)
$match = [regex]::Match($tag, '^(.*?-)(.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse prefix or version from tag'
}
gh workflow run "core-version-update.yml" `
--repo $remoteGitRepository `
--ref $targetBranch `
--field "tag=$tag"
}
Export-ModuleMember -Function InvokeCoreVersionUpdateWorkflowInRemoteRepository
function TryPostReleasePublishedNoticeOnPrepareReleasePullRequest {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$botUserName,
[Parameter(Mandatory=$true)][string]$tag
)
$tagSha = git rev-list -n 1 $tag 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git rev-list failure'
}
$prListResponse = gh pr list --search $tagSha --state merged --json number,author,title,comments | ConvertFrom-Json
if ($prListResponse.Length -eq 0)
{
Write-Host 'No prepare release PR found for tag & commit skipping post notice'
return
}
foreach ($pr in $prListResponse)
{
if ($pr.author.login -ne $botUserName -or $pr.title -ne "[release] Prepare release $tag")
{
continue
}
$foundComment = $false
foreach ($comment in $pr.comments)
{
if ($comment.author.login -eq $botUserName -and $comment.body.StartsWith("The packages for [$tag](https://github.com/$gitRepository/releases/tag/$tag) are now available:"))
{
$foundComment = $true
break
}
}
if ($foundComment -eq $false)
{
continue
}
$body =
@"
The release [$tag](https://github.com/$gitRepository/releases/tag/$tag) has been published and packages should be available on NuGet momentarily.
Have a nice day!
"@
$pullRequestNumber = $pr.number
gh pr comment $pullRequestNumber --body $body
return
}
Write-Host 'No prepare release PR found matched author and title with a valid comment'
}
Export-ModuleMember -Function TryPostReleasePublishedNoticeOnPrepareReleasePullRequest

View File

@ -0,0 +1,463 @@
function CreatePullRequestToUpdateChangelogsAndPublicApis {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$minVerTagPrefix,
[Parameter(Mandatory=$true)][string]$version,
[Parameter(Mandatory=$true)][string]$requestedByUserName,
[Parameter()][string]$targetBranch="main",
[Parameter()][string]$gitUserName,
[Parameter()][string]$gitUserEmail
)
$match = [regex]::Match($version, '^(\d+\.\d+\.\d+)(?:-((?:alpha)|(?:beta)|(?:rc))\.(\d+))?$')
if ($match.Success -eq $false)
{
throw 'Input version did not match expected format'
}
$isPrerelease = $version -match '-alpha' -or $version -match '-beta' -or $version -match '-rc'
$tag="${minVerTagPrefix}${version}"
$branch="release/prepare-${tag}-release"
if ([string]::IsNullOrEmpty($gitUserName) -eq $false)
{
git config user.name $gitUserName
}
if ([string]::IsNullOrEmpty($gitUserEmail) -eq $false)
{
git config user.email $gitUserEmail
}
git switch --create $branch 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git switch failure'
}
$body =
@"
Note: This PR was opened automatically by the [prepare release workflow](https://github.com/$gitRepository/actions/workflows/prepare-release.yml).
Requested by: @$requestedByUserName
## Changes
* CHANGELOG files updated for projects being released.
"@
# Update CHANGELOGs
& ./build/scripts/update-changelogs.ps1 -minVerTagPrefix $minVerTagPrefix -version $version
# Update publicApi files for stable releases
if ($isPrerelease -ne $true)
{
& ./build/scripts/finalize-publicapi.ps1 -minVerTagPrefix $minVerTagPrefix
$body += "`r`n* Public API files updated for projects being released (only performed for stable releases)."
}
$body +=
@"
## Commands
``/UpdateReleaseDates``: Use to update release dates in CHANGELOGs before merging [``approvers``, ``maintainers``]
"@
if ($minVerTagPrefix -eq 'core-' -and $isPrerelease -ne $true)
{
$body +=
@"
``/UpdateReleaseNotes``: Use to update ``RELEASENOTES.md`` before merging [``approvers``, ``maintainers``]
"@
}
$body +=
@"
``/CreateReleaseTag``: Use after merging to push the release tag and trigger the job to create packages [``approvers``, ``maintainers``]
``/PushPackages``: Use after the created packages have been validated to push to NuGet [``maintainers``]
"@
git commit -a -m "Prepare repo to release $tag." 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git commit failure'
}
git push -u origin $branch 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git push failure'
}
$createPullRequestResponse = gh pr create `
--title "[release] Prepare release $tag" `
--body $body `
--base $targetBranch `
--head $branch `
--label release
Write-Host $createPullRequestResponse
$match = [regex]::Match($createPullRequestResponse, "\/pull\/(.*)$")
if ($match.Success -eq $false)
{
throw 'Could not parse pull request number from gh pr create response'
}
$pullRequestNumber = $match.Groups[1].Value
if ($minVerTagPrefix -eq 'core-' -and $isPrerelease -ne $true)
{
$found = Select-String -Path "RELEASENOTES.md" -Pattern "## $version" -Quiet
if ($found -eq $false)
{
$body =
@"
I noticed this PR is releasing a stable version of core packages but there isn't any content in ``RELEASENOTES.md`` for the version being released.
It is important to update ``RELEASENOTES.md`` before creating the release tag because a permalink will become part of the package(s).
Post a comment with "/UpdateReleaseNotes" in the body if you would like me to update release notes.
Note: In the comment everything below "/UpdateReleaseNotes" will be added to ``RELEASENOTES.md`` for the version being released. If something is already there it will be replaced.
"@
gh pr comment $pullRequestNumber --body $body
}
}
}
Export-ModuleMember -Function CreatePullRequestToUpdateChangelogsAndPublicApis
function LockPullRequestAndPostNoticeToCreateReleaseTag {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$pullRequestNumber,
[Parameter(Mandatory=$true)][string]$botUserName
)
$prViewResponse = gh pr view $pullRequestNumber --json mergeCommit,author,title | ConvertFrom-Json
if ($prViewResponse.author.login -ne $botUserName)
{
throw 'PR author was unexpected'
}
$match = [regex]::Match($prViewResponse.title, '^\[release\] Prepare release (.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse tag from PR title'
}
$tag = $match.Groups[1].Value
$commit = $prViewResponse.mergeCommit.oid
if ([string]::IsNullOrEmpty($commit) -eq $true)
{
throw 'Could not find merge commit'
}
$body =
@"
I noticed this PR was merged.
Post a comment with "/CreateReleaseTag" in the body if you would like me to create the release tag ``$tag`` for [the merge commit](https://github.com/$gitRepository/commit/$commit) which will trigger the package workflow.
"@
gh pr comment $pullRequestNumber --body $body
gh pr lock $pullRequestNumber
}
Export-ModuleMember -Function LockPullRequestAndPostNoticeToCreateReleaseTag
function CreateReleaseTagAndPostNoticeOnPullRequest {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$pullRequestNumber,
[Parameter(Mandatory=$true)][string]$botUserName,
[Parameter()][string]$gitUserName,
[Parameter()][string]$gitUserEmail
)
$prViewResponse = gh pr view $pullRequestNumber --json mergeCommit,author,title | ConvertFrom-Json
if ($prViewResponse.author.login -ne $botUserName)
{
throw 'PR author was unexpected'
}
$match = [regex]::Match($prViewResponse.title, '^\[release\] Prepare release (.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse tag from PR title'
}
$tag = $match.Groups[1].Value
$commit = $prViewResponse.mergeCommit.oid
if ([string]::IsNullOrEmpty($commit) -eq $true)
{
throw 'Could not find merge commit'
}
if ([string]::IsNullOrEmpty($gitUserName) -eq $false)
{
git config user.name $gitUserName
}
if ([string]::IsNullOrEmpty($gitUserEmail) -eq $false)
{
git config user.email $gitUserEmail
}
git tag -a $tag -m "$tag" $commit 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git tag failure'
}
git push origin $tag 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git push failure'
}
$body =
@"
I just pushed the [$tag](https://github.com/$gitRepository/releases/tag/$tag) tag.
The [package workflow](https://github.com/$gitRepository/actions/workflows/publish-packages-1.0.yml) should begin momentarily.
"@
gh pr comment $pullRequestNumber --body $body
}
Export-ModuleMember -Function CreateReleaseTagAndPostNoticeOnPullRequest
function UpdateChangelogReleaseDatesAndPostNoticeOnPullRequest {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$pullRequestNumber,
[Parameter(Mandatory=$true)][string]$botUserName,
[Parameter(Mandatory=$true)][string]$commentUserName,
[Parameter()][string]$gitUserName,
[Parameter()][string]$gitUserEmail
)
$prViewResponse = gh pr view $pullRequestNumber --json headRefName,author,title | ConvertFrom-Json
if ($prViewResponse.author.login -ne $botUserName)
{
throw 'PR author was unexpected'
}
$match = [regex]::Match($prViewResponse.title, '^\[release\] Prepare release (.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse tag from PR title'
}
$tag = $match.Groups[1].Value
$match = [regex]::Match($tag, '^(.*?-)(.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse prefix or version from tag'
}
$tagPrefix = $match.Groups[1].Value
$version = $match.Groups[2].Value
$commentUserPermission = gh api "repos/$gitRepository/collaborators/$commentUserName/permission" | ConvertFrom-Json
if ($commentUserPermission.permission -ne 'admin' -and $commentUserPermission.permission -ne 'write')
{
gh pr comment $pullRequestNumber `
--body "I'm sorry @$commentUserName but you don't have permission to update this PR. Only maintainers and approvers can update this PR."
return
}
if ([string]::IsNullOrEmpty($gitUserName) -eq $false)
{
git config user.name $gitUserName
}
if ([string]::IsNullOrEmpty($gitUserEmail) -eq $false)
{
git config user.email $gitUserEmail
}
git switch $prViewResponse.headRefName 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git switch failure'
}
$updatedFiles = 0
$newHeader =
@"
## $version
Released $(Get-Date -UFormat '%Y-%b-%d')
"@
$projectDirs = Get-ChildItem -Path src/**/*.csproj | Select-String "<MinVerTagPrefix>$tagPrefix</MinVerTagPrefix>" -List | Select Path | Split-Path -Parent
foreach ($projectDir in $projectDirs)
{
$content = (Get-Content "$projectDir/CHANGELOG.md" -Raw)
$newContent = $content -replace "## $version\s*Released .*", $newHeader
if ($content -ne $newContent)
{
$updatedFiles++
Set-Content -Path "$projectDir/CHANGELOG.md" $newContent.Trim()
}
}
if ($updatedFiles -eq 0)
{
gh pr comment $pullRequestNumber --body "All of the CHANGELOG files have valid release dates."
return
}
git commit -a -m "Update CHANGELOG release dates for $tag." 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git commit failure'
}
git push -u origin $prViewResponse.headRefName 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git push failure'
}
gh pr comment $pullRequestNumber --body "I updated the CHANGELOG release dates."
}
Export-ModuleMember -Function UpdateChangelogReleaseDatesAndPostNoticeOnPullRequest
function UpdateReleaseNotesAndPostNoticeOnPullRequest {
param(
[Parameter(Mandatory=$true)][string]$gitRepository,
[Parameter(Mandatory=$true)][string]$pullRequestNumber,
[Parameter(Mandatory=$true)][string]$botUserName,
[Parameter(Mandatory=$true)][string]$commentUserName,
[Parameter(Mandatory=$true)][string]$commentBody,
[Parameter()][string]$gitUserName,
[Parameter()][string]$gitUserEmail
)
$prViewResponse = gh pr view $pullRequestNumber --json headRefName,author,title | ConvertFrom-Json
if ($prViewResponse.author.login -ne $botUserName)
{
throw 'PR author was unexpected'
}
$match = [regex]::Match($prViewResponse.title, '^\[release\] Prepare release (.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse tag from PR title'
}
$tag = $match.Groups[1].Value
$match = [regex]::Match($tag, '^(.*?-)(.*)$')
if ($match.Success -eq $false)
{
throw 'Could not parse prefix or version from tag'
}
$tagPrefix = $match.Groups[1].Value
$version = $match.Groups[2].Value
$isPrerelease = $version -match '-alpha' -or $version -match '-beta' -or $version -match '-rc'
$commentUserPermission = gh api "repos/$gitRepository/collaborators/$commentUserName/permission" | ConvertFrom-Json
if ($commentUserPermission.permission -ne 'admin' -and $commentUserPermission.permission -ne 'write')
{
gh pr comment $pullRequestNumber `
--body "I'm sorry @$commentUserName but you don't have permission to update this PR. Only maintainers and approvers can update this PR."
return
}
if ($tagPrefix -ne 'core-' -or $isPrerelease -eq $true)
{
gh pr comment $pullRequestNumber `
--body "I'm sorry @$commentUserName but we don't typically add release notes for prereleases or unstable packages."
return
}
if ([string]::IsNullOrEmpty($gitUserName) -eq $false)
{
git config user.name $gitUserName
}
if ([string]::IsNullOrEmpty($gitUserEmail) -eq $false)
{
git config user.email $gitUserEmail
}
git switch $prViewResponse.headRefName 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git switch failure'
}
$releaseNotesContent = (Get-Content -Path "RELEASENOTES.md" -Raw)
$match = [regex]::Match($commentBody, '[\w\W\s]*\/UpdateReleaseNotes.*$([\w\W\s]*)', [Text.RegularExpressions.RegexOptions]::Multiline)
if ($match.Success -eq $false)
{
throw 'Could not find release notes content'
}
$content = $match.Groups[1].Value.Trim() -replace "`r`n", "`n"
$body =
@"
## $version
Release details: [$version](https://github.com/$gitRepository/releases/tag/$tagPrefix$version)
$content
##
"@
$match = [regex]::Match($releaseNotesContent, "(## $version[\w\W\s]*?)##", [Text.RegularExpressions.RegexOptions]::Multiline)
if ($match.Success -eq $true)
{
$content = [regex]::Replace($releaseNotesContent, "(## $version[\w\W\s]*?)##", $body, [Text.RegularExpressions.RegexOptions]::Multiline)
Set-Content -Path "RELEASENOTES.md" -Value $content.TrimEnd()
}
else {
$match = [regex]::Match($releaseNotesContent, '(# Release Notes[\w\W\s]*?)##', [Text.RegularExpressions.RegexOptions]::Multiline)
if ($match.Success -eq $false)
{
throw 'Could not find release notes header'
}
$body = $match.Groups[1].Value + $body
$content = [regex]::Replace($releaseNotesContent, '(# Release Notes[\w\W\s]*?)##', $body, [Text.RegularExpressions.RegexOptions]::Multiline)
Set-Content -Path "RELEASENOTES.md" -Value $content.TrimEnd()
}
git commit -a -m "Update RELEASENOTES for $tag." 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git commit failure'
}
git push -u origin $prViewResponse.headRefName 2>&1 | % ToString
if ($LASTEXITCODE -gt 0)
{
throw 'git push failure'
}
gh pr comment $pullRequestNumber --body "I updated ``RELEASENOTES.md``."
}
Export-ModuleMember -Function UpdateReleaseNotesAndPostNoticeOnPullRequest

View File

@ -0,0 +1,49 @@
param([string]$targetNetFramework)
$rootDirectory = Get-Location
$publishOutput = dotnet publish $rootDirectory/test/OpenTelemetry.AotCompatibility.TestApp/OpenTelemetry.AotCompatibility.TestApp.csproj --framework $targetNetFramework -nodeReuse:false /p:UseSharedCompilation=false /p:ExposeExperimentalFeatures=true
$actualWarningCount = 0
foreach ($line in $($publishOutput -split "`r`n"))
{
if (($line -like "*analysis warning IL*") -or ($line -like "*analysis error IL*"))
{
Write-Host $line
$actualWarningCount += 1
}
}
Write-Host "Actual warning count is:", $actualWarningCount
$expectedWarningCount = 0
if ($LastExitCode -ne 0)
{
Write-Host "There was an error while publishing AotCompatibility Test App. LastExitCode is:", $LastExitCode
Write-Host $publishOutput
}
$app = $IsWindows ? "./OpenTelemetry.AotCompatibility.TestApp.exe" : "./OpenTelemetry.AotCompatibility.TestApp"
Push-Location $rootDirectory/artifacts/publish/OpenTelemetry.AotCompatibility.TestApp/release_$targetNetFramework
Write-Host "Executing test App..."
$app
Write-Host "Finished executing test App"
if ($LastExitCode -ne 0)
{
Write-Host "There was an error while executing AotCompatibility Test App. LastExitCode is:", $LastExitCode
}
Pop-Location
$testPassed = 0
if ($actualWarningCount -ne $expectedWarningCount)
{
$testPassed = 1
Write-Host "Actual warning count:", $actualWarningCount, "is not as expected. Expected warning count is:", $expectedWarningCount
}
Exit $testPassed

View File

@ -0,0 +1,51 @@
param(
[Parameter()][string]$coyoteVersion="1.7.11",
[Parameter(Mandatory=$true)][string]$testProjectName,
[Parameter(Mandatory=$true)][string]$targetFramework,
[Parameter()][string]$categoryName="CoyoteConcurrencyTests",
[Parameter()][string]$configuration="Release"
)
$ErrorActionPreference = "Stop"
$env:OTEL_RUN_COYOTE_TESTS = 'true'
$rootDirectory = Get-Location
Write-Host "Install Coyote CLI."
dotnet tool install --global Microsoft.Coyote.CLI --version $coyoteVersion
if ($LASTEXITCODE -ne 0) {
throw "Microsoft.Coyote.CLI installation failed with exit code $LASTEXITCODE"
}
Write-Host "Build $testProjectName project."
dotnet build "$rootDirectory/test/$testProjectName/$testProjectName.csproj" --configuration $configuration
if ($LASTEXITCODE -ne 0) {
throw "dotnet build failed with exit code $LASTEXITCODE"
}
$artifactsPath = Join-Path $rootDirectory "artifacts/bin/$testProjectName/$($configuration.ToLowerInvariant())_$targetFramework"
Write-Host "Generate Coyote rewriting options JSON file."
$assemblies = Get-ChildItem $artifactsPath -Filter OpenTelemetry*.dll | ForEach-Object {$_.Name}
$RewriteOptionsJson = @{}
[void]$RewriteOptionsJson.Add("AssembliesPath", $artifactsPath)
[void]$RewriteOptionsJson.Add("Assemblies", $assemblies)
$RewriteOptionsJson | ConvertTo-Json -Compress | Set-Content -Path "$rootDirectory/test/$testProjectName/rewrite.coyote.json"
Write-Host "Run Coyote rewrite."
coyote rewrite "$rootDirectory/test/$testProjectName/rewrite.coyote.json"
if ($LASTEXITCODE -ne 0) {
throw "coyote rewrite failed with exit code $LASTEXITCODE"
}
Write-Host "Execute re-written binary."
dotnet test "$artifactsPath/$testProjectName.dll" --framework $targetFramework --filter CategoryName=$categoryName
if ($LASTEXITCODE -ne 0) {
throw "dotnet test failed with exit code $LASTEXITCODE"
}

View File

@ -0,0 +1,20 @@
param(
[Parameter(Mandatory=$true)][string]$minVerTagPrefix,
[Parameter(Mandatory=$true)][string]$version
)
$projectDirs = Get-ChildItem -Path src/**/*.csproj | Select-String "<MinVerTagPrefix>$minVerTagPrefix</MinVerTagPrefix>" -List | Select Path | Split-Path -Parent
$content = "Unreleased
## $version
Released $(Get-Date -UFormat '%Y-%b-%d')"
foreach ($projectDir in $projectDirs) {
$path = Join-Path -Path $projectDir -ChildPath "CHANGELOG.md"
Write-Host "Updating $path"
(Get-Content -Path $path) -replace "Unreleased", $content | Set-Content -Path $path
}

View File

@ -2,8 +2,8 @@
"$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
"settings": {
"documentationRules": {
"companyName": "OpenTelemetry Authors",
"copyrightText": "Copyright The OpenTelemetry Authors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License."
"copyrightText": "Copyright The OpenTelemetry Authors\nSPDX-License-Identifier: Apache-2.0",
"xmlHeader": false
},
"orderingRules": {
"usingDirectivesPlacement": "outsideNamespace"

View File

@ -1,41 +0,0 @@
param([string]$targetNetFramework)
$rootDirectory = Split-Path $PSScriptRoot -Parent
$publishOutput = dotnet publish $rootDirectory/test/OpenTelemetry.AotCompatibility.TestApp/OpenTelemetry.AotCompatibility.TestApp.csproj -nodeReuse:false /p:UseSharedCompilation=false /p:ExposeExperimentalFeatures=true
$actualWarningCount = 0
foreach ($line in $($publishOutput -split "`r`n"))
{
if ($line -like "*analysis warning IL*")
{
Write-Host $line
$actualWarningCount += 1
}
}
pushd $rootDirectory/test/OpenTelemetry.AotCompatibility.TestApp/bin/Debug/$targetNetFramework/linux-x64
Write-Host "Executing test App..."
./OpenTelemetry.AotCompatibility.TestApp
Write-Host "Finished executing test App"
if ($LastExitCode -ne 0)
{
Write-Host "There was an error while executing AotCompatibility Test App. LastExitCode is:", $LastExitCode
}
popd
Write-Host "Actual warning count is:", $actualWarningCount
$expectedWarningCount = 16
$testPassed = 0
if ($actualWarningCount -ne $expectedWarningCount)
{
$testPassed = 1
Write-Host "Actual warning count:", actualWarningCount, "is not as expected. Expected warning count is:", $expectedWarningCount
}
Exit $testPassed

View File

@ -1,12 +1,11 @@
<Project>
<Import Project="$([System.IO.Path]::Combine($(MSBuildThisFileDirectory), '..', 'Directory.Build.props'))" />
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\Common.nonprod.props" />
<PropertyGroup>
<OutputType>Exe</OutputType>
<!-- https://dotnet.microsoft.com/download/dotnet-core -->
<!-- OmniSharp/VS Code requires TargetFrameworks to be in descending order for IntelliSense and analysis. -->
<TargetFrameworks>net7.0;net6.0</TargetFrameworks>
<!-- https://dotnet.microsoft.com/download/dotnet-framework -->
<TargetFrameworks Condition="$(OS) == 'Windows_NT'">$(TargetFrameworks);net462;net47;net471;net472;net48</TargetFrameworks>
<TargetFrameworks>$(TargetFrameworksForDocs)</TargetFrameworks>
<!-- Opt-out of Artifacts Output for docs as there are duplicated project names -->
<UseArtifactsOutput>false</UseArtifactsOutput>
</PropertyGroup>
</Project>

View File

@ -1,6 +1,3 @@
<Project>
<Import Project="$([MSBuild]::GetPathOfFileAbove(Directory.Packages.props, $(MSBuildThisFileDirectory)..))" />
<ItemGroup>
<PackageVersion Update="Microsoft.Extensions.Logging" Version="[6.0.0,)" />
</ItemGroup>
</Project>

134
docs/README.md Normal file
View File

@ -0,0 +1,134 @@
# OpenTelemetry .NET SDK
## Initialize the SDK
There are two different common initialization styles supported by OpenTelemetry.
### Initialize the SDK using a host
Users building applications based on
[Microsoft.Extensions.Hosting](https://www.nuget.org/packages/Microsoft.Extensions.Hosting)
should utilize the
[OpenTelemetry.Extensions.Hosting](../src/OpenTelemetry.Extensions.Hosting/README.md)
package to initialize OpenTelemetry. This style provides a deep integration
between the host infrastructure (`IServiceCollection`, `IServiceProvider`,
`IConfiguration`, etc.) and OpenTelemetry.
[AspNetCore](https://learn.microsoft.com/aspnet/core/fundamentals/host/web-host)
applications are the most common to use the hosting model but there is also a
[Generic Host](https://learn.microsoft.com/dotnet/core/extensions/generic-host)
which may be used in console, service, and worker applications.
> [!NOTE]
> When using `OpenTelemetry.Extensions.Hosting` only a single pipeline will be
> created for each configured signal (logging, metrics, and/or tracing). Users
> who need more granular control can create additional pipelines using the
> manual style below.
First install the
[OpenTelemetry.Extensions.Hosting](../src/OpenTelemetry.Extensions.Hosting/README.md)
package.
Second call the `AddOpenTelemetry` extension using the host
`IServiceCollection`:
```csharp
var builder = WebApplication.CreateBuilder(args);
// Clear the default logging providers added by the host
builder.Logging.ClearProviders();
// Initialize OpenTelemetry
builder.Services.AddOpenTelemetry()
.ConfigureResource(resource => /* Resource configuration goes here */)
.WithLogging(logging => /* Logging configuration goes here */)
.WithMetrics(metrics => /* Metrics configuration goes here */)
.WithTracing(tracing => /* Tracing configuration goes here */));
```
> [!NOTE]
> Calling `WithLogging` automatically registers the OpenTelemetry
> `ILoggerProvider` and enables `ILogger` integration.
### Initialize the SDK manually
Users running on .NET Framework or running without a host may initialize
OpenTelemetry manually.
> [!IMPORTANT]
> When initializing OpenTelemetry manually make sure to ALWAYS dispose the SDK
> and/or providers when the application is shutting down. Disposing
> OpenTelemetry gives the SDK a chance to flush any telemetry held in memory.
> Skipping this step may result in data loss.
First install the [OpenTelemetry SDK](../src/OpenTelemetry/README.md) package or
an exporter package such as
[OpenTelemetry.Exporter.OpenTelemetryProtocol](../src/OpenTelemetry.Exporter.OpenTelemetryProtocol/README.md).
Exporter packages typically reference the SDK and will make it available via
transitive reference.
Second use one of the following initialization APIs (depending on the SDK
version being used):
#### Using 1.10.0 or newer
The `OpenTelemetrySdk.Create` API can be used to initialize all signals off a
single root builder and supports cross-cutting extensions such as
`ConfigureResource` which configures a `Resource` to be used by all enabled
signals. An `OpenTelemetrySdk` instance is returned which may be used to access
providers for each signal. Calling `Dispose` on the returned instance will
gracefully shutdown the SDK and flush any telemetry held in memory.
> [!NOTE]
> When calling `OpenTelemetrySdk.Create` a dedicated `IServiceCollection` and
> `IServiceProvider` will be created for the SDK and shared by all signals. An
> `IConfiguration` is created automatically from environment variables.
```csharp
using OpenTelemetry;
var sdk = OpenTelemetrySdk.Create(builder => builder
.ConfigureResource(resource => /* Resource configuration goes here */)
.WithLogging(logging => /* Logging configuration goes here */)
.WithMetrics(metrics => /* Metrics configuration goes here */)
.WithTracing(tracing => /* Tracing configuration goes here */));
// During application shutdown
sdk.Dispose();
```
To obtain an `ILogger` instance for emitting logs when using the
`OpenTelemetrySdk.Create` API call the `GetLoggerFactory` extension method using
the returned `OpenTelemetrySdk` instance:
```csharp
var logger = sdk.GetLoggerFactory().CreateLogger<Program>();
logger.LogInformation("Application started");
```
#### Using 1.9.0 or older
The following shows how to create providers for each individual signal. Each
provider is independent and must be managed and disposed explicitly. There is no
mechanism using this style to perform cross-cutting actions across signals.
```csharp
using Microsoft.Extensions.Logging;
using OpenTelemetry;
var tracerProvider = Sdk.CreateTracerProviderBuilder()
/* Tracing configuration goes here */
.Build();
var meterProvider = Sdk.CreateMeterProviderBuilder()
/* Metrics configuration goes here */
.Build();
var loggerFactory = LoggerFactory.Create(builder => builder
.AddOpenTelemetry(options => /* Logging configuration goes here */));
// During application shutdown
tracerProvider.Dispose();
meterProvider.Dispose();
loggerFactory.Dispose();
```

View File

@ -0,0 +1,24 @@
# OpenTelemetry Diagnostics
This document describes the diagnostic categories used in OpenTelemetry .NET
components. Diagnostics are used by the compiler to report information to users
about experimental and/or obsolete code being invoked or to suggest improvements
to specific code patterns identified through static analysis.
## Experimental APIs
Range: OTEL1000 - OTEL1999
Experimental APIs exposed in OpenTelemetry .NET pre-relase builds. APIs are
exposed experimentally when either the OpenTelemetry Specification has
explicitly marked some feature as
[experimental](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/document-status.md)
or when the SIG members are still working through the design for a feature and
want to solicit feedback from the community.
> [!NOTE]
> Experimental APIs are exposed as `public` in pre-release builds and `internal`
in stable builds.
For defined diagnostics see: [OpenTelemetry .NET Experimental
APIs](./experimental-apis/README.md)

View File

@ -0,0 +1,48 @@
# OpenTelemetry .NET Diagnostic: OTEL1000
## Overview
This is an Experimental API diagnostic covering the following APIs:
* `ILoggingBuilder.UseOpenTelemetry`
Experimental APIs may be changed or removed in the future.
The following portions of `OTEL1000` were released stable in `1.9.0` and are no
longer considered experimental:
* `LoggerProviderBuilder`
* `LoggerProvider`
* `IDeferredLoggerProviderBuilder`
* `OpenTelemetryBuilder.WithLogging`
## Details
The OpenTelemetry Specification defines a `LoggerProvider` as part of its
[API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/bridge-api.md)
&
[SDK](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/sdk.md)
components.
The SDK allows calling `Shutdown` and `ForceFlush` on the `LoggerProvider` and
also allows processors to be added dynamically to a pipeline after its creation.
Today the OpenTelemetry .NET log pipeline is built on top of the
Microsoft.Extensions.Logging `ILogger` \ `ILoggerProvider` \ `ILoggerFactory`
APIs which do not expose such features.
We also have an issue with the `ILoggingBuilder.AddOpenTelemetry` API in that it
interacts with the `OpenTelemetryLoggerOptions` class. Options classes are NOT
available until the `IServiceProvider` is available and services can no longer
be registered at that point. This prevents the current logging pipeline from
exposing the same dependency injection surface we have for traces and metrics.
We are exposing these APIs to solve these issues and gather feedback about their
usefulness.
## Logs Bridge API
The OpenTelemetry Specification defines a Logs Bridge API which is rooted off of
the `LoggerProvider` (`GetLogger`) and exposes a `Logger` API to submit log
records. See [OTEL1001](./OTEL1001.md) for details about the Logs Bridge API
implementation status.

View File

@ -0,0 +1,36 @@
# OpenTelemetry .NET Diagnostic: OTEL1001
## Overview
This is an Experimental API diagnostic covering the following APIs:
* `LoggerProvider.GetLogger`
* `Logger`
* `LogRecordAttributeList`
* `LogRecordData`
* `LogRecordSeverity`
* `Sdk.CreateLoggerProviderBuilder`
Experimental APIs may be changed or removed in the future.
## Details
The OpenTelemetry Specification defines a [Logs Bridge
API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/bridge-api.md).
The Logs Bridge API is used by library authors to build log appenders which
route messages from different log frameworks into OpenTelemetry.
Today the OpenTelemetry .NET log pipeline is built on top of the
Microsoft.Extensions.Logging `ILogger` \ `ILoggerProvider` \ `ILoggerFactory`
APIs.
We are exposing these APIs gather feedback about their usefulness. An
alternative approach may be taken which would be to append into `ILogger`
instead of OpenTelemetry directly.
## LoggerProvider API
The OpenTelemetry Specification defines a `LoggerProvider` API. See
[OTEL1000](./OTEL1000.md) for details about the `LoggerProvider` implementation
status.

View File

@ -0,0 +1,62 @@
# OpenTelemetry .NET Diagnostic: OTEL1004
## Overview
This is an Experimental API diagnostic covering the following APIs:
* `ExemplarReservoir`
* `FixedSizeExemplarReservoir`
* `ExemplarMeasurement<T>`
* `MetricStreamConfiguration.ExemplarReservoirFactory.get`
* `MetricStreamConfiguration.ExemplarReservoirFactory.set`
Experimental APIs may be changed or removed in the future.
## Details
The OpenTelemetry Specification defines an [ExemplarReservoir
API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#exemplarreservoir)
and a mechanism for configuring `ExemplarReservoir` via the [View
API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#stream-configuration)
in the Metrics SDK.
From the specification:
> The SDK MUST provide a mechanism for SDK users to provide their own
> ExemplarReservoir implementation. This extension MUST be configurable on a
> metric View, although individual reservoirs MUST still be instantiated per
> metric-timeseries...
We are exposing these APIs experimentally for the following reasons:
* `FixedSizeExemplarReservoir` is not part of the spec. It is meant to help
custom reservoir authors and takes care of correctly creating & updating
`struct Exemplar`s (managing tag filtering when views are used), handles
`Exemplar` collection, and ensures all operations are safe to be called
concurrency (spec requirement). We want to see if this is helpful and meets
the needs of users.
* There is currently no way to use
`MetricStreamConfiguration.ExemplarReservoirFactory` to switch a metric to a
different built-in reservoir (`AlignedHistogramBucketExemplarReservoir` or
`SimpleFixedSizeExemplarReservoir`). This is something supported by the spec
but we want to understand the use cases and needs before exposing these types.
Also it seems the default reservoirs may change.
* There is currently no way to get access to the bucket index inside a reservoir
when a measurement is recorded against a histogram with explicit bounds. The
spec says the reservoir should calculate this given the
definition/configuration of the bounds but the SDK has already done this
computation. It seems unncessarily complicated to expose the configuration and
wasteful to do the work twice. We want to understand the types of algorithms
which users will want to implement before exposing something.
**TL;DR** We want to gather feedback on the usability of the API and for the
need(s) in general for custom reservoirs before exposing a stable API.
## Provide feedback
Please provide feedback on [this
issue](https://github.com/open-telemetry/opentelemetry-dotnet/issues/5629) if
you need stable support for custom `ExemplarReservoir`s. The feedback will help
inform decisions about what to expose stable and when.

View File

@ -0,0 +1,62 @@
# OpenTelemetry .NET Experimental APIs
This document describes experimental APIs exposed in OpenTelemetry .NET
pre-relase builds. APIs are exposed experimentally when either the OpenTelemetry
Specification has explicitly marked some feature as
[experimental](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/document-status.md)
or when the SIG members are still working through the design for a feature and
want to solicit feedback from the community.
> [!NOTE]
> Experimental APIs are exposed as `public` in pre-release builds and `internal`
in stable builds.
## Active
Experimental APIs available in the pre-release builds:
### OTEL1000
Description: `LoggerProvider` and `LoggerProviderBuilder`
Details: [OTEL1000](./OTEL1000.md)
### OTEL1001
Description: Logs Bridge API
Details: [OTEL1001](./OTEL1001.md)
### OTEL1004
Description: ExemplarReservoir Support
Details: [OTEL1004](./OTEL1004.md)
## Inactive
Experimental APIs which have been released stable or removed:
<!-- When an experimental API is released or removed:
1) Move the section from above down here.
2) Delete the individual file from the repo and switch the link here to a
permalink to the last version.
3) Add the version info for when the API was released stable or removed. If
removed add details for alternative solution or reasoning.
-->
### OTEL1002
Description: Metrics Exemplar Support
Details: [OTEL1002](https://github.com/open-telemetry/opentelemetry-dotnet/blob/b8ea807bae1a5d9b0f3d6d23b1e1e10f5e096a25/docs/diagnostics/experimental-apis/OTEL1002.md)
Released stable: `1.9.0`
### OTEL1003
Description: MetricStreamConfiguration CardinalityLimit Support
Details: [OTEL1003](https://github.com/open-telemetry/opentelemetry-dotnet/blob/9f41eadf03f3dcc5e76c686b61fb39849f046312/docs/diagnostics/experimental-apis/OTEL1003.md)
Released stable: `1.10.0`

View File

@ -29,7 +29,10 @@
{
"files": [
".editorconfig",
"**.cs"
"**.cs",
"Directory.Packages.props",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT"
]
}
],

383
docs/logs/README.md Normal file
View File

@ -0,0 +1,383 @@
# OpenTelemetry .NET Logs
<details>
<summary>Table of Contents</summary>
* [Best Practices](#best-practices)
* [Package Version](#package-version)
* [Logging API](#logging-api)
* [ILogger](#ilogger)
* [LoggerFactory](#loggerfactory)
* [Log Correlation](#log-correlation)
* [Log Enrichment](#log-enrichment)
* [Log Filtering](#log-filtering)
* [Log Redaction](#log-redaction)
</details>
## Best Practices
The following tutorials have demonstrated the best practices for logging with
OpenTelemetry .NET:
* [Getting Started - ASP.NET Core
Application](./getting-started-aspnetcore/README.md)
* [Getting Started - Console Application](./getting-started-console/README.md)
* [Logging with Complex Objects](./complex-objects/README.md)
## Logging API
### ILogger
.NET supports high performance, structured logging via the
[`Microsoft.Extensions.Logging.ILogger`](https://docs.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger)
interface (including
[`ILogger<TCategoryName>`](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger-1))
to help monitor application behavior and diagnose issues.
#### Package Version
:heavy_check_mark: You should always use the
[`ILogger`](https://docs.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger)
interface (including
[`ILogger<TCategoryName>`](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger-1))
from the latest stable version of
[Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging/)
package, regardless of the .NET runtime version being used:
* If you are using the latest stable version of [OpenTelemetry .NET
SDK](../../src/OpenTelemetry/README.md), you do not have to worry about the
version of `Microsoft.Extensions.Logging` package because it is already taken
care of for you via [package dependency](../../Directory.Packages.props).
* Starting from version `3.1.0`, the .NET runtime team is holding a high bar for
backward compatibility on `Microsoft.Extensions.Logging` even during major
version bumps, so compatibility is not a concern here.
#### Get Logger
In order to use the `ILogger` interface, you need to first get a logger. How to
get a logger depends on two things:
* The type of application you are building.
* The place where you want to log.
Here is the rule of thumb:
* If you are building an application with [dependency injection
(DI)](https://learn.microsoft.com/dotnet/core/extensions/dependency-injection)
(e.g. [ASP.NET Core](https://learn.microsoft.com/aspnet/core) and [.NET
Worker](https://learn.microsoft.com/dotnet/core/extensions/workers)), in most
cases you should use the logger provided by DI, there are special cases when
you want log before DI logging pipeline is available or after DI logging
pipeline is disposed. Refer to the [.NET official
document](https://learn.microsoft.com/dotnet/core/extensions/logging#integration-with-hosts-and-dependency-injection)
and [Getting Started with OpenTelemetry .NET Logs in 5 Minutes - ASP.NET Core
Application](./getting-started-aspnetcore/README.md) tutorial to learn more.
* If you are building an application without DI, create a
[LoggerFactory](#loggerfactory) instance and configure OpenTelemetry to work
with it. Refer to the [Getting Started with OpenTelemetry .NET Logs in 5
Minutes - Console Application](./getting-started-console/README.md) tutorial
to learn more.
:heavy_check_mark: You should use dot-separated
[UpperCamelCase](https://en.wikipedia.org/wiki/Camel_case) as the log category
name, which makes it convenient to [filter logs](#log-filtering). A common
practice is to use fully qualified class name, and if further categorization is
desired, append a subcategory name. Refer to the [.NET official
document](https://learn.microsoft.com/dotnet/core/extensions/logging#log-category)
to learn more.
```csharp
loggerFactory.CreateLogger<MyClass>(); // this is equivalent to CreateLogger("MyProduct.MyLibrary.MyClass")
loggerFactory.CreateLogger("MyProduct.MyLibrary.MyClass"); // use the fully qualified class name
loggerFactory.CreateLogger("MyProduct.MyLibrary.MyClass.DatabaseOperations"); // append a subcategory name
loggerFactory.CreateLogger("MyProduct.MyLibrary.MyClass.FileOperations"); // append another subcategory name
```
:stop_sign: You should avoid creating loggers too frequently. Although loggers
are not super expensive, they still come with CPU and memory cost, and are meant
to be reused throughout the application. Refer to the [logging performance
benchmark](../../test/Benchmarks/Logs/LogBenchmarks.cs) for more details.
#### Write log messages
:heavy_check_mark: You should use structured logging.
* Structured logging is more efficient than unstructured logging.
* Filtering and redaction can happen on individual key-value pairs instead of
the entire log message.
* Storage and indexing are more efficient.
* Structured logging makes it easier to manage and consume logs.
```csharp
var food = "tomato";
var price = 2.99;
logger.LogInformation("Hello from {food} {price}.", food, price);
```
:stop_sign: You should avoid string interpolation.
> [!WARNING]
> The following code has bad performance due to [string
interpolation](https://learn.microsoft.com/dotnet/csharp/tutorials/string-interpolation):
```csharp
var food = "tomato";
var price = 2.99;
logger.LogInformation($"Hello from {food} {price}.");
```
Refer to the [logging performance
benchmark](../../test/Benchmarks/Logs/LogBenchmarks.cs) for more details.
:heavy_check_mark: You should use [compile-time logging source
generation](https://docs.microsoft.com/dotnet/core/extensions/logger-message-generator)
pattern to achieve the best performance.
```csharp
var food = "tomato";
var price = 2.99;
logger.SayHello(food, price);
internal static partial class LoggerExtensions
{
[LoggerMessage(Level = LogLevel.Information, Message = "Hello from {food} {price}.")]
public static partial void SayHello(this ILogger logger, string food, double price);
}
```
> [!NOTE]
> There is no need to pass in an explicit
[EventId](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.eventid)
while using
[LoggerMessageAttribute](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.loggermessageattribute).
A durable `EventId` will be automatically assigned based on the hash of the
method name during code generation.
:heavy_check_mark: You can use
[LogPropertiesAttribute](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.logpropertiesattribute)
from
[Microsoft.Extensions.Telemetry.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Telemetry.Abstractions/)
if you need to log complex objects. Check out the [Logging with Complex
Objects](./complex-objects/README.md) tutorial for more details.
:stop_sign: You should avoid the extension methods from
[LoggerExtensions](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.loggerextensions),
these methods are not optimized for performance.
> [!WARNING]
> The following code has bad performance due to
[boxing](https://learn.microsoft.com/dotnet/csharp/programming-guide/types/boxing-and-unboxing):
```csharp
var food = "tomato";
var price = 2.99;
logger.LogInformation("Hello from {food} {price}.", food, price);
```
Refer to the [logging performance
benchmark](../../test/Benchmarks/Logs/LogBenchmarks.cs) for more details.
:heavy_check_mark: You should hold a high bar while using
[`ILogger.IsEnabled`](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger.isenabled).
The logging API is highly optimized for the scenario where most loggers are
**disabled** for certain log levels. Making an extra call to `IsEnabled` before
logging will not give you any performance gain.
> [!WARNING]
> The `logger.IsEnabled(LogLevel.Information)` call in the following code is not
going to give any performance gain. Refer to the [logging performance
benchmark](../../test/Benchmarks/Logs/LogBenchmarks.cs) for more details.
```csharp
var food = "tomato";
var price = 2.99;
if (logger.IsEnabled(LogLevel.Information)) // do not do this, there is no perf gain
{
logger.SayHello(food, price);
}
internal static partial class LoggerExtensions
{
[LoggerMessage(Level = LogLevel.Information, Message = "Hello from {food} {price}.")]
public static partial void SayHello(this ILogger logger, string food, double price);
}
```
`IsEnabled` can give performance benefits when it is expensive to evaluate the
arguments. For example, in the following code the `Database.GetFoodPrice`
invocation will be skipped if the logger is not enabled:
```csharp
if (logger.IsEnabled(LogLevel.Information))
{
logger.SayHello(food, Database.GetFoodPrice(food));
}
```
Although `IsEnabled` can give some performance benefits in the above scenario,
for most users it can cause more problems. For example, the performance of the
code is now depending on which logger is being enabled, not to mention the
argument evaluation might have significant side effects that are now depending
on the logging configuration.
:heavy_check_mark: You should use a dedicated parameter to log exceptions when
using the compile-time source generator.
```csharp
var food = "tomato";
var price = 2.99;
try
{
// Execute some logic
logger.SayHello(food, price);
}
catch (Exception ex)
{
logger.SayHelloFailure(ex, food, price);
}
internal static partial class LoggerExtensions
{
[LoggerMessage(Level = LogLevel.Information, Message = "Hello from {food} {price}.")]
public static partial void SayHello(this ILogger logger, string food, double price);
[LoggerMessage(Level = LogLevel.Error, Message = "Could not say hello from {food} {price}.")]
public static partial void SayHelloFailure(this ILogger logger, Exception exception, string food, double price);
}
```
> [!NOTE]
> When using the compile-time source generator the first `Exception` parameter
> detected is automatically given special handling. It **SHOULD NOT** be part of
> the message template. For details see: [Log method
> anatomy](https://learn.microsoft.com/dotnet/core/extensions/logger-message-generator#log-method-anatomy).
:heavy_check_mark: You should use the dedicated overloads to log exceptions when
using the logging extensions methods.
```csharp
var food = "tomato";
var price = 2.99;
try
{
// Execute some logic
logger.LogInformation("Hello from {food} {price}.", food, price);
}
catch (Exception ex)
{
logger.LogError(ex, "Could not say hello from {food} {price}.", food, price);
}
```
:stop_sign: You should avoid adding exception details into the message template.
You want to use the correct `Exception` APIs because the OpenTelemetry
Specification [defines dedicated
attributes](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/exceptions/exceptions-logs.md)
for `Exception` details. The following examples show what **NOT** to do. In
these cases the details won't be lost, but the dedicated attributes also won't
be added.
```csharp
var food = "tomato";
var price = 2.99;
try
{
// Execute some logic
logger.SayHello(food, price);
}
catch (Exception ex)
{
logger.SayHelloFailure(food, price, ex.Message);
}
internal static partial class LoggerExtensions
{
[LoggerMessage(Level = LogLevel.Information, Message = "Hello from {food} {price}.")]
public static partial void SayHello(this ILogger logger, string food, double price);
// BAD - Exception should not be part of the message template. Use the dedicated parameter.
[LoggerMessage(Level = LogLevel.Error, Message = "Could not say hello from {food} {price} {message}.")]
public static partial void SayHelloFailure(this ILogger logger, string food, double price, string message);
}
```
```csharp
var food = "tomato";
var price = 2.99;
try
{
// Execute some logic
logger.LogInformation("Hello from {food} {price}.", food, price);
}
catch (Exception ex)
{
// BAD - Exception should not be part of the message template. Use the dedicated parameter.
logger.LogError("Could not say hello from {food} {price} {message}.", food, price, ex.Message);
}
```
## LoggerFactory
In many cases, you can use [ILogger](#ilogger) without having to interact with
[Microsoft.Extensions.Logging.LoggerFactory](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.loggerfactory)
directly. This section is intended for users who need to create and manage
`LoggerFactory` explicitly.
:stop_sign: You should avoid creating `LoggerFactory` instances too frequently,
`LoggerFactory` is fairly expensive and meant to be reused throughout the
application. For most applications, one `LoggerFactory` instance per process
would be sufficient.
:heavy_check_mark: You should properly manage the lifecycle of
[LoggerFactory](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.loggerfactory)
instances if they are created by you.
* If you forget to dispose the `LoggerFactory` instance before the application
ends, logs might get dropped due to the lack of proper flush.
* If you dispose the `LoggerFactory` instance too early, any subsequent logging
API invocation associated with the logger factory could become no-op (i.e. no
logs will be emitted).
## Log Correlation
In OpenTelemetry, logs are automatically correlated to
[traces](../trace/README.md). Check the [Log
Correlation](./correlation/README.md) tutorial to learn more.
## Log Enrichment
TBD
## Log Filtering
The [Customizing OpenTelemetry .NET SDK for
Logs](./customizing-the-sdk/README.md#log-filtering) document has provided
instructions for basic filtering based on logger category name and severity
level.
For more advanced filtering and sampling, the .NET team has a plan to cover it
in .NET 9 timeframe, please use this [runtime
issue](https://github.com/dotnet/runtime/issues/82465) to track the progress or
provide feedback and suggestions.
## Log Redaction
Logs might contain sensitive information such as passwords and credit card
numbers, proper redaction is required to prevent privacy and security incidents.
Check the [Log Redaction](./redaction/README.md) tutorial to learn more.

View File

@ -0,0 +1,17 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
namespace ComplexObjects;
internal struct FoodRecallNotice
{
public string? BrandName { get; set; }
public string? ProductDescription { get; set; }
public string? ProductType { get; set; }
public string? RecallReasonDescription { get; set; }
public string? CompanyName { get; set; }
}

View File

@ -0,0 +1,39 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
using ComplexObjects;
using Microsoft.Extensions.Logging;
using OpenTelemetry.Logs;
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(logging =>
{
logging.AddConsoleExporter();
});
});
var logger = loggerFactory.CreateLogger<Program>();
var foodRecallNotice = new FoodRecallNotice
{
BrandName = "Contoso",
ProductDescription = "Salads",
ProductType = "Food & Beverages",
RecallReasonDescription = "due to a possible health risk from Listeria monocytogenes",
CompanyName = "Contoso Fresh Vegetables, Inc.",
};
logger.FoodRecallNotice(foodRecallNotice);
// Dispose logger factory before the application ends.
// This will flush the remaining logs and shutdown the logging pipeline.
loggerFactory.Dispose();
internal static partial class LoggerExtensions
{
[LoggerMessage(LogLevel.Critical)]
public static partial void FoodRecallNotice(
this ILogger logger,
[LogProperties(OmitReferenceName = true)] in FoodRecallNotice foodRecallNotice);
}

View File

@ -0,0 +1,105 @@
# Logging with Complex Objects
In the [Getting Started with OpenTelemetry .NET Logs in 5 Minutes - Console
Application](../getting-started-console/README.md) tutorial, we've learned how
to log primitive data types. In this tutorial, we'll learn how to log complex
objects.
Complex objects logging was introduced in .NET 8.0 via
[LogPropertiesAttribute](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.logpropertiesattribute).
This attribute and the corresponding code generation logic are provided by an
extension package called
[Microsoft.Extensions.Telemetry.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Telemetry.Abstractions/).
> [!NOTE]
> Although `Microsoft.Extensions.Telemetry.Abstractions` was introduced in .NET
8.0, it supports previous versions of the target framework (e.g. .NET 6.0).
Refer to the [compatible target
frameworks](https://www.nuget.org/packages/Microsoft.Extensions.Telemetry.Abstractions/#supportedframeworks-body-tab)
for more information.
First, complete the [getting started](../getting-started-console/README.md)
tutorial, then install the
[Microsoft.Extensions.Telemetry.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Telemetry.Abstractions/)
package:
```sh
dotnet add package Microsoft.Extensions.Telemetry.Abstractions
```
Define a new complex data type, as shown in [FoodRecallNotice.cs](./FoodRecallNotice.cs):
```csharp
public struct FoodRecallNotice
{
public string? BrandName { get; set; }
public string? ProductDescription { get; set; }
public string? ProductType { get; set; }
public string? RecallReasonDescription { get; set; }
public string? CompanyName { get; set; }
}
```
Update the `Program.cs` file with the code from [Program.cs](./Program.cs). Note
that the following code is added which uses the `LogPropertiesAttribute` to log
the `FoodRecallNotice` object:
```csharp
internal static partial class LoggerExtensions
{
[LoggerMessage(LogLevel.Critical)]
public static partial void FoodRecallNotice(
this ILogger logger,
[LogProperties(OmitReferenceName = true)] in FoodRecallNotice foodRecallNotice);
}
```
The following code is used to create a `FoodRecallNotice` object and log it:
```csharp
var foodRecallNotice = new FoodRecallNotice
{
BrandName = "Contoso",
ProductDescription = "Salads",
ProductType = "Food & Beverages",
RecallReasonDescription = "due to a possible health risk from Listeria monocytogenes",
CompanyName = "Contoso Fresh Vegetables, Inc.",
};
logger.FoodRecallNotice(foodRecallNotice);
```
Run the application again (using `dotnet run`) and you should see the log output
on the console.
```text
LogRecord.Timestamp: 2024-01-12T19:01:16.0604084Z
LogRecord.CategoryName: Program
LogRecord.Severity: Fatal
LogRecord.SeverityText: Critical
LogRecord.FormattedMessage:
LogRecord.Body:
LogRecord.Attributes (Key:Value):
CompanyName: Contoso Fresh Vegetables, Inc.
RecallReasonDescription: due to a possible health risk from Listeria monocytogenes
ProductType: Food & Beverages
ProductDescription: Salads
BrandName: Contoso
LogRecord.EventId: 252550133
LogRecord.EventName: FoodRecallNotice
```
> [!NOTE]
> In this tutorial we've used
[LogPropertiesAttribute.OmitReferenceName](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.logpropertiesattribute.omitreferencename)
which changed the style of attribute names. There are more options available,
check out the [learn more](#learn-more) section for more information.
## Learn more
* [Microsoft.Extensions.Logging.LogPropertiesAttribute](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.logpropertiesattribute)
* [Microsoft.Extensions.Telemetry.Abstractions](https://github.com/dotnet/extensions/blob/main/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/README.md)
* [Strong-type support feature
request](https://github.com/dotnet/runtime/issues/61947)
* [LogPropertiesAttribute design
proposal](https://github.com/dotnet/runtime/issues/81730)

View File

@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Telemetry.Abstractions" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,10 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
using Microsoft.Extensions.Logging;
internal static partial class LoggerExtensions
{
[LoggerMessage(LogLevel.Information, "Food `{name}` price changed to `{price}`.")]
public static partial void FoodPriceChanged(this ILogger logger, string name, double price);
}

View File

@ -1,18 +1,5 @@
// <copyright file="Program.cs" company="OpenTelemetry Authors">
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// </copyright>
// SPDX-License-Identifier: Apache-2.0
using System.Diagnostics;
using Microsoft.Extensions.Logging;
@ -22,38 +9,39 @@ using OpenTelemetry.Trace;
namespace Correlation;
public class Program
internal sealed class Program
{
private static readonly ActivitySource MyActivitySource = new(
"MyCompany.MyProduct.MyLibrary");
private static readonly ActivitySource MyActivitySource = new("MyCompany.MyProduct.MyLibrary");
public static void Main()
{
// Setup Logging
using var loggerFactory = LoggerFactory.Create(builder =>
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddSource("MyCompany.MyProduct.MyLibrary")
.AddConsoleExporter()
.Build();
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
builder.AddOpenTelemetry(logging =>
{
options.AddConsoleExporter();
logging.AddConsoleExporter();
});
});
var logger = loggerFactory.CreateLogger<Program>();
// Setup Traces
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddSource("MyCompany.MyProduct.MyLibrary")
.AddConsoleExporter()
.Build();
// Emit activity
using (var activity = MyActivitySource.StartActivity("SayHello"))
{
activity?.SetTag("foo", 1);
// emit logs within the context
// of activity
logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99);
// Write a log within the context of an activity
logger.FoodPriceChanged("artichoke", 9.99);
}
// Dispose logger factory before the application ends.
// This will flush the remaining logs and shutdown the logging pipeline.
loggerFactory.Dispose();
// Dispose tracer provider before the application ends.
// This will flush the remaining spans and shutdown the tracing pipeline.
tracerProvider.Dispose();
}
}

View File

@ -1,4 +1,4 @@
# Logs correlation
# Log Correlation
The getting started docs for [logs](../getting-started-console/README.md) and
[traces](../../trace/getting-started-console/README.md) showed how to emit logs
@ -27,29 +27,32 @@ of an active `Activity`. Running the application will show the following output
on the console:
```text
LogRecord.Timestamp: 2022-05-18T18:51:16.4348626Z
LogRecord.TraceId: d7aca5b2422ed8d15f56b6a93be4537d
LogRecord.SpanId: c90ac2ad41ab4d46
LogRecord.Timestamp: 2024-01-26T17:55:39.2273475Z
LogRecord.TraceId: aed89c3b250fb9d8e16ccab1a4a9bbb5
LogRecord.SpanId: bd44308753200c58
LogRecord.TraceFlags: Recorded
LogRecord.CategoryName: Correlation.Program
LogRecord.LogLevel: Information
LogRecord.State: Hello from tomato 2.99.
LogRecord.CategoryName: Program
LogRecord.Severity: Info
LogRecord.SeverityText: Information
LogRecord.Body: Food `{name}` price changed to `{price}`.
LogRecord.Attributes (Key:Value):
name: artichoke
price: 9.99
OriginalFormat (a.k.a Body): Food `{name}` price changed to `{price}`.
LogRecord.EventId: 344095174
LogRecord.EventName: FoodPriceChanged
Resource associated with LogRecord:
service.name: unknown_service:correlation
...
Activity.TraceId: d7aca5b2422ed8d15f56b6a93be4537d
Activity.SpanId: c90ac2ad41ab4d46
Activity.TraceFlags: Recorded
Activity.TraceId: aed89c3b250fb9d8e16ccab1a4a9bbb5
Activity.SpanId: bd44308753200c58
Activity.TraceFlags: Recorded
Activity.ActivitySourceName: MyCompany.MyProduct.MyLibrary
Activity.DisplayName: SayHello
Activity.Kind: Internal
Activity.StartTime: 2022-05-18T18:51:16.3427411Z
Activity.Duration: 00:00:00.2248932
Activity.Tags:
foo: 1
Resource associated with Activity:
service.name: unknown_service:correlation
Activity.DisplayName: SayHello
Activity.Kind: Internal
Activity.StartTime: 2024-01-26T17:55:39.2223849Z
Activity.Duration: 00:00:00.0361682
...
```
As you can see, the `LogRecord` automatically had the `TraceId`, `SpanId` fields

View File

@ -1,6 +1,5 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
</ItemGroup>
</Project>

View File

@ -1,54 +1,56 @@
// <copyright file="Program.cs" company="OpenTelemetry Authors">
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// </copyright>
// SPDX-License-Identifier: Apache-2.0
using Microsoft.Extensions.Logging;
using OpenTelemetry.Logs;
using OpenTelemetry.Resources;
namespace CustomizingTheSdk;
public class Program
var loggerFactory = LoggerFactory.Create(builder =>
{
public static void Main()
builder.AddOpenTelemetry(logging =>
{
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.IncludeScopes = true;
options.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(
serviceName: "MyService",
serviceVersion: "1.0.0"));
options.AddConsoleExporter();
});
});
logging.IncludeScopes = true;
logging.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(
serviceName: "MyService",
serviceVersion: "1.0.0"));
logging.AddConsoleExporter();
});
});
var logger = loggerFactory.CreateLogger<Program>();
var logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99);
logger.LogWarning("Hello from {name} {price}.", "tomato", 2.99);
logger.LogError("Hello from {name} {price}.", "tomato", 2.99);
logger.FoodPriceChanged("artichoke", 9.99);
// log with scopes
using (logger.BeginScope(new List<KeyValuePair<string, object>>
{
new KeyValuePair<string, object>("store", "Seattle"),
}))
{
logger.LogInformation("Hello from {food} {price}.", "tomato", 2.99);
}
}
using (logger.BeginScope(new List<KeyValuePair<string, object>>
{
new KeyValuePair<string, object>("store", "Seattle"),
}))
{
logger.FoodPriceChanged("truffle", 999.99);
}
logger.FoodRecallNotice(
brandName: "Contoso",
productDescription: "Salads",
productType: "Food & Beverages",
recallReasonDescription: "due to a possible health risk from Listeria monocytogenes",
companyName: "Contoso Fresh Vegetables, Inc.");
// Dispose logger factory before the application ends.
// This will flush the remaining logs and shutdown the logging pipeline.
loggerFactory.Dispose();
internal static partial class LoggerExtensions
{
[LoggerMessage(LogLevel.Information, "Food `{name}` price changed to `{price}`.")]
public static partial void FoodPriceChanged(this ILogger logger, string name, double price);
[LoggerMessage(LogLevel.Critical, "A `{productType}` recall notice was published for `{brandName} {productDescription}` produced by `{companyName}` ({recallReasonDescription}).")]
public static partial void FoodRecallNotice(
this ILogger logger,
string brandName,
string productDescription,
string productType,
string recallReasonDescription,
string companyName);
}

View File

@ -14,9 +14,10 @@ TODO
### IncludeScopes
A "[scope](https://docs.microsoft.com/dotnet/core/extensions/logging#log-scopes)"
is an `ILogger` concept that can group a set of logical operations and attach
data to each log created as part of a set.
Log
[scope](https://docs.microsoft.com/dotnet/core/extensions/logging#log-scopes) is
an `ILogger` concept that can group a set of logical operations and attach data
to each log created as part of a set.
`IncludeScopes` is off by default. Setting this to `true` will include all
scopes with the exported `LogRecord`. Consult the individual `Exporter`
@ -24,6 +25,14 @@ docs to learn more about how scopes will be processed.
See [Program.cs](Program.cs) for an example.
> [!NOTE]
> When using [`ILogger.BeginScope<TState>(TState
state)`](https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger.beginscope),
it is highly recommended to use `IReadOnlyList<KeyValue<string, object?>>` or
`List<KeyValuePair<string, object?>>` as the `TState` for the best performance.
When performance is not a critical requirement,
`IEnumerable<KeyValuePair<string, object?>>` can be used.
### IncludeFormattedMessage
`IncludeFormattedMessage` indicates if the `LogRecord.FormattedMessage` will be
@ -36,16 +45,16 @@ TODO
### AddProcessor
[Processors](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/logging-library-sdk.md#logprocessor)
[Processors](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/sdk.md#logrecordprocessor)
must be added using `OpenTelemetryLoggerOptions.AddProcessor()`.
It is not supported to add Processors after building the `LoggerFactory`.
```csharp
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
builder.AddOpenTelemetry(logging =>
{
options.AddProcessor(...)
logging.AddProcessor(...);
});
});
```
@ -56,9 +65,12 @@ For more information on Processors, please review [Extending the SDK](../extendi
[Resource](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md)
is the immutable representation of the entity producing the telemetry.
If no `Resource` is explicitly configured, the default is to use a resource
indicating this [Telemetry
SDK](https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/resource/semantic_conventions#telemetry-sdk).
If no `Resource` is explicitly configured, the
[default](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/resource/README.md#semantic-attributes-with-sdk-provided-default-value)
is to use a resource indicating this
[Service](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/resource/README.md#service)
and [Telemetry
SDK](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/resource/README.md#telemetry-sdk).
The `SetResourceBuilder` method on `OpenTelemetryLoggerOptions` can be used to
set a single `ResourceBuilder`. If `SetResourceBuilder` is called multiple
times, only the last is kept. It is not possible to change the resource builder
@ -69,9 +81,9 @@ The snippet below shows configuring a custom `ResourceBuilder` to the provider.
```csharp
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
builder.AddOpenTelemetry(logging =>
{
options.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(
logging.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(
serviceName: "MyService",
serviceVersion: "1.0.0"));
});
@ -104,8 +116,8 @@ and also defines "Warning" as the minimum `LogLevel` for a user defined category
These rules as defined only apply to the `OpenTelemetryLoggerProvider`.
```csharp
ILoggingBuilder.AddFilter<OpenTelemetryLoggerProvider>("*", LogLevel.Error);
ILoggingBuilder.AddFilter<OpenTelemetryLoggerProvider>("category name", LogLevel.Warning);
builder.AddFilter<OpenTelemetryLoggerProvider>("*", LogLevel.Error);
builder.AddFilter<OpenTelemetryLoggerProvider>("MyProduct.MyLibrary.MyClass", LogLevel.Warning);
```
## Learn more

View File

@ -1,6 +1,5 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,80 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
using Microsoft.Extensions.DependencyInjection.Extensions;
using OpenTelemetry.Logs;
namespace DedicatedLogging;
internal static class DedicatedLoggingServiceCollectionExtensions
{
public static IServiceCollection AddDedicatedLogging(
this IServiceCollection services,
IConfiguration configuration,
Action<LoggerProviderBuilder> configureOpenTelemetry)
{
ArgumentNullException.ThrowIfNull(configureOpenTelemetry);
services.TryAddSingleton(_ =>
{
var services = new ServiceCollection();
services.AddLogging(builder =>
{
builder.AddConfiguration(configuration);
builder.AddOpenTelemetry();
});
services.ConfigureOpenTelemetryLoggerProvider(configureOpenTelemetry);
var sp = services.BuildServiceProvider();
return new DedicatedLoggerFactory(sp);
});
services.TryAdd(ServiceDescriptor.Singleton(typeof(IDedicatedLogger<>), typeof(DedicatedLogger<>)));
return services;
}
private sealed class DedicatedLogger<T> : IDedicatedLogger<T>
{
private readonly ILogger innerLogger;
public DedicatedLogger(DedicatedLoggerFactory loggerFactory)
{
this.innerLogger = loggerFactory.CreateLogger(typeof(T).FullName!);
}
public IDisposable? BeginScope<TState>(TState state)
where TState : notnull
=> this.innerLogger.BeginScope(state);
public bool IsEnabled(LogLevel logLevel)
=> this.innerLogger.IsEnabled(logLevel);
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
=> this.innerLogger.Log(logLevel, eventId, state, exception, formatter);
}
private sealed class DedicatedLoggerFactory : ILoggerFactory
{
private readonly ServiceProvider serviceProvider;
private readonly ILoggerFactory innerLoggerFactory;
public DedicatedLoggerFactory(ServiceProvider serviceProvider)
{
this.serviceProvider = serviceProvider;
this.innerLoggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
}
public void AddProvider(ILoggerProvider provider)
=> this.innerLoggerFactory.AddProvider(provider);
public ILogger CreateLogger(string categoryName)
=> this.innerLoggerFactory.CreateLogger(categoryName);
public void Dispose()
=> this.serviceProvider.Dispose();
}
}

View File

@ -0,0 +1,12 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
namespace DedicatedLogging;
internal interface IDedicatedLogger : ILogger
{
}
internal interface IDedicatedLogger<out TCategoryName> : IDedicatedLogger
{
}

Some files were not shown because too many files have changed in this diff Show More