Skip to content

Commit e177707

Browse files
authored
Add changelog generation to release process (#454)
1 parent 5b569f6 commit e177707

File tree

5 files changed

+85
-4
lines changed

5 files changed

+85
-4
lines changed

.github/workflows/pre-post-release.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ on:
2626
description: 'pull-request body'
2727
type: string
2828
required: true
29+
changelog:
30+
description: 'The changelog to prepend to CHANGELOG.md without heading'
31+
type: string
32+
required: false
33+
default: ''
2934

3035
env:
3136
RELEASE_VERSION: ${{ inputs.version }}
@@ -97,6 +102,19 @@ jobs:
97102
uses: ./.github/workflows/gradle-goal
98103
with:
99104
command: ./gradlew -q setNextVersion
105+
106+
- name: Insert notes into cumulative changelog (post release)
107+
if: inputs.phase == 'post'
108+
run: |
109+
echo "# ${{ inputs.version }} - $(date +'%d/%m/%Y')" > tmpchangelog
110+
echo '${{ inputs.changelog }}' >> tmpchangelog
111+
cat CHANGELOG.md >> tmpchangelog
112+
mv tmpchangelog CHANGELOG.md
113+
114+
- name: Clear next release changelog (post release)
115+
if: inputs.phase == 'post'
116+
run: |
117+
echo '' > CHANGELOG.next-release.md
100118
101119
- name: Push the ${{ inputs.phase }} release branch
102120
run: |

.github/workflows/release-step-3.yml

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,11 +200,35 @@ jobs:
200200
group-id: 'co.elastic.otel'
201201
artifact-id: 'elastic-otel-javaagent'
202202
version: ${{ inputs.version }}
203+
204+
generate-release-notes:
205+
runs-on: ubuntu-latest
206+
name: Generate the changelog for this release
207+
outputs:
208+
notes: ${{ steps.print_release_notes.outputs.notes }}
209+
steps:
210+
- uses: actions/checkout@v4
211+
with:
212+
ref: ${{ inputs.ref }}
213+
- name: Setup Gradle
214+
uses: ./.github/workflows/gradle-goal
215+
with:
216+
command: ""
217+
- name: Print Release Notes
218+
id: print_release_notes
219+
run: |
220+
echo 'notes<<RELNOTESEOF' >> $GITHUB_OUTPUT
221+
cat CHANGELOG.next-release.md >> $GITHUB_OUTPUT
222+
printf '\nThis release is based on the following upstream versions:\n\n' >> $GITHUB_OUTPUT
223+
./gradlew -q printUpstreamDependenciesMarkdown >> $GITHUB_OUTPUT
224+
echo 'RELNOTESEOF' >> $GITHUB_OUTPUT
225+
203226

204227
post-release:
205228
name: "Bump versions and create PR"
206229
needs:
207230
- await-maven-central-artifact
231+
- generate-release-notes
208232
uses: ./.github/workflows/pre-post-release.yml
209233
permissions:
210234
contents: write
@@ -215,12 +239,14 @@ jobs:
215239
phase: 'post'
216240
pr_title: "[release] release-step-4 ${{ inputs.version }}"
217241
pr_body: "Step 4 of the release process for version ${{ inputs.version }}: review & merge"
242+
changelog: ${{needs.generate-release-notes.outputs.notes}}
218243
secrets: inherit
219244

220245
create-github-release:
221246
name: "Create GitHub Release"
222247
needs:
223248
- post-release
249+
- generate-release-notes
224250
runs-on: ubuntu-latest
225251
if: ${{ ! inputs.dry_run }}
226252
permissions:
@@ -236,4 +262,4 @@ jobs:
236262
gh release create ${{ env.RELEASE_VERSION_TAG }} \
237263
--verify-tag \
238264
--title="Release ${{ env.RELEASE_VERSION }}" \
239-
--notes=""
265+
--notes='${{needs.generate-release-notes.outputs.notes}}'

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 1.0.0
2+
GA Release

CHANGELOG.next-release.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* Fixed missing transitive dependencies when using universal profiling integration standalone - #423

build.gradle.kts

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
import java.io.FileInputStream
2-
import java.nio.file.Paths
3-
import java.nio.file.Files
4-
import java.nio.file.StandardCopyOption
52

63
plugins {
74
alias(catalog.plugins.nexusPublish)
@@ -27,8 +24,45 @@ nexusPublishing {
2724
}
2825
}
2926

27+
repositories {
28+
mavenCentral()
29+
}
30+
31+
val printDependencyVersions: Configuration by configurations.creating
32+
dependencies {
33+
printDependencyVersions(platform(libs.opentelemetryInstrumentationAlphaBom))
34+
printDependencyVersions("io.opentelemetry.javaagent:opentelemetry-javaagent")
35+
printDependencyVersions("io.opentelemetry:opentelemetry-sdk")
36+
}
37+
3038
tasks {
3139

40+
fun getResolvedDependency(identifier: String): ModuleComponentIdentifier? {
41+
return printDependencyVersions.incoming.resolutionResult.allComponents.mapNotNull {
42+
val id = it.id
43+
return@mapNotNull if (id is ModuleComponentIdentifier) id else null;
44+
}.find {
45+
it.moduleIdentifier.toString() == identifier
46+
}
47+
}
48+
49+
/**
50+
* Used from within our release automation as part of the release note generation.
51+
*/
52+
register("printUpstreamDependenciesMarkdown") {
53+
dependsOn(printDependencyVersions)
54+
doLast {
55+
val agentVer = getResolvedDependency("io.opentelemetry.javaagent:opentelemetry-javaagent")!!.version
56+
val sdkVer = getResolvedDependency("io.opentelemetry:opentelemetry-sdk")!!.version
57+
val semconvVer = libs.versions.opentelemetrySemconvAlpha.get().replace("-alpha", "")
58+
val contribVer = libs.versions.opentelemetryContribAlpha.get().replace("-alpha", "")
59+
println("* opentelemetry-javaagent: [$agentVer](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v$agentVer)")
60+
println("* opentelemetry-sdk: [$sdkVer](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v$sdkVer)")
61+
println("* opentelemetry-semconv: [$semconvVer](https://github.com/open-telemetry/semantic-conventions-java/releases/tag/v$semconvVer)")
62+
println("* opentelemetry-java-contrib: [$contribVer](https://github.com/open-telemetry/opentelemetry-java-contrib/releases/tag/v$contribVer)")
63+
}
64+
}
65+
3266
register("currentVersion") {
3367
doLast {
3468
println(project.version)

0 commit comments

Comments
 (0)