Merge pull request #335 from fboundy/patch #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 version increment | |
id: validate_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 "Error: PATCH version is not incremented correctly." >&2 | |
echo "Main version: $main_version, Patch version: $patch_version" >&2 | |
exit 1 | |
fi | |
- name: Update README.md version | |
run: | | |
sed -i "1s/v[0-9]*\.[0-9]*\.[0-9]*/v$patch_version/" README.md | |
- name: Commit README.md changes | |
run: | | |
git config user.name "GitHub Actions" | |
git config user.email "[email protected]" | |
git add README.md | |
git commit -m "Update README.md version to $patch_version" | |
- name: Push changes back to patch branch | |
run: | | |
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 }} |