diff --git a/.github/scripts/generate-release-contributors.sh b/.github/scripts/generate-release-contributors.sh old mode 100644 new mode 100755 diff --git a/.github/workflows/prepare-release-branch.yml b/.github/workflows/prepare-release-branch.yml index 4f4306a166..5066c562c3 100644 --- a/.github/workflows/prepare-release-branch.yml +++ b/.github/workflows/prepare-release-branch.yml @@ -13,7 +13,7 @@ jobs: - name: Set release branch name id: set-release-branch-name run: | - release_branch_name=$(grep -Eo "[0-9.]+-SNAPSHOT" version.gradle.kts | sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+)-SNAPSHOT/v\1.\2.x/') + release_branch_name=$(grep -Eo "[0-9.]+-SNAPSHOT" version.gradle.kts | sed -E 's/([0-9]+)\.([0-9]+)\.0-SNAPSHOT/v\1.\2.x/') echo "::set-output name=release-branch-name::$release_branch_name" - name: Create release branch @@ -31,12 +31,12 @@ jobs: - name: Remove SNAPSHOT from version run: | - v=$(grep -Eo "[0-9]+.[0-9]+.[0-9]+-SNAPSHOT" version.gradle.kts | sed 's/-SNAPSHOT//') + v=$(grep -Eo "[0-9]+.[0-9]+.0-SNAPSHOT" version.gradle.kts | sed 's/-SNAPSHOT//') .github/scripts/update-versions.sh "$v-SNAPSHOT" "$v-alpha-SNAPSHOT" "$v" "$v-alpha" - name: Bump download link version run: | - new_version=$(grep -Eo "[0-9]+.[0-9]+.[0-9]+" version.gradle.kts | head -1) + new_version=$(grep -Eo "[0-9]+.[0-9]+.0" version.gradle.kts | head -1) sed -Ei "s,https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v[0-9]+.[0-9]+.[0-9]+/,https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v$new_version/," README.md - name: Setup git name @@ -65,7 +65,7 @@ jobs: - name: Bump SNAPSHOT version run: | - v=$(grep -Eo "[0-9]+.[0-9]+.[0-9]+-SNAPSHOT" version.gradle.kts | sed 's/-SNAPSHOT//') + v=$(grep -Eo "[0-9]+.[0-9]+.0-SNAPSHOT" version.gradle.kts | sed 's/-SNAPSHOT//') if [[ $v =~ ([0-9]+).([0-9]+).0 ]]; then major="${BASH_REMATCH[1]}" minor="${BASH_REMATCH[2]}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0d296cad32..0bfe4a081d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -135,6 +135,8 @@ jobs: - uses: actions/checkout@v2.3.4 with: ref: ${{ github.ref_name }} + # tags are needed for the generate-release-contributors.sh script + fetch-depth: 0 - name: Set up JDK 11 for running Gradle uses: actions/setup-java@v2 @@ -168,11 +170,52 @@ jobs: arguments: build publishPlugins publishPluginMavenPublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository build-root-directory: gradle-plugins - - name: Set release version - id: set-release-version + - name: Set versions + id: set-versions run: | - v=$(grep -Eo "[0-9]+.[0-9]+.[0-9]+" version.gradle.kts | head -1) + v=$(grep -Eo "[0-9]+.[0-9]+.0" version.gradle.kts | head -1) + if [[ $v =~ ([0-9]+).([0-9]+).0 ]]; then + major="${BASH_REMATCH[1]}" + minor="${BASH_REMATCH[2]}" + else + echo "unexpected version: $v" + exit 1 + fi + if [[ $minor == 0 ]]; then + prior_major=$((major - 1)) + prior_minor=$(grep -Po "^## Version $prior_major.\K([0-9]+)" CHANGELOG.md | head -1) + prior="$prior_major.$prior_minor" + else + prior="$major.$((minor - 1)).0" + fi echo "::set-output name=release-version::$v" + echo "::set-output name=prior-version::$prior" + + - name: Generate Release Notes + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + cat > release-notes.txt << EOF + Note that all artifacts other than `io.opentelemetry.javaagent:opentelemetry-javaagent` have the `-alpha` suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the [VERSIONING.md](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/VERSIONING.md#opentelemetry-java-instrumentation-versioning) for more details. + + EOF + + sed -n '4,/^## Version /p' CHANGELOG.md \ + | head -n -1 \ + | perl -0pe 's/^\n+//g' \ + | perl -0pe 's/\n+$/\n/g' \ + | sed -r 's,\[#([0-9]+)]\(https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/[0-9]+\),#\1,' \ + | perl -0pe 's/\n +/ /g' \ + >> release-notes.txt + + cat >> release-notes.txt << EOF + + ### 🙇 Thank you + This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests: + + EOF + + .github/scripts/generate-release-contributors.sh v${{ steps.set-versions.outputs.prior-version }} v${{ steps.set-versions.outputs.release-version }} >> release-notes.txt - name: Create Release id: create_release @@ -180,11 +223,12 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tag_name: v${{ steps.set-release-version.outputs.release-version }} + tag_name: v${{ steps.set-versions.outputs.release-version }} commitish: ${{ github.ref_name }} - release_name: Version ${{ steps.set-release-version.outputs.release-version }} + release_name: Version ${{ steps.set-versions.outputs.release-version }} draft: true prerelease: false + body_path: release-notes.txt - name: Upload Release Asset id: upload-release-asset @@ -193,6 +237,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ steps.set-release-version.outputs.release-version }}.jar + asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ steps.set-versions.outputs.release-version }}.jar asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive diff --git a/CHANGELOG.md b/CHANGELOG.md index 02e77d786e..ff09a00eb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,57 +18,98 @@ [#5242](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5242), [#5241](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5241), [#5239](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5239)) -- Use RPC attributes from spec for AWS SDK ([#5166](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5166)) -- SdkTracerProvider auto closed as separate Context Bean ([#5124](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5124)) (#5125) -- Support redisson 3.16.8+ ([#5201](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5201)) -- Support AWS SDK v1 request object subclasses. ([#5231](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5231)) -- Remove slim artifact ([#5251](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5251)) -- kotlinx-coroutines-reactor context propagation ([#5196](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5196)) -- Log a warning whenever GlobalOpenTelemetry.set() is called ([#5264](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5264)) -- Use `http.route` in `HttpServerMetrics` ([#5266](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5266)) -- Use VirtualField for associating netty listener with wrapper ([#5282](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5282)) -- Add code attributes to spring-scheduling spans ([#5306](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5306)) -- Propagate context into redisson async callback ([#5313](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5313)) -- Add max measurements to Micrometer Timer & DistributionSummary ([#5303](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5303)) -- Make it possible to configure base time unit used by the Micrometer bridge ([#5304](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5304)) -- Make HttpClientMetrics report low cardinality metrics ([#5319](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5319)) -- Implement NamingConvention support in Micrometer bridge ([#5328](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5328)) -- Add net.peer.name and net.peer.port attributes for grpc client span ([#5324](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5324)) -- Add jaeger remote sampler to agent ([#5346](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5346)) -- Weak cache optimization ([#5344](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5344)) +- Use RPC attributes from spec for AWS SDK + ([#5166](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5166)) +- SdkTracerProvider auto closed as separate Context Bean + ([#5124](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5124)) (#5125) +- Support redisson 3.16.8+ + ([#5201](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5201)) +- Support AWS SDK v1 request object subclasses. + ([#5231](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5231)) +- Remove slim artifact + ([#5251](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5251)) +- kotlinx-coroutines-reactor context propagation + ([#5196](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5196)) +- Log a warning whenever GlobalOpenTelemetry.set() is called + ([#5264](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5264)) +- Use `http.route` in `HttpServerMetrics` + ([#5266](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5266)) +- Use VirtualField for associating netty listener with wrapper + ([#5282](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5282)) +- Add code attributes to spring-scheduling spans + ([#5306](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5306)) +- Propagate context into redisson async callback + ([#5313](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5313)) +- Add max measurements to Micrometer Timer & DistributionSummary + ([#5303](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5303)) +- Make it possible to configure base time unit used by the Micrometer bridge + ([#5304](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5304)) +- Make HttpClientMetrics report low cardinality metrics + ([#5319](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5319)) +- Implement NamingConvention support in Micrometer bridge + ([#5328](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5328)) +- Add net.peer.name and net.peer.port attributes for grpc client span + ([#5324](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5324)) +- Add jaeger remote sampler to agent + ([#5346](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5346)) +- Weak cache optimization + ([#5344](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5344)) ### 🛠️ Bug fixes -- Several micrometer instrumentation fixes ([#5118](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5118)) -- Fix serialisation exception on default lambda events ([#4724](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/4724)) -- NoSuchMethodError when using agent and modules (JPMS) ([#5169](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5169)) -- Spring boot cloud gateway, context propagation broken ([#5188](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5188)) -- Akka http server span names are always akka.request #3478 ([#5150](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5150)) -- Recover from duplicate class definition errors ([#5185](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5185)) -- Fix serialization for quartz JobExecutionContext ([#5263](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5263)) -- End jedis span when operation actually ends ([#5256](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5256)) -- Enable oshi ProcessMetrics in javaagent ([#5281](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5281)) -- Add missing return type matchers to the executor instrumentation ([#5294](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5294)) -- Fix triggering of DNS lookup ([#5297](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5297)) -- Avoid potential for reverse name lookup ([#5305](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5305)) -- Fix WeakConcurrentMap memory leak ([#5316](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5316)) -- AWS Lambda instrumentation requires jackson and lambda-events on the classpath ([#5326](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5326)) +- Several micrometer instrumentation fixes + ([#5118](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5118)) +- Fix serialisation exception on default lambda events + ([#4724](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/4724)) +- NoSuchMethodError when using agent and modules (JPMS) + ([#5169](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5169)) +- Spring boot cloud gateway, context propagation broken + ([#5188](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5188)) +- Akka http server span names are always akka.request #3478 + ([#5150](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5150)) +- Recover from duplicate class definition errors + ([#5185](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5185)) +- Fix serialization for quartz JobExecutionContext + ([#5263](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5263)) +- End jedis span when operation actually ends + ([#5256](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5256)) +- Enable oshi ProcessMetrics in javaagent + ([#5281](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5281)) +- Add missing return type matchers to the executor instrumentation + ([#5294](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5294)) +- Fix triggering of DNS lookup + ([#5297](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5297)) +- Avoid potential for reverse name lookup + ([#5305](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5305)) +- Fix WeakConcurrentMap memory leak + ([#5316](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5316)) +- AWS Lambda instrumentation requires jackson and lambda-events on the classpath + ([#5326](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5326)) ### 🧰 Tooling -- Convert InstrumentationTestRunner from interface to abstract class ([#5112](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5112)) -- Parameterize VirtualField field type ([#5165](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5165)) -- Remove old TraceUtils and use InstrumentationTestRunner#run*Span() (almost) everywhere ([#5160](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5160)) -- Remove deprecated tracer API ([#5175](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5175)) -- Remove HttpServerTest#extraAttributes() method ([#5176](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5176)) -- Rename ServerSpanNaming to HttpRouteHolder ([#5211](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5211)) -- Don't run testLatestDeps on alpha/beta/rc versions ([#5258](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5258)) +- Convert InstrumentationTestRunner from interface to abstract class + ([#5112](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5112)) +- Parameterize VirtualField field type + ([#5165](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5165)) +- Remove old TraceUtils and use InstrumentationTestRunner#run*Span() (almost) everywhere + ([#5160](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5160)) +- Remove deprecated tracer API + ([#5175](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5175)) +- Remove HttpServerTest#extraAttributes() method + ([#5176](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5176)) +- Rename ServerSpanNaming to HttpRouteHolder + ([#5211](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5211)) +- Don't run testLatestDeps on alpha/beta/rc versions + ([#5258](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5258)) - Refactor HTTP attributes extractors to use composition over inheritance ([#5030](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5030), [#5194](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5194) [#5267](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5267)) -- Refactor AttributesExtractor so that it extracts route from Context ([#5288](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5288)) -- Publish gradle-plugins to Maven Central ([#5333](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5333)) +- Refactor AttributesExtractor so that it extracts route from Context + ([#5288](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5288)) +- Publish gradle-plugins to Maven Central + ([#5333](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/5333)) ## Version 1.10.1 - 2022-01-27 diff --git a/buildscripts/draft-change-log-entries.sh b/buildscripts/draft-change-log-entries.sh index a06ae7eef1..bfc3211a81 100644 --- a/buildscripts/draft-change-log-entries.sh +++ b/buildscripts/draft-change-log-entries.sh @@ -1,5 +1,5 @@ #!/bin/bash -e git log --reverse --pretty=format:"- %s" "$1"..HEAD \ - | sed -r 's,\(#([0-9]+)\),([#\1](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/\1)),' + | sed -r 's,\(#([0-9]+)\),\n ([#\1](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/\1)),' echo