Skip to content

Commit

Permalink
add pre/post release workflow (#22)
Browse files Browse the repository at this point in the history
*Issue #, if available:*

*Description of changes:*

Add the pre release and post release workflows.

Manually tested it to make sure it can successfully create the relevant
pull requests:
*
#26
*
#27

By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice.
  • Loading branch information
pxaws authored Aug 21, 2024
1 parent 0eb2f9b commit c46b0c6
Show file tree
Hide file tree
Showing 2 changed files with 230 additions and 0 deletions.
122 changes: 122 additions & 0 deletions .github/workflows/post-release-version-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
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=$(jq -r '.version' aws-distro-opentelemetry-node-autoinstrumentation/package.json)
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 "[email protected]"
- 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
# TODO: change the version in daily scan like adot python did
# sed -i 's/python:v.*"/python:v'$VERSION'"/' .github/workflows/daily_scan.yml
run: |
DEV_VERSION="${{ github.event.inputs.version }}.dev0"
sed -i'' -e "s/\"version\": \".*\"/\"version\": \"${DEV_VERSION}\"/" aws-distro-opentelemetry-node-autoinstrumentation/package.json
sed -i'' -e "s/\"version\": \".*\"/\"version\": \"${DEV_VERSION}\"/" docker-utils/package.json
sed -i'' -e "s/\"version\": \".*\"/\"version\": \"${DEV_VERSION}\"/" package.json
VERSION="${{ github.event.inputs.version }}"
git add .
git commit -m "Prepare main for next development cycle: Update version to $DEV_VERSION"
git push --set-upstream origin "prepare-main-for-next-dev-cycle-${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
108 changes: 108 additions & 0 deletions .github/workflows/pre-release-prepare.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Pre Release Prepare - Update Version and Create PR

on:
workflow_dispatch:
inputs:
version:
description: 'Version number (e.g., 1.0.1)'
required: true
is_patch:
description: 'Is this a patch? (true or false)'
required: true
default: 'false'

env:
AWS_DEFAULT_REGION: us-east-1

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


jobs:
update-version-and-create-pr:
runs-on: ubuntu-latest
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: Checkout main branch
uses: actions/checkout@v3
with:
ref: 'main'
token: ${{ env.BOT_TOKEN_GITHUB_RW_PATOKEN }}

- name: Setup Git
run: |
git config user.name "github-actions"
git config user.email "[email protected]"
- 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: Create branches
run: |
IS_PATCH=${{ github.event.inputs.is_patch }}
if [[ "$IS_PATCH" != "true" && "$IS_PATCH" != "false" ]]; then
echo "Invalid input for IS_PATCH. Must be 'true' or 'false'."
exit 1
fi
if git ls-remote --heads origin release/v${MAJOR_MINOR}.x | grep -q "release/v${MAJOR_MINOR}.x"; then
if [ "$IS_PATCH" = "true" ]; then
git fetch origin release/v${MAJOR_MINOR}.x
echo "Branch release/v${MAJOR_MINOR}.x already exists, checking out."
git checkout "release/v${MAJOR_MINOR}.x"
else
echo "Error, release series branch release/v${MAJOR_MINOR}.x exist for non-patch release"
echo "Check your input or branch"
exit 1
fi
else
if [ "$IS_PATCH" = "true" ]; then
echo "Error, release series branch release/v${MAJOR_MINOR}.x NOT exist for patch release"
echo "Check your input or branch"
exit 1
else
echo "Creating branch release/v${MAJOR_MINOR}.x."
git checkout -b "release/v${MAJOR_MINOR}.x"
git push origin "release/v${MAJOR_MINOR}.x"
fi
fi
git checkout -b "v${VERSION}_release"
git push origin "v${VERSION}_release"
- name: Update version in file
run: |
sed -i'' -e "s/\"version\": \".*\"/\"version\": \"${VERSION}\"/" aws-distro-opentelemetry-node-autoinstrumentation/package.json
sed -i'' -e "s/\"version\": \".*\"/\"version\": \"${VERSION}\"/" docker-utils/package.json
sed -i'' -e "s/\"version\": \".*\"/\"version\": \"${VERSION}\"/" package.json
git commit -am "Update version to ${VERSION}"
git push origin "v${VERSION}_release"
- name: Create pull request against the release branch
env:
GITHUB_TOKEN: ${{ env.BOT_TOKEN_GITHUB_RW_PATOKEN }}
run: |
gh pr create --title "Pre-release: Update version to ${VERSION}" \
--body "This PR updates the version to ${VERSION}.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice." \
--head v${{ github.event.inputs.version }}_release \
--base release/v${MAJOR_MINOR}.x

0 comments on commit c46b0c6

Please sign in to comment.