Merge pull request #38 from lpm0073/next #11
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
#------------------------------------------------------------------------------ | |
# Lawrence McDaniel - https://lawrencemcdaniel.com | |
# Version Bump and Merge Workflow | |
# | |
# Calculate the next version in the main branch. Compares the raw value of | |
# __version__.py to the calculated value in setup.py. If they are different, | |
# it will update __version__.py and push the changes to the main branch. | |
#------------------------------------------------------------------------------ | |
name: Bump version in main branch | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
set-version-main: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.11' | |
- name: Get current version | |
# step 1 | |
# the current version persisted to __version__.py | |
id: current_version | |
run: | | |
echo "CURRENT_VERSION=$(python -c 'from __version__ import __version__; print(__version__)')" >> $GITHUB_ENV | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
- name: Get next version | |
# step 2 | |
# retrieve the the next version based on the logic in setup.py, which | |
# strips the pre-release tag from the current version. | |
id: next_version | |
run: | | |
echo "NEXT_VERSION=$(python -c 'from setup_utils import get_semantic_version; print(get_semantic_version())')" >> $GITHUB_ENV | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
- name: null step | |
id: null_step | |
run: echo "i ensure that NEXT_VERSION is set." | |
- name: Check versions | |
# step 3 | |
# calculate the next version based on a comparison of the current version | |
# to the version calucalated in setup.py. If they are different, then | |
# the version used in setup.py takes precedence. | |
id: check_versions | |
run: | | |
if [ "$CURRENT_VERSION" != "$NEXT_VERSION" ]; then | |
echo "VERSION_CHANGED=true" >> $GITHUB_ENV | |
else | |
echo "VERSION_CHANGED=false" >> $GITHUB_ENV | |
fi | |
env: | |
CURRENT_VERSION: ${{ env.CURRENT_VERSION }} | |
NEXT_VERSION: ${{ env.NEXT_VERSION }} | |
- name: another null step | |
id: another_null_step | |
run: echo "i ensure that CURRENT_VERSION, NEXT_VERSION and VERSION_CHANGED are set." | |
- name: Update __version__.py | |
# step 4 | |
# if VERSION_CHANGED is true, update __version__.py and push the changes to the | |
# main branch. | |
if: env.VERSION_CHANGED == 'true' | |
id: update_version | |
run: | | |
echo "__version__ = '${{ env.NEXT_VERSION }}'" > __version__.py | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git add __version__.py | |
git commit -m "chore: [gh] Update __version__.py to ${{ env.NEXT_VERSION }} [skip ci]" | |
git push https://${{ secrets.PAT }}@github.com/${{ github.repository }}.git HEAD:${{ github.ref }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
NEXT_VERSION: ${{ env.NEXT_VERSION }} | |
VERSION_CHANGED: ${{ env.VERSION_CHANGED }} |