Skip to content

Commit

Permalink
Add metafile.json to track version and checksum of artifacts
Browse files Browse the repository at this point in the history
  • Loading branch information
harrryr committed Dec 9, 2024
1 parent 536c5e9 commit 99e1db8
Show file tree
Hide file tree
Showing 6 changed files with 170 additions and 1 deletion.
136 changes: 136 additions & 0 deletions .github/workflows/post_release_version_bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: Post Release - Prepare Main for Next Development Cycle

on:
workflow_dispatch:
inputs:
version:
description: 'Version number (e.g., 1.0.1)'
required: true

env:
AWS_DEFAULT_REGION: us-east-1

permissions:
id-token: write
contents: write
pull-requests: write

jobs:
check-version:
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v2
with:
ref: main
fetch-depth: 0

- name: Extract Major.Minor Version and setup Env variable
run: |
echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
echo "MAJOR_MINOR=$(echo ${{ github.event.inputs.version }} | sed -E 's/([0-9]+\.[0-9]+)\.[0-9]+/\1/')" >> $GITHUB_ENV
- name: Get current major.minor version from main branch
id: get_version
run: |
CURRENT_VERSION=$(grep 'public final String VERSION' awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/ArtifactVersion.java | sed -E 's/ public final String VERSION = "([0-9]+\.[0-9]+)\.[0-9]+.*";/\1/')
echo "CURRENT_MAJOR_MINOR_VERSION=$CURRENT_VERSION" >> $GITHUB_ENV
- name: Set major and minor for current version
run: |
echo "CURRENT_MAJOR=$(echo $CURRENT_MAJOR_MINOR_VERSION | cut -d. -f1)" >> $GITHUB_ENV
echo "CURRENT_MINOR=$(echo $CURRENT_MAJOR_MINOR_VERSION | cut -d. -f2)" >> $GITHUB_ENV
- name: Set major and minor for input version
run: |
echo "INPUT_MAJOR=$(echo $MAJOR_MINOR | cut -d. -f1)" >> $GITHUB_ENV
echo "INPUT_MINOR=$(echo $MAJOR_MINOR | cut -d. -f2)" >> $GITHUB_ENV
- name: Compare major.minor version and skip if behind
run: |
if [ "$CURRENT_MAJOR" -gt "$INPUT_MAJOR" ] || { [ "$CURRENT_MAJOR" -eq "$INPUT_MAJOR" ] && [ "$CURRENT_MINOR" -gt "$INPUT_MINOR" ]; }; then
echo "Input version is behind main's current major.minor version, don't need to update major version"
exit 1
fi
prepare-main:
runs-on: ubuntu-latest
needs: check-version
steps:
- name: Configure AWS credentials for BOT secrets
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN_SECRETS_MANAGER }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}

- name: Get Bot secrets
uses: aws-actions/aws-secretsmanager-get-secrets@v1
id: bot_secrets
with:
secret-ids: |
BOT_TOKEN ,${{ secrets.BOT_TOKEN_SECRET_ARN }}
parse-json-secrets: true

- name: Setup Git
uses: actions/checkout@v2
with:
fetch-depth: 0
token: ${{ env.BOT_TOKEN_GITHUB_RW_PATOKEN }}

- name: Configure Git
run: |
git config user.name "github-actions"
git config user.email "github-actions@github.com"
- name: Extract Major.Minor Version and setup Env variable
run: |
echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
echo "MAJOR_MINOR=$(echo ${{ github.event.inputs.version }} | sed -E 's/([0-9]+\.[0-9]+)\.[0-9]+/\1/')" >> $GITHUB_ENV
- name: Determine release branch and checkout
run: |
RELEASE_BRANCH="release/v${MAJOR_MINOR}.x"
git fetch origin $RELEASE_BRANCH
git checkout -b "prepare-main-for-next-dev-cycle-${VERSION}" origin/$RELEASE_BRANCH
- name: Update version to next development version in main
run: |
DEV_VERSION="${{ github.event.inputs.version }}.dev0"
sed -i "s/public final String VERSION = \".*\";/public final String VERSION = \"${DEV_VERSION}\";/" awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/ArtifactVersion.java
VERSION="${{ github.event.inputs.version }}"
git add awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/ArtifactVersion.java
- name: Append latest release checksum to release-build-metadata.json
run: |
ARTIFACT_NAME="aws-opentelemetry-agent.jar"
curl -L -o $ARTIFACT_NAME https://github.com/aws-observability/aws-otel-java-instrumentation/releases/download/v${{ github.event.inputs.version }}/$ARTIFACT_NAME
CHECKSUM=$(shasum -a 256 $ARTIFACT_NAME | awk '{ print $1 }')
FILE="release-build-metadata.json"
UPDATED_JSON=$(jq --arg version "${{ env.VERSION }}" \
--arg name "$ARTIFACT_NAME" \
--arg checksum "$CHECKSUM" \
'.release += [{"version": $version, "checksum": [{"name": $name, "checksum": $checksum}]}]' "$FILE")
echo "$UPDATED_JSON" > "$FILE"
git add release-build-metadata.json
- name: Push changes to Github
run: |
git commit -m "Prepare main for next development cycle: Update version to ${{ github.event.inputs.version }}"
git push --set-upstream origin "prepare-main-for-next-dev-cycle-${{ github.event.inputs.version }}"
- name: Create Pull Request to main
env:
GITHUB_TOKEN: ${{ env.BOT_TOKEN_GITHUB_RW_PATOKEN }}
run: |
DEV_VERSION="${{ github.event.inputs.version }}.dev0"
gh pr create --title "Post release $VERSION: Update version to $DEV_VERSION" \
--body "This PR prepares the main branch for the next development cycle by updating the version to $DEV_VERSION and updating the image version to be scanned to the latest released.
This PR should only be merge when release for version v$VERSION is success.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice." \
--head prepare-main-for-next-dev-cycle-${VERSION} \
--base main
2 changes: 1 addition & 1 deletion .github/workflows/release-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,4 @@ jobs:
--title "Release v${{ github.event.inputs.version }}" \
--draft \
"v${{ github.event.inputs.version }}" \
aws-opentelemetry-agent.jar
aws-opentelemetry-agent.jar
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* Copyright Amazon.com, Inc. or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

package software.amazon.opentelemetry.javaagent.providers;

public final class ArtifactVersion {
public final String VERSION = "1.32.5.dev0";
}
Empty file added checksum.txt
Empty file.
13 changes: 13 additions & 0 deletions release-build-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"release": [
{
"version": "1.32.5",
"checksum": [
{
"name": "aws-opentelemetry-agent.jar",
"checksum": "1644b11c2c90747c99934c3c52d800e95bfb854e459ba9f50054b21233c65c37"
}
]
}
]
}
Empty file added version.txt
Empty file.

0 comments on commit 99e1db8

Please sign in to comment.