Skip to content

Merge pull request #337 from fboundy/patch #12

Merge pull request #337 from fboundy/patch

Merge pull request #337 from fboundy/patch #12

Workflow file for this run

name: Auto Release for Main Branch
on:
push:
branches:
- main # Trigger on pushes to main (e.g., after a PR is merged)
jobs:
validate-version:
name: Validate Version
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Fetch main branch into a temporary branch
run: |
git fetch origin main
git checkout -b temp-main origin/main
- name: Get VERSION from patch branch
id: get_patch_version
run: |
VERSION=$(grep -m 1 -oP '(?<=^VERSION = ")[^"]+' apps/pv_opt/pv_opt.py)
if [ -z "$VERSION" ]; then
echo "Error: VERSION not found in apps/pv_opt/pv_opt.py on patch branch." >&2
exit 1
fi
echo "patch_version=$VERSION" >> $GITHUB_ENV
- name: Get VERSION from main branch
id: get_main_version
run: |
git checkout temp-main
VERSION=$(grep -m 1 -oP '(?<=^VERSION = ")[^"]+' apps/pv_opt/pv_opt.py)
if [ -z "$VERSION" ]; then
echo "Error: VERSION not found in apps/pv_opt/pv_opt.py on main branch." >&2
exit 1
fi
echo "main_version=$VERSION" >> $GITHUB_ENV
- name: Validate or Fix Version Increment
id: validate_or_fix_version
run: |
patch_version=$patch_version
main_version=$main_version
# Extract PATCH numbers
main_patch=$(echo "$main_version" | awk -F '.' '{print $3}')
patch_patch=$(echo "$patch_version" | awk -F '.' '{print $3}')
# Check if the patch version is incremented correctly
if [ "$patch_patch" -ne $((main_patch + 1)) ]; then
echo "Warning: PATCH version is not incremented correctly. Fixing..."
new_patch_version=$(echo "$main_version" | awk -F '.' '{print $1"."$2"."($3+1)}')
sed -i "s/^VERSION = \".*\"/VERSION = \"$new_patch_version\"/" apps/pv_opt/pv_opt.py
echo "Corrected version to $new_patch_version."
echo "patch_version=$new_patch_version" >> $GITHUB_ENV
- name: Update README.md version
run: |
sed -i "1s/v[0-9]*\.[0-9]*\.[0-9]*/v$patch_version/" README.md
- name: Commit Changes if Needed
run: |
git config user.name "GitHub Actions"
git config user.email "[email protected]"
git add apps/pv_opt/pv_opt.py README.md
git diff --cached --quiet || git commit -m "Fix version and update README.md to $patch_version"
- name: Push changes back to main and patch branches
run: |
git checkout temp-main
git merge --no-ff -m "Merge validated version from patch" HEAD
git push origin temp-main:main
git push origin HEAD:patch
publish-release:
name: Publish Release
runs-on: ubuntu-latest
needs: validate-version
steps:
# Step 1: Checkout the repository
- name: Checkout Repository
uses: actions/checkout@v3
# Step 2: Extract Version from `pv_opt.py`
- name: Extract Version
id: extract_version
run: |
# Extract the VERSION variable from pv_opt.py
VERSION=$(grep -oP '(?<=^VERSION = ")[^"]+' apps/pv_opt/pv_opt.py)
if [ -z "$VERSION" ]; then
echo "Error: VERSION not found in apps/pv_opt/pv_opt.py"
exit 1
fi
echo "VERSION=$VERSION"
echo "version=$VERSION" >> $GITHUB_ENV # Save to environment file
# Step 3: Create GitHub Release
- name: Create GitHub Release
if: |
github.event_name == 'push' ||
(github.event_name == 'pull_request_review' && github.event.review.state == 'approved')
uses: actions/create-release@v1
with:
tag_name: "v${{ env.version }}"
release_name: "Release v${{ env.version }}"
body: |
## Changes
This release was automatically generated.
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}