@@ -27,7 +27,7 @@ permissions:
2727 contents : write
2828
2929jobs :
30- build :
30+ build-sdk :
3131 environment : Release
3232 runs-on : ubuntu-latest
3333 steps :
@@ -62,23 +62,67 @@ jobs:
6262 gpg_private_key : ${{ secrets.GPG_PRIVATE_KEY }}
6363 gpg_password : ${{ secrets.GPG_PASSPHRASE }}
6464
65- - name : Configure AWS Credentials
66- uses : aws-actions/configure-aws-credentials@v4
65+ - name : Build release with Gradle
66+ uses : gradle/gradle-build-action@v3
6767 with :
68- role-to-assume : ${{ secrets.AWS_ASSUME_ROLE_ARN }}
69- aws-region : ${{ env.AWS_PUBLIC_ECR_REGION }}
68+ arguments : build integrationTests -PlocalDocker=true -Prelease.version=${{ github.event.inputs.version }} --stacktrace
7069
71- - name : Log in to AWS ECR
72- uses : docker/login-action@v3
70+ - name : Upload SDK artifact
71+ uses : actions/upload-artifact@v4
7372 with :
74- registry : public.ecr.aws
73+ name : ${{ env.ARTIFACT_NAME }}
74+ path : otelagent/build/libs/aws-opentelemetry-agent-${{ github.event.inputs.version }}.jar
7575
76- - name : Build release with Gradle
77- uses : gradle/gradle-build-action@v3
76+ build-layer :
77+ needs : build-sdk
78+ runs-on : ubuntu-latest
79+ outputs :
80+ aws_regions_json : ${{ steps.set-matrix.outputs.aws_regions_json }}
81+ steps :
82+ - name : Set up regions matrix
83+ id : set-matrix
84+ run : |
85+ IFS=',' read -ra REGIONS <<< "${{ github.event.inputs.aws_region }}"
86+ MATRIX="["
87+ for region in "${REGIONS[@]}"; do
88+ trimmed_region=$(echo "$region" | xargs)
89+ MATRIX+="\"$trimmed_region\","
90+ done
91+ MATRIX="${MATRIX%,}]"
92+ echo ${MATRIX}
93+ echo "aws_regions_json=${MATRIX}" >> $GITHUB_OUTPUT
94+
95+ - name : Checkout Repo @ SHA - ${{ github.sha }}
96+ uses : actions/checkout@v5
97+
98+ - uses : actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
7899 with :
79- arguments : build integrationTests -PlocalDocker=true -Prelease.version=${{ github.event.inputs.version }} --stacktrace
100+ java-version-file : .java-version
101+ distribution : ' temurin'
102+
103+ - name : Build layers
104+ working-directory : lambda-layer
105+ run : |
106+ ./build-layer.sh
80107
81- - name : Configure AWS Credentials
108+ - name : Upload layer
109+ uses : actions/upload-artifact@v4
110+ with :
111+ name : layer.zip
112+ path : lambda-layer/build/distributions/aws-opentelemetry-java-layer.zip
113+
114+ publish-sdk :
115+ runs-on : ubuntu-latest
116+ needs : [build-sdk, build-layer]
117+ steps :
118+ - uses : actions/checkout@v5
119+
120+ - uses : actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
121+ with :
122+ java-version-file : .java-version
123+ distribution : ' temurin'
124+
125+ - name : Configure AWS Credentials for public ECR
82126 uses : aws-actions/configure-aws-credentials@v4
83127 with :
84128 role-to-assume : ${{ secrets.AWS_ASSUME_ROLE_ARN_RELEASE }}
@@ -144,83 +188,9 @@ jobs:
144188 GPG_PRIVATE_KEY : ${{ secrets.GPG_PRIVATE_KEY }}
145189 GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
146190
147-
148- - name : Get SHA256 checksum of release artifact
149- id : get_sha256
150- run : |
151- cp "otelagent/build/libs/aws-opentelemetry-agent-${{ github.event.inputs.version }}.jar" ${{ env.ARTIFACT_NAME }}
152- shasum -a 256 ${{ env.ARTIFACT_NAME }} > ${{ env.ARTIFACT_NAME }}.sha256
153-
154- - name : Create release
155- env :
156- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
157- run : |
158- # Extract versions from dependency files
159- OTEL_INSTRUMENTATION_VERSION=$(grep "val otelVersion" dependencyManagement/build.gradle.kts | sed 's/.*= "\([^"]*\)".*/\1/')
160- OTEL_CONTRIB_VERSION=$(grep "io.opentelemetry.contrib:opentelemetry-aws-xray" dependencyManagement/build.gradle.kts | sed 's/.*:\([^"]*\)".*/\1/')
161-
162- # Create release notes
163- cat > release_notes.md << EOF
164- This release contains updates of the following upstream components:
165-
166- OpenTelemetry Java - <opentelemetry-java version number - e.g. 1.45.0>
167- OpenTelemetry Java Contrib - $OTEL_CONTRIB_VERSION
168- Opentelemetry Instrumentation for Java - $OTEL_INSTRUMENTATION_VERSION
169-
170- This release also publishes to public ECR and Maven Central.
171- * See ADOT Java auto-instrumentation Docker image v${{ github.event.inputs.version }} in our public ECR repository:
172- https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-java
173- * See version ${{ github.event.inputs.version }} in our Maven Central repository:
174- https://central.sonatype.com/artifact/software.amazon.opentelemetry/aws-opentelemetry-agent
175- EOF
176-
177- gh release create --target "$GITHUB_REF_NAME" \
178- --title "Release v${{ github.event.inputs.version }}" \
179- --notes-file release_notes.md \
180- --draft \
181- "v${{ github.event.inputs.version }}" \
182- ${{ env.ARTIFACT_NAME }} \
183- ${{ env.ARTIFACT_NAME }}.sha256
184- build-layer :
185- needs : build
186- runs-on : ubuntu-latest
187- outputs :
188- aws_regions_json : ${{ steps.set-matrix.outputs.aws_regions_json }}
189- steps :
190- - name : Set up regions matrix
191- id : set-matrix
192- run : |
193- IFS=',' read -ra REGIONS <<< "${{ github.event.inputs.aws_region }}"
194- MATRIX="["
195- for region in "${REGIONS[@]}"; do
196- trimmed_region=$(echo "$region" | xargs)
197- MATRIX+="\"$trimmed_region\","
198- done
199- MATRIX="${MATRIX%,}]"
200- echo ${MATRIX}
201- echo "aws_regions_json=${MATRIX}" >> $GITHUB_OUTPUT
202-
203- - name : Checkout Repo @ SHA - ${{ github.sha }}
204- uses : actions/checkout@v5
205-
206- - uses : actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
207- with :
208- java-version-file : .java-version
209- distribution : ' temurin'
210-
211- - name : Build layers
212- working-directory : lambda-layer
213- run : |
214- ./build-layer.sh
215-
216- - name : Upload layer
217- uses : actions/upload-artifact@v4
218- with :
219- name : aws-opentelemetry-java-layer.zip
220- path : lambda-layer/build/distributions/aws-opentelemetry-java-layer.zip
221191 publish-layer-prod :
222192 runs-on : ubuntu-latest
223- needs : build-layer
193+ needs : [ build-layer, publish-sdk]
224194 strategy :
225195 matrix :
226196 aws_region : ${{ fromJson(needs.build-layer.outputs.aws_regions_json) }}
@@ -260,7 +230,7 @@ jobs:
260230 - name : download layer.zip
261231 uses : actions/download-artifact@v5
262232 with :
263- name : aws-opentelemetry-java- layer.zip
233+ name : layer.zip
264234
265235 - name : publish
266236 run : |
@@ -308,9 +278,12 @@ jobs:
308278 if : always()
309279 run : |
310280 aws s3 rb --force s3://${{ env.BUCKET_NAME }}
281+
311282 generate-lambda-release-note :
312283 runs-on : ubuntu-latest
313284 needs : publish-layer-prod
285+ outputs :
286+ layer-note : ${{ steps.layer-note.outputs.layer-note }}
314287 steps :
315288 - name : Checkout Repo @ SHA - ${{ github.sha }}
316289 uses : actions/checkout@v5
@@ -329,6 +302,7 @@ jobs:
329302 cat $file
330303 done
331304 - name : generate layer-note
305+ id : layer-note
332306 working-directory : ${{ env.LAYER_NAME }}
333307 run : |
334308 echo "| Region | Layer ARN |" >> ../layer-note
@@ -338,7 +312,13 @@ jobs:
338312 read arn < $file
339313 echo "| " $file " | " $arn " |" >> ../layer-note
340314 done
341- cat ../layer-note
315+ cd ..
316+ {
317+ echo "layer-note<<EOF"
318+ cat layer-note
319+ echo "EOF"
320+ } >> $GITHUB_OUTPUT
321+ cat layer-note
342322 - name : generate tf layer
343323 working-directory : ${{ env.LAYER_NAME }}
344324 run : |
@@ -364,46 +344,67 @@ jobs:
364344 done
365345 echo "}" >> ../layer_cdk
366346 cat ../layer_cdk
367- - name : download layer.zip
347+
348+ publish-github :
349+ needs : generate-lambda-release-note
350+ runs-on : ubuntu-latest
351+ steps :
352+ - name : Checkout Repo @ SHA - ${{ github.sha }}
353+ uses : actions/checkout@v5
354+
355+ - name : Download SDK artifact
368356 uses : actions/download-artifact@v5
369357 with :
370- name : aws-opentelemetry-java-layer.zip
371- - name : Rename layer file
358+ name : ${{ env.ARTIFACT_NAME }}
359+
360+ - name : Download layer.zip artifact
361+ uses : actions/download-artifact@v5
362+ with :
363+ name : layer.zip
364+
365+ - name : Rename artifacts
372366 run : |
367+ cp "aws-opentelemetry-agent-${{ github.event.inputs.version }}.jar" ${{ env.ARTIFACT_NAME }}
373368 cp aws-opentelemetry-java-layer.zip layer.zip
374- - name : Get commit hash
375- id : commit
376- run : echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
377- - name : Update GH release
369+
370+ # Publish to GitHub releases
371+ - name : Create GH release
372+ id : create_release
378373 env :
379374 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
380375 run : |
381- TAG="v${{ github.event.inputs.version }}"
382- # Generate SHA-256 checksum for layer.zip
376+ # Extract versions from dependency files
377+ OTEL_INSTRUMENTATION_VERSION=$(grep "val otelVersion" dependencyManagement/build.gradle.kts | sed 's/.*= "\([^"]*\)".*/\1/')
378+ OTEL_CONTRIB_VERSION=$(grep "io.opentelemetry.contrib:opentelemetry-aws-xray" dependencyManagement/build.gradle.kts | sed 's/.*:\([^"]*\)".*/\1/')
379+
380+ # Create release notes
381+ cat > release_notes.md << EOF
382+ This release contains updates of the following upstream components:
383+
384+ OpenTelemetry Java Contrib - $OTEL_CONTRIB_VERSION
385+ Opentelemetry Instrumentation for Java - $OTEL_INSTRUMENTATION_VERSION
386+
387+ This release also publishes to public ECR and Maven Central.
388+ * See ADOT Java auto-instrumentation Docker image v${{ github.event.inputs.version }} in our public ECR repository:
389+ https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-java
390+ * See version ${{ github.event.inputs.version }} in our Maven Central repository:
391+ https://central.sonatype.com/artifact/software.amazon.opentelemetry/aws-opentelemetry-agent
392+
393+ This release also includes the AWS OpenTelemetry Lambda Layer for Java version ${{ github.event.inputs.version }}-$(echo $GITHUB_SHA | cut -c1-7).
394+
395+ Lambda Layer ARNs:
396+ ${{ needs.generate-lambda-release-note.outputs.layer-note }}
397+ EOF
398+
399+ shasum -a 256 ${{ env.ARTIFACT_NAME }} > ${{ env.ARTIFACT_NAME }}.sha256
383400 shasum -a 256 layer.zip > layer.zip.sha256
384- gh release upload $TAG \
385- layer.zip \
386- layer.zip.sha256 \
387- layer_arns.tf \
388- --clobber
389- - name : Update Release Notes
390- env :
391- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
392- run : |
393- TAG="v${{ github.event.inputs.version }}"
394- # Get current release notes
395- current_notes=$(gh release view $TAG --json body -q .body)
396- echo "This release also includes the AWS OpenTelemetry Lambda Layer for Java version ${{ github.event.inputs.version }}-${{ steps.commit.outputs.sha_short }}." >> lambda_notes.md
397- echo "" >> lambda_notes.md
398- echo "Lambda Layer ARNs:" >> lambda_notes.md
399- echo "" >> lambda_notes.md
400- cat layer-note >> lambda_notes.md
401- echo "" >> lambda_notes.md
402- echo "Notes:" >> lambda_notes.md
403- {
404- echo "$current_notes"
405- echo ""
406- cat lambda_notes.md
407- } > updated_notes.md
408- # Update release notes
409- gh release edit $TAG --notes-file updated_notes.md
401+
402+ gh release create --target "$GITHUB_REF_NAME" \
403+ --title "Release v${{ github.event.inputs.version }}" \
404+ --notes-file release_notes.md \
405+ --draft \
406+ "v${{ github.event.inputs.version }}" \
407+ ${{ env.ARTIFACT_NAME }} \
408+ ${{ env.ARTIFACT_NAME }}.sha256 \
409+ layer.zip \
410+ layer.zip.sha256
0 commit comments