Browse Source

Autogenerate release notes (#5363)

* Stricter version parsing

* Automate release notes

* Update change log formatting
Trask Stalnaker 3 years ago
parent
commit
8ce1445ae6

+ 4 - 4
.github/scripts/generate-release-contributors.sh

@@ -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]}"

+ 50 - 6
.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

+ 82 - 41
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
 

+ 1 - 1
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