From 7ceebfecebedc95d5006eb1159b7d2dbbd407a6c Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Wed, 10 Apr 2024 11:51:39 -0700 Subject: [PATCH 01/13] Updates for new release process for unstable core components. --- .github/workflows/ci.yml | 15 ++++ .github/workflows/package-validation.yml | 4 +- OpenTelemetry.proj | 3 - OpenTelemetry.sln | 2 + build/Common.prod.props | 4 + build/RELEASING.md | 80 +++++++++++-------- build/UnstableCoreLibraries.proj | 24 ++++++ ...etry.Exporter.Prometheus.AspNetCore.csproj | 22 ++--- ...ry.Exporter.Prometheus.HttpListener.csproj | 8 +- .../OpenTelemetry.SemanticConventions.csproj | 7 ++ .../README.md | 2 +- .../OpenTelemetry.Shims.OpenTracing.csproj | 13 ++- 12 files changed, 133 insertions(+), 51 deletions(-) create mode 100644 build/UnstableCoreLibraries.proj diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3211cfb9f51..4597ec928a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,7 @@ jobs: instrumentation-packages: ['src/OpenTelemetry.Instrumentation*/**', '!**/*.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.SemanticConventions/**', 'src/OpenTelemetry.Shims.OpenTracing/**', '!**/*.md'] otlp: ['*/OpenTelemetry.Exporter.OpenTelemetryProtocol*/**', '!**/*.md'] lint-md: @@ -100,6 +101,19 @@ jobs: project-build-commands: '-p:RunningDotNetPack=true -p:ExposeExperimentalFeatures=true' code-cov-name: 'Instrumentation-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: 'Unstable-Core' + otlp-integration-test: needs: detect-changes if: | @@ -180,6 +194,7 @@ jobs: build-test-solution-experimental, build-test-instrumentation-stable, build-test-instrumentation-experimental, + build-test-unstable-core, otlp-integration-test, w3c-trace-context-integration-test, validate-packages, diff --git a/.github/workflows/package-validation.yml b/.github/workflows/package-validation.yml index 5fc56716624..757b38c18a5 100644 --- a/.github/workflows/package-validation.yml +++ b/.github/workflows/package-validation.yml @@ -21,7 +21,7 @@ jobs: uses: actions/setup-dotnet@v4 - name: Pack - run: dotnet pack OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=false + run: dotnet pack OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=false /p:RunningDotNetPack=true run-package-validation-experimental: runs-on: windows-latest @@ -38,4 +38,4 @@ jobs: uses: actions/setup-dotnet@v4 - name: Pack - run: dotnet pack OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=true + run: dotnet pack OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=true /p:RunningDotNetPack=true diff --git a/OpenTelemetry.proj b/OpenTelemetry.proj index 410e43df0a1..b55859fe017 100644 --- a/OpenTelemetry.proj +++ b/OpenTelemetry.proj @@ -3,9 +3,6 @@ - - - diff --git a/OpenTelemetry.sln b/OpenTelemetry.sln index b941bc96ac5..60d3414da8a 100644 --- a/OpenTelemetry.sln +++ b/OpenTelemetry.sln @@ -36,6 +36,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{7CB2F02E build\docker-compose.net8.0.yml = build\docker-compose.net8.0.yml build\finalize-publicapi.ps1 = build\finalize-publicapi.ps1 build\GlobalAttrExclusions.txt = build\GlobalAttrExclusions.txt + build\InstrumentationLibraries.proj = build\InstrumentationLibraries.proj 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 @@ -46,6 +47,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{7CB2F02E build\test-aot-compatibility.ps1 = build\test-aot-compatibility.ps1 build\test-threadSafety.ps1 = build\test-threadSafety.ps1 build\xunit.runner.json = build\xunit.runner.json + build\UnstableCoreLibraries.proj = build\UnstableCoreLibraries.proj EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.Zipkin", "src\OpenTelemetry.Exporter.Zipkin\OpenTelemetry.Exporter.Zipkin.csproj", "{7EDAE7FA-B44E-42CA-80FA-7DF2FAA2C5DD}" diff --git a/build/Common.prod.props b/build/Common.prod.props index eb4e42a6af3..7e9e94218f2 100644 --- a/build/Common.prod.props +++ b/build/Common.prod.props @@ -54,6 +54,10 @@ false + + diff --git a/build/RELEASING.md b/build/RELEASING.md index 9d942f92dc7..d6c64d8ff29 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -5,6 +5,16 @@ Only for Maintainers. 1. Decide the tag name (version name) to be released. e.g. 1.4.0-beta.1, 1.0.0-rc9.7 etc. + Notes: + + * Instrumentation packages are 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. + + * Core unstable packages may only be released as `alpha` or `beta`. + 2. Run the following PowerShell from the root of the repo to get combined changelog (to be used later). @@ -62,46 +72,50 @@ Only for Maintainers. `.\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. + 5. The scripts in steps 2-4 run over the entire repo. Remove and undo changes + under projects which are not being released. Submit a PR with the final + changes and get it merged. 6. Tag Git with version 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: + 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. - ```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 components, add and push the tag prefixed with `core-`. + For example: - If releasing only non-core components, only add and push the tags without - prefix. 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 + ``` - ```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 - ``` + * If releasing core unstable components, push the tag prefixed with + `coreunstable-`. For example: - If releasing only a particular non-core component which has a dedicated - MinverTagPrefix such as AspNetCore instrumentation, only add and push the - tag with that particular prefix. 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 + ``` - ```sh - git tag -a Instrumentation.AspNetCore-1.6.0 -m "1.6.0 of AspNetCore instrumentation library" - git push origin Instrumentation.AspNetCore-1.6.0 - ``` + * If releasing a particular non-core component which has a dedicated + `MinverTagPrefix` (such as AspNetCore instrumentation), push the tag with + that particular prefix. For example: - If releasing multiple kinds of components, push both tags for each of them. + ```sh + git tag -a Instrumentation.AspNetCore-1.6.0 -m "1.6.0 of AspNetCore instrumentation library" + git push origin Instrumentation.AspNetCore-1.6.0 + ``` 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`. + tags](https://github.com/open-telemetry/opentelemetry-dotnet/tags) and find + the tag(s) which were pushed. 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. + * Paste the contents of combined changelog from Step 2. Only include projects with changes. * 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). @@ -111,15 +125,15 @@ Only for Maintainers. 9. From the above build, get the artifacts from the drop, which has all the NuGet packages. -10. Copy all the NuGet files and symbols into a local folder. If only releasing - core packages, only copy them over. +10. Copy all the NuGet files and symbols for the packages being released into a + local folder. 11. Download latest [nuget.exe](https://www.nuget.org/downloads) into the same - folder from Step 9. + folder from Step 10. 12. Obtain the API key from nuget.org (Only maintainers have access) -13. Run the following commands from PowerShell from local folder used in Step 9: +13. Run the following commands from PowerShell from local folder used in Step 10: ```powershell .\nuget.exe setApiKey @@ -130,12 +144,12 @@ Only for Maintainers. 14. Packages would be available in nuget.org in few minutes. Validate that the package is uploaded. -15. Delete the API key generated in Step 11. +15. Delete the API key generated in Step 12. 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. -17. If a new stable version of the core packages were released, update - `OTelLatestStableVer` in Directory.Packages.props to the just released - stable version. +17. If a new stable version of the core packages were released, open a PR to + update the `OTelLatestStableVer` property in Directory.Packages.props to the + just released stable version. diff --git a/build/UnstableCoreLibraries.proj b/build/UnstableCoreLibraries.proj new file mode 100644 index 00000000000..f7d0a30e5be --- /dev/null +++ b/build/UnstableCoreLibraries.proj @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/OpenTelemetry.Exporter.Prometheus.AspNetCore.csproj b/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/OpenTelemetry.Exporter.Prometheus.AspNetCore.csproj index a94c7fdb1ae..c70facaa997 100644 --- a/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/OpenTelemetry.Exporter.Prometheus.AspNetCore.csproj +++ b/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/OpenTelemetry.Exporter.Prometheus.AspNetCore.csproj @@ -5,7 +5,7 @@ $(TargetFrameworksForPrometheusAspNetCore) ASP.NET Core middleware for hosting OpenTelemetry .NET Prometheus Exporter $(PackageTags);prometheus;metrics - core- + coreunstable- $(DefineConstants);PROMETHEUS_ASPNETCORE @@ -18,6 +18,18 @@ true + + + + + + + + + + + + @@ -32,13 +44,5 @@ - - - - - - - - diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/OpenTelemetry.Exporter.Prometheus.HttpListener.csproj b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/OpenTelemetry.Exporter.Prometheus.HttpListener.csproj index 2301edd4068..c11a7f53c51 100644 --- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/OpenTelemetry.Exporter.Prometheus.HttpListener.csproj +++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/OpenTelemetry.Exporter.Prometheus.HttpListener.csproj @@ -4,7 +4,7 @@ $(TargetFrameworksForLibraries) Stand-alone HttpListener for hosting OpenTelemetry .NET Prometheus Exporter $(PackageTags);prometheus;metrics - core- + coreunstable- disable @@ -16,10 +16,14 @@ true - + + + + + diff --git a/src/OpenTelemetry.SemanticConventions/OpenTelemetry.SemanticConventions.csproj b/src/OpenTelemetry.SemanticConventions/OpenTelemetry.SemanticConventions.csproj index 493987b395a..ff2055a2374 100644 --- a/src/OpenTelemetry.SemanticConventions/OpenTelemetry.SemanticConventions.csproj +++ b/src/OpenTelemetry.SemanticConventions/OpenTelemetry.SemanticConventions.csproj @@ -4,6 +4,13 @@ $(TargetFrameworksForLibraries) OpenTelemetry Semantic Conventions $(PackageTags);semantic-conventions + coreunstable- + + + + + true diff --git a/src/OpenTelemetry.SemanticConventions/README.md b/src/OpenTelemetry.SemanticConventions/README.md index fc016423c82..c600ef06717 100644 --- a/src/OpenTelemetry.SemanticConventions/README.md +++ b/src/OpenTelemetry.SemanticConventions/README.md @@ -6,7 +6,7 @@ defined by the OpenTelemetry specification. ## Installation ```shell -dotnet add package OpenTelemetry.SemanticConventions +dotnet add package --prerelease OpenTelemetry.SemanticConventions ``` ## Generating the files diff --git a/src/OpenTelemetry.Shims.OpenTracing/OpenTelemetry.Shims.OpenTracing.csproj b/src/OpenTelemetry.Shims.OpenTracing/OpenTelemetry.Shims.OpenTracing.csproj index 5cb3b56a022..6f355772ca2 100644 --- a/src/OpenTelemetry.Shims.OpenTracing/OpenTelemetry.Shims.OpenTracing.csproj +++ b/src/OpenTelemetry.Shims.OpenTracing/OpenTelemetry.Shims.OpenTracing.csproj @@ -3,19 +3,30 @@ $(TargetFrameworksForLibraries) OpenTracing shim for OpenTelemetry .NET $(PackageTags);distributed-tracing;OpenTracing + coreunstable- disable + + + true + + - + + + + + From a0677a05c3de91948437b9aca7243c17582cd0f3 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Thu, 11 Apr 2024 14:14:08 -0700 Subject: [PATCH 02/13] Fix tests not running in CI. --- build/UnstableCoreLibraries.proj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/UnstableCoreLibraries.proj b/build/UnstableCoreLibraries.proj index f7d0a30e5be..2b1a992dd62 100644 --- a/build/UnstableCoreLibraries.proj +++ b/build/UnstableCoreLibraries.proj @@ -1,9 +1,9 @@ - - + + - + From ed3e3a3daa57a9856d0922f844ea462fe0b22348 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Thu, 11 Apr 2024 14:14:58 -0700 Subject: [PATCH 03/13] Lint. --- build/RELEASING.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/build/RELEASING.md b/build/RELEASING.md index d6c64d8ff29..43d1001e9f3 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -113,12 +113,14 @@ Only for Maintainers. tags](https://github.com/open-telemetry/opentelemetry-dotnet/tags) and find the tag(s) which were pushed. 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. Only include projects with changes. + * 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. Only include + projects with changes. * 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). + MyGet + workflow](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/publish-packages-1.0.yml). 8. Validate using MyGet packages. Basic sanity checks :) From 6f22e239fc5632c0210aff818c8087ffda1cba6d Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Fri, 12 Apr 2024 09:57:37 -0700 Subject: [PATCH 04/13] Releasing doc improvements. --- build/RELEASING.md | 53 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/build/RELEASING.md b/build/RELEASING.md index 43d1001e9f3..4362866c30a 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -1,16 +1,31 @@ # Release process -Only for Maintainers. +**Only for Maintainers.** - 1. Decide the tag name (version name) to be released. e.g. 1.4.0-beta.1, - 1.0.0-rc9.7 etc. + 1. Decide the component(s) and tag name (version name) to be released. Notes: + * There are different categories of packages. Check the project file for + what you want to release and look for `MinVerTagPrefix`. + + * `core-`: Core packages. These packages are defined\goverened by the + OpenTelemetry Specification and have released stable versions. They + may be released as `alpha`, `beta`, `rc`, or stable. + + * `coreunstable-`: Core unstable packages. These packages are + defined\goverened by the OpenTelemetry Specification but have not + released stable versions. They may be released as `alpha` or `beta`. + + * Everything else: Instrumentation packages have dedicated tags. Some + packages have released stable and some have not. These packages may + be released as `alpha`, `beta`, `rc`, or stable depending on the + stability of the semantic conventions used by the instrumentation. + * Instrumentation packages are 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 + `Directory.Packages.props` has been updated to the latest stable core version. * Core unstable packages may only be released as `alpha` or `beta`. @@ -113,8 +128,8 @@ Only for Maintainers. tags](https://github.com/open-telemetry/opentelemetry-dotnet/tags) and find the tag(s) which were pushed. 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`). + * Give the release a name based on the tags created (e.g., `1.9.0-beta.1 / + 1.9.0`). * Paste the contents of combined changelog from Step 2. Only include projects with changes. * Check "This is a pre-release" if applicable. @@ -133,7 +148,9 @@ Only for Maintainers. 11. Download latest [nuget.exe](https://www.nuget.org/downloads) into the same folder from Step 10. -12. Obtain the API key from nuget.org (Only maintainers have access) +12. 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. 13. Run the following commands from PowerShell from local folder used in Step 10: @@ -143,15 +160,19 @@ Only for Maintainers. get-childitem -Recurse | where {$_.extension -eq ".nupkg"} | foreach ($_) {.\nuget.exe push $_.fullname -Source https://api.nuget.org/v3/index.json} ``` -14. Packages would be available in nuget.org in few minutes. Validate that the - package is uploaded. +14. 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. -15. Delete the API key generated in Step 12. +15. If a new stable version of the core packages was released, open a PR to + update the `OTelLatestStableVer` property in `Directory.Packages.props` to + the just released stable version. -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. +16. If a new stable version of the core packages was released, open an issue in + the + [opentelemetry-dotnet-contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib) + repo to notify maintainers to begin upgrading dependencies. -17. If a new stable version of the core packages were released, open a PR to - update the `OTelLatestStableVer` property in Directory.Packages.props to the - just released stable version. +17. Once the packages are available on nuget.org post an announcement in the + [Slack channel](https://cloud-native.slack.com/archives/C01N3BC2W7Q). Note + any big or interesting new features as part of the announcement. From 94b5600f56a1332b5ecb5363a27f12672b4f7ee2 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Fri, 12 Apr 2024 12:01:29 -0700 Subject: [PATCH 05/13] Make sure package validation is run for stable instrumentation packages. --- build/Common.prod.props | 6 ++++++ .../OpenTelemetry.Exporter.Prometheus.AspNetCore.csproj | 6 ------ .../OpenTelemetry.Exporter.Prometheus.HttpListener.csproj | 6 ------ .../OpenTelemetry.Instrumentation.AspNetCore.csproj | 1 + .../OpenTelemetry.Instrumentation.GrpcNetClient.csproj | 6 ++++++ .../OpenTelemetry.Instrumentation.Http.csproj | 1 + .../OpenTelemetry.Instrumentation.SqlClient.csproj | 6 ++++++ .../OpenTelemetry.SemanticConventions.csproj | 6 ------ .../OpenTelemetry.Shims.OpenTracing.csproj | 6 ------ 9 files changed, 20 insertions(+), 24 deletions(-) diff --git a/build/Common.prod.props b/build/Common.prod.props index 7e9e94218f2..011f7d9b313 100644 --- a/build/Common.prod.props +++ b/build/Common.prod.props @@ -67,6 +67,12 @@ Text="**AssemblyVersionDebug** TargetFramework: $(TargetFramework), MinVerVersion: $(MinVerVersion), BuildNumber: $(BuildNumber), FileVersion: $(FileVersion), ExposeExperimentalFeatures: $(ExposeExperimentalFeatures)" /> + + + + - - true - - diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/OpenTelemetry.Exporter.Prometheus.HttpListener.csproj b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/OpenTelemetry.Exporter.Prometheus.HttpListener.csproj index c11a7f53c51..3766816a7e1 100644 --- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/OpenTelemetry.Exporter.Prometheus.HttpListener.csproj +++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/OpenTelemetry.Exporter.Prometheus.HttpListener.csproj @@ -10,12 +10,6 @@ disable - - - true - - diff --git a/src/OpenTelemetry.Instrumentation.AspNetCore/OpenTelemetry.Instrumentation.AspNetCore.csproj b/src/OpenTelemetry.Instrumentation.AspNetCore/OpenTelemetry.Instrumentation.AspNetCore.csproj index a95dd1c1a14..cbcc9204732 100644 --- a/src/OpenTelemetry.Instrumentation.AspNetCore/OpenTelemetry.Instrumentation.AspNetCore.csproj +++ b/src/OpenTelemetry.Instrumentation.AspNetCore/OpenTelemetry.Instrumentation.AspNetCore.csproj @@ -6,6 +6,7 @@ $(PackageTags);distributed-tracing;AspNetCore Instrumentation.AspNetCore- true + 1.8.0 disable diff --git a/src/OpenTelemetry.Instrumentation.GrpcNetClient/OpenTelemetry.Instrumentation.GrpcNetClient.csproj b/src/OpenTelemetry.Instrumentation.GrpcNetClient/OpenTelemetry.Instrumentation.GrpcNetClient.csproj index 8aa01b510bf..c00607b138b 100644 --- a/src/OpenTelemetry.Instrumentation.GrpcNetClient/OpenTelemetry.Instrumentation.GrpcNetClient.csproj +++ b/src/OpenTelemetry.Instrumentation.GrpcNetClient/OpenTelemetry.Instrumentation.GrpcNetClient.csproj @@ -11,6 +11,12 @@ disable + + + true + + diff --git a/src/OpenTelemetry.Instrumentation.Http/OpenTelemetry.Instrumentation.Http.csproj b/src/OpenTelemetry.Instrumentation.Http/OpenTelemetry.Instrumentation.Http.csproj index 55158028cde..16df2858d79 100644 --- a/src/OpenTelemetry.Instrumentation.Http/OpenTelemetry.Instrumentation.Http.csproj +++ b/src/OpenTelemetry.Instrumentation.Http/OpenTelemetry.Instrumentation.Http.csproj @@ -6,6 +6,7 @@ $(PackageTags);distributed-tracing Instrumentation.Http- true + 1.8.0 disable diff --git a/src/OpenTelemetry.Instrumentation.SqlClient/OpenTelemetry.Instrumentation.SqlClient.csproj b/src/OpenTelemetry.Instrumentation.SqlClient/OpenTelemetry.Instrumentation.SqlClient.csproj index c62aa3a0800..96aeed9ed2e 100644 --- a/src/OpenTelemetry.Instrumentation.SqlClient/OpenTelemetry.Instrumentation.SqlClient.csproj +++ b/src/OpenTelemetry.Instrumentation.SqlClient/OpenTelemetry.Instrumentation.SqlClient.csproj @@ -11,6 +11,12 @@ disable + + + true + + diff --git a/src/OpenTelemetry.SemanticConventions/OpenTelemetry.SemanticConventions.csproj b/src/OpenTelemetry.SemanticConventions/OpenTelemetry.SemanticConventions.csproj index ff2055a2374..b6c1fec6669 100644 --- a/src/OpenTelemetry.SemanticConventions/OpenTelemetry.SemanticConventions.csproj +++ b/src/OpenTelemetry.SemanticConventions/OpenTelemetry.SemanticConventions.csproj @@ -7,10 +7,4 @@ coreunstable- - - - true - - diff --git a/src/OpenTelemetry.Shims.OpenTracing/OpenTelemetry.Shims.OpenTracing.csproj b/src/OpenTelemetry.Shims.OpenTracing/OpenTelemetry.Shims.OpenTracing.csproj index 6f355772ca2..645c9e49e59 100644 --- a/src/OpenTelemetry.Shims.OpenTracing/OpenTelemetry.Shims.OpenTracing.csproj +++ b/src/OpenTelemetry.Shims.OpenTracing/OpenTelemetry.Shims.OpenTracing.csproj @@ -9,12 +9,6 @@ disable - - - true - - From 4ef32519d17007da150d4c9f0d1cfc5166cb53e5 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Fri, 12 Apr 2024 13:47:27 -0700 Subject: [PATCH 06/13] Improvements for running package validation on instrumentation packages. --- build/RELEASING.md | 9 +++++++-- .../OpenTelemetry.Instrumentation.AspNetCore.csproj | 2 +- .../OpenTelemetry.Instrumentation.Http.csproj | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/build/RELEASING.md b/build/RELEASING.md index 4362866c30a..c1aa71e7790 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -168,11 +168,16 @@ update the `OTelLatestStableVer` property in `Directory.Packages.props` to the just released stable version. -16. If a new stable version of the core packages was released, open an issue in +16. If a new stable version of a package with a dedicated `MinVerTagPrefix` was + released (typically instrumentation packages) open a PR to update + `PackageValidationBaselineVersion` in the project file to reflect the stable + version which was just released. + +17. If a new stable version of the core packages was released, open an issue in the [opentelemetry-dotnet-contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib) repo to notify maintainers to begin upgrading dependencies. -17. Once the packages are available on nuget.org post an announcement in the +18. Once the packages are available on nuget.org post an announcement in the [Slack channel](https://cloud-native.slack.com/archives/C01N3BC2W7Q). Note any big or interesting new features as part of the announcement. diff --git a/src/OpenTelemetry.Instrumentation.AspNetCore/OpenTelemetry.Instrumentation.AspNetCore.csproj b/src/OpenTelemetry.Instrumentation.AspNetCore/OpenTelemetry.Instrumentation.AspNetCore.csproj index cbcc9204732..a763c0445a3 100644 --- a/src/OpenTelemetry.Instrumentation.AspNetCore/OpenTelemetry.Instrumentation.AspNetCore.csproj +++ b/src/OpenTelemetry.Instrumentation.AspNetCore/OpenTelemetry.Instrumentation.AspNetCore.csproj @@ -6,7 +6,7 @@ $(PackageTags);distributed-tracing;AspNetCore Instrumentation.AspNetCore- true - 1.8.0 + 1.8.1 disable diff --git a/src/OpenTelemetry.Instrumentation.Http/OpenTelemetry.Instrumentation.Http.csproj b/src/OpenTelemetry.Instrumentation.Http/OpenTelemetry.Instrumentation.Http.csproj index 16df2858d79..43c73af7105 100644 --- a/src/OpenTelemetry.Instrumentation.Http/OpenTelemetry.Instrumentation.Http.csproj +++ b/src/OpenTelemetry.Instrumentation.Http/OpenTelemetry.Instrumentation.Http.csproj @@ -6,7 +6,7 @@ $(PackageTags);distributed-tracing Instrumentation.Http- true - 1.8.0 + 1.8.1 disable From 69182e7eb9f0e706bf971cf196391dab1102c911 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Tue, 16 Apr 2024 09:56:53 -0700 Subject: [PATCH 07/13] Fix typo. --- build/RELEASING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/RELEASING.md b/build/RELEASING.md index c1aa71e7790..0905e436ea4 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -22,7 +22,7 @@ be released as `alpha`, `beta`, `rc`, or stable depending on the stability of the semantic conventions used by the instrumentation. - * Instrumentation packages are core unstable packages always depend on + * Instrumentation packages and 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 From 2987841a1e8d65e8539d1962960ae2fbf3df3df2 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Tue, 16 Apr 2024 10:39:12 -0700 Subject: [PATCH 08/13] Prevent packages from being created unless there is a tag match. --- .github/workflows/publish-packages-1.0.yml | 2 +- src/Directory.Build.targets | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-packages-1.0.yml b/.github/workflows/publish-packages-1.0.yml index 3fa6ad549a3..1039e4bd777 100644 --- a/.github/workflows/publish-packages-1.0.yml +++ b/.github/workflows/publish-packages-1.0.yml @@ -36,7 +36,7 @@ jobs: run: dotnet build OpenTelemetry.proj --configuration Release --no-restore -p:Deterministic=true -p:BuildNumber=${{ github.run_number }} -p:RunningDotNetPack=true - name: dotnet pack - run: dotnet pack OpenTelemetry.proj --configuration Release --no-restore --no-build + run: dotnet pack OpenTelemetry.proj --configuration Release --no-restore --no-build -p:PackTag=${{ github.ref }} - name: Publish Artifacts uses: actions/upload-artifact@v4 diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index f7426c0fe37..ef4301eb074 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets @@ -1,8 +1,12 @@ - + $(OTelLatestStableVer) + false + $([System.IO.Path]::Combine('$(IntermediateOutputPath)','$(TargetFrameworkMoniker).AssemblyAttributes$(DefaultLanguageSourceExtension)')) From a1f9ca2b2222df17dc5ea4f4501f38a8000db769 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Tue, 16 Apr 2024 13:38:26 -0700 Subject: [PATCH 09/13] Updates for removal of OpenTelemetry.SemanticConventions. --- .github/workflows/ci.yml | 2 +- build/UnstableCoreLibraries.proj | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4597ec928a8..d90942465fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: instrumentation-packages: ['src/OpenTelemetry.Instrumentation*/**', '!**/*.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.SemanticConventions/**', 'src/OpenTelemetry.Shims.OpenTracing/**', '!**/*.md'] + unstable-core-packages: ['src/OpenTelemetry.Exporter.Prometheus.AspNetCore/**', 'src/OpenTelemetry.Exporter.Prometheus.HttpListener/**', 'src/OpenTelemetry.Shims.OpenTracing/**', '!**/*.md'] otlp: ['*/OpenTelemetry.Exporter.OpenTelemetryProtocol*/**', '!**/*.md'] lint-md: diff --git a/build/UnstableCoreLibraries.proj b/build/UnstableCoreLibraries.proj index 2b1a992dd62..8d333db2d94 100644 --- a/build/UnstableCoreLibraries.proj +++ b/build/UnstableCoreLibraries.proj @@ -2,7 +2,6 @@ - From 53a037ab0a8c384f9e1f3f4d45b091e9c2b55855 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Tue, 16 Apr 2024 15:50:32 -0700 Subject: [PATCH 10/13] Code review. --- build/RELEASING.md | 47 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/build/RELEASING.md b/build/RELEASING.md index 0905e436ea4..28c9ab24ffb 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -10,25 +10,52 @@ what you want to release and look for `MinVerTagPrefix`. * `core-`: Core packages. These packages are defined\goverened by the - OpenTelemetry Specification and have released stable versions. They - may be released as `alpha`, `beta`, `rc`, or stable. + OpenTelemetry Specification or are part of fundamental infrastructure + and have released stable versions. They may be released as `alpha`, + `beta`, `rc`, or stable. + + * `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 * `coreunstable-`: Core unstable packages. These packages are - defined\goverened by the OpenTelemetry Specification but have not - released stable versions. They may be released as `alpha` or `beta`. + 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`. + + * `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) * Everything else: Instrumentation packages have dedicated tags. Some packages have released stable and some have not. These packages may be released as `alpha`, `beta`, `rc`, or stable depending on the stability of the semantic conventions used by the instrumentation. - * Instrumentation packages and 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. + * Stable: + * `OpenTelemetry.Instrumentation.AspNetCore` (`Instrumentation.AspNetCore-`) + * `OpenTelemetry.Instrumentation.Http` (`Instrumentation.Http-`) - * Core unstable packages may only be released as `alpha` or `beta`. + * Unstable: + * `OpenTelemetry.Instrumentation.GrpcNetClient` (`Instrumentation.GrpcNetClient-`) + * `OpenTelemetry.Instrumentation.SqlClient` (`Instrumentation.SqlClient-`) + + * As of the `1.9.0` release cycle instrumentation packages and 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. 2. Run the following PowerShell from the root of the repo to get combined changelog (to be used later). From 0e137fe3e4cc0950c7ac81b830f528c00e420d02 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Tue, 16 Apr 2024 15:52:47 -0700 Subject: [PATCH 11/13] Lint. --- build/RELEASING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/RELEASING.md b/build/RELEASING.md index 28c9ab24ffb..f1b56497780 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -43,7 +43,7 @@ be released as `alpha`, `beta`, `rc`, or stable depending on the stability of the semantic conventions used by the instrumentation. - * Stable: + * Stable: * `OpenTelemetry.Instrumentation.AspNetCore` (`Instrumentation.AspNetCore-`) * `OpenTelemetry.Instrumentation.Http` (`Instrumentation.Http-`) From 3837280b50d9a1547a8bee16ac026fed1be21583 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Tue, 16 Apr 2024 15:54:23 -0700 Subject: [PATCH 12/13] Cleanup. --- build/RELEASING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/RELEASING.md b/build/RELEASING.md index f1b56497780..f778dd46a79 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -11,7 +11,7 @@ * `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`, + and have released stable versions. They may be released as `alpha`, `beta`, `rc`, or stable. * `OpenTelemetry.Api` - Defined by spec (API) From 949040b1a92521bde1efee6bd039afb941d03ab2 Mon Sep 17 00:00:00 2001 From: Mikel Blanchard Date: Tue, 16 Apr 2024 16:08:52 -0700 Subject: [PATCH 13/13] Tweak. --- build/RELEASING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/RELEASING.md b/build/RELEASING.md index f778dd46a79..c72da03508b 100644 --- a/build/RELEASING.md +++ b/build/RELEASING.md @@ -155,8 +155,8 @@ tags](https://github.com/open-telemetry/opentelemetry-dotnet/tags) and find the tag(s) which were pushed. 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.9.0-beta.1 / - 1.9.0`). + * Give the release a name based on the tags created (e.g. + `core-1.9.0-beta.1` or `Instrumentation.Http-1.8.0`). * Paste the contents of combined changelog from Step 2. Only include projects with changes. * Check "This is a pre-release" if applicable.