Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 104 additions & 0 deletions .github/workflows/component-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: Release Component

permissions:
contents: write
Comment thread
gomathishankar37 marked this conversation as resolved.
Outdated

on:
workflow_dispatch:
inputs:
version_type:
description: 'Type of version bump (major, minor, patch, none)'
required: true
type: choice
options:
- major
- minor
- patch
Comment thread
gomathishankar37 marked this conversation as resolved.
component_repo:
description: 'Repository name of the component triggering the release'
required: true
type: string

jobs:
release:
runs-on: ubuntu-slim
Comment thread
gomathishankar37 marked this conversation as resolved.
Outdated
steps:
- name: Set up Git
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "[email protected]"

- name: Install git-flow and auto-changelog
run: |
sudo apt-get update
sudo apt-get install -y git-flow
npm install -g auto-changelog

- name: Clone the component repo and start release
run: |
set -e
git clone https://x-access-token:${{ secrets.RDKCM_RDKE }}@github.com/${{ github.event.inputs.component_repo }} project
Comment thread
gomathishankar37 marked this conversation as resolved.
Outdated
cd project
git fetch --all
git checkout main || git checkout -b main origin/main
git checkout develop || git checkout -b develop origin/develop

echo "[component-release.yml] INFO: Configuring git-flow for the repository"
git config gitflow.branch.master main
git config gitflow.branch.develop develop
git config gitflow.prefix.feature feature/
git config gitflow.prefix.bugfix bugfix/
git config gitflow.prefix.release release/
git config gitflow.prefix.hotfix hotfix/
git config gitflow.prefix.support support/
git config gitflow.prefix.versiontag ''

echo "[component-release.yml] INFO: git config completed"
TOP_TAG=$(grep -m 1 -oP '^#### \[\K[^\]]+' CHANGELOG.md)
Comment thread
gomathishankar37 marked this conversation as resolved.
Outdated
if [[ -z "$TOP_TAG" ]]; then
echo "[component-release.yml] ERROR: No version found in CHANGELOG.md!"
exit 1
fi
if [[ ! "$TOP_TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "[component-release.yml] ERROR: Invalid version format in CHANGELOG.md: $TOP_TAG. Expected format: major.minor.patch"
exit 1
fi
IFS='.' read -r major minor patch <<< "$TOP_TAG"
VERSION_TYPE="${{ github.event.inputs.version_type }}"
if [[ "$VERSION_TYPE" == "major" ]]; then
major=$((major + 1)); minor=0; patch=0
elif [[ "$VERSION_TYPE" == "minor" ]]; then
minor=$((minor + 1)); patch=0
elif [[ "$VERSION_TYPE" == "patch" ]]; then
patch=$((patch + 1))
fi
RELEASE_VERSION="$major.$minor.$patch"
echo "[component-release.yml] INFO: Using calculated version: $RELEASE_VERSION"
echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV

if git rev-parse "refs/tags/$RELEASE_VERSION" >/dev/null 2>&1; then
echo "[component-release.yml] INFO: Tag $RELEASE_VERSION already exists. Skipping release."
exit 0
fi
Comment thread
gomathishankar37 marked this conversation as resolved.

git flow release start $RELEASE_VERSION
auto-changelog -v $RELEASE_VERSION
git add CHANGELOG.md
git commit -m "$RELEASE_VERSION release changelog updates"
git flow release publish

- name: Finish release and push
run: |
set -e
cd project
git flow release finish -m "$RELEASE_VERSION release" $RELEASE_VERSION
git push origin main
git push origin --tags
git push origin develop

- name: Cleanup tag if workflow fails
if: failure()
run: |
cd project
git tag -d $RELEASE_VERSION || true
git push origin :refs/tags/$RELEASE_VERSION || true
Comment thread
gomathishankar37 marked this conversation as resolved.
Outdated
Loading