Skip to content

Merge pull request #347 from fboundy/fboundy-patch-2 #18

Merge pull request #347 from fboundy/fboundy-patch-2

Merge pull request #347 from fboundy/fboundy-patch-2 #18

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
fi
- 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 patch branch
run: |
git push origin HEAD:patch
- name: Create or Update Pull Request for Main
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: patch
base: main
title: "Automated Version Fix and README Update"
body: |
This pull request was automatically created or updated to fix the version number and update the README.md file.
Please review and merge to apply these changes to the main branch.
labels: automated
delete-branch: false
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 }}