diff --git a/.github/workflows/pre-post-release.yml b/.github/workflows/pre-post-release.yml index 8922e855..f800cb2d 100644 --- a/.github/workflows/pre-post-release.yml +++ b/.github/workflows/pre-post-release.yml @@ -26,6 +26,11 @@ on: description: 'pull-request body' type: string required: true + changelog: + description: 'The changelog to prepend to CHANGELOG.md without heading' + type: string + required: false + default: '' env: RELEASE_VERSION: ${{ inputs.version }} @@ -97,6 +102,19 @@ jobs: uses: ./.github/workflows/gradle-goal with: command: ./gradlew -q setNextVersion + + - name: Insert notes into cumulative changelog (post release) + if: inputs.phase == 'post' + run: | + echo "# ${{ inputs.version }} - $(date +'%d/%m/%Y')" > tmpchangelog + echo '${{ inputs.changelog }}' >> tmpchangelog + cat CHANGELOG.md >> tmpchangelog + mv tmpchangelog CHANGELOG.md + + - name: Clear next release changelog (post release) + if: inputs.phase == 'post' + run: | + echo '' > CHANGELOG.next-release.md - name: Push the ${{ inputs.phase }} release branch run: | diff --git a/.github/workflows/release-step-3.yml b/.github/workflows/release-step-3.yml index 29034858..3676b4b7 100644 --- a/.github/workflows/release-step-3.yml +++ b/.github/workflows/release-step-3.yml @@ -200,11 +200,35 @@ jobs: group-id: 'co.elastic.otel' artifact-id: 'elastic-otel-javaagent' version: ${{ inputs.version }} + + generate-release-notes: + runs-on: ubuntu-latest + name: Generate the changelog for this release + outputs: + notes: ${{ steps.print_release_notes.outputs.notes }} + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + - name: Setup Gradle + uses: ./.github/workflows/gradle-goal + with: + command: "" + - name: Print Release Notes + id: print_release_notes + run: | + echo 'notes<> $GITHUB_OUTPUT + cat CHANGELOG.next-release.md >> $GITHUB_OUTPUT + printf '\nThis release is based on the following upstream versions:\n\n' >> $GITHUB_OUTPUT + ./gradlew -q printUpstreamDependenciesMarkdown >> $GITHUB_OUTPUT + echo 'RELNOTESEOF' >> $GITHUB_OUTPUT + post-release: name: "Bump versions and create PR" needs: - await-maven-central-artifact + - generate-release-notes uses: ./.github/workflows/pre-post-release.yml permissions: contents: write @@ -215,12 +239,14 @@ jobs: phase: 'post' pr_title: "[release] release-step-4 ${{ inputs.version }}" pr_body: "Step 4 of the release process for version ${{ inputs.version }}: review & merge" + changelog: ${{needs.generate-release-notes.outputs.notes}} secrets: inherit create-github-release: name: "Create GitHub Release" needs: - post-release + - generate-release-notes runs-on: ubuntu-latest if: ${{ ! inputs.dry_run }} permissions: @@ -236,4 +262,4 @@ jobs: gh release create ${{ env.RELEASE_VERSION_TAG }} \ --verify-tag \ --title="Release ${{ env.RELEASE_VERSION }}" \ - --notes="" + --notes='${{needs.generate-release-notes.outputs.notes}}' diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..29ec8a93 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2 @@ +# 1.0.0 +GA Release diff --git a/CHANGELOG.next-release.md b/CHANGELOG.next-release.md new file mode 100644 index 00000000..60b2dc7d --- /dev/null +++ b/CHANGELOG.next-release.md @@ -0,0 +1 @@ +* Fixed missing transitive dependencies when using universal profiling integration standalone - #423 diff --git a/build.gradle.kts b/build.gradle.kts index aba956fb..288c4e90 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,4 @@ import java.io.FileInputStream -import java.nio.file.Paths -import java.nio.file.Files -import java.nio.file.StandardCopyOption plugins { alias(catalog.plugins.nexusPublish) @@ -27,8 +24,45 @@ nexusPublishing { } } +repositories { + mavenCentral() +} + +val printDependencyVersions: Configuration by configurations.creating +dependencies { + printDependencyVersions(platform(libs.opentelemetryInstrumentationAlphaBom)) + printDependencyVersions("io.opentelemetry.javaagent:opentelemetry-javaagent") + printDependencyVersions("io.opentelemetry:opentelemetry-sdk") +} + tasks { + fun getResolvedDependency(identifier: String): ModuleComponentIdentifier? { + return printDependencyVersions.incoming.resolutionResult.allComponents.mapNotNull { + val id = it.id + return@mapNotNull if (id is ModuleComponentIdentifier) id else null; + }.find { + it.moduleIdentifier.toString() == identifier + } + } + + /** + * Used from within our release automation as part of the release note generation. + */ + register("printUpstreamDependenciesMarkdown") { + dependsOn(printDependencyVersions) + doLast { + val agentVer = getResolvedDependency("io.opentelemetry.javaagent:opentelemetry-javaagent")!!.version + val sdkVer = getResolvedDependency("io.opentelemetry:opentelemetry-sdk")!!.version + val semconvVer = libs.versions.opentelemetrySemconvAlpha.get().replace("-alpha", "") + val contribVer = libs.versions.opentelemetryContribAlpha.get().replace("-alpha", "") + println("* opentelemetry-javaagent: [$agentVer](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v$agentVer)") + println("* opentelemetry-sdk: [$sdkVer](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v$sdkVer)") + println("* opentelemetry-semconv: [$semconvVer](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v$semconvVer)") + println("* opentelemetry-java-contrib: [$contribVer](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v$contribVer)") + } + } + register("currentVersion") { doLast { println(project.version)