Dev to release/v0.3.0 #35
This file contains hidden or 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: Version check | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| - "release/v[0-9]+.[0-9]+.[0-9]+" | |
| jobs: | |
| version-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Get branch info | |
| id: branch_info | |
| run: | | |
| echo "====== DEBUGGING BRANCH INFO ======" | |
| echo "PR URL: ${{ github.event.pull_request.html_url }}" | |
| echo "PR Number: ${{ github.event.pull_request.number }}" | |
| BASE_BRANCH="${{ github.event.pull_request.base.ref }}" | |
| SOURCE_BRANCH="${{ github.event.pull_request.head.ref }}" | |
| echo "Source branch: $SOURCE_BRANCH" | |
| echo "Target branch: $BASE_BRANCH" | |
| echo "base_branch=$BASE_BRANCH" >> $GITHUB_OUTPUT | |
| echo "source_branch=$SOURCE_BRANCH" >> $GITHUB_OUTPUT | |
| # Check if target is a release branch | |
| if [[ "$BASE_BRANCH" =~ ^release/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | |
| echo "Target is a release branch" | |
| echo "is_release_target=true" >> $GITHUB_OUTPUT | |
| echo "target_release_version=${BASE_BRANCH#release/v}" >> $GITHUB_OUTPUT | |
| echo "Extracted target release version: ${BASE_BRANCH#release/v}" | |
| else | |
| echo "Target is NOT a release branch" | |
| echo "is_release_target=false" >> $GITHUB_OUTPUT | |
| fi | |
| # Check if source is a release branch | |
| if [[ "$SOURCE_BRANCH" =~ ^release/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | |
| echo "Source is a release branch" | |
| echo "is_release_source=true" >> $GITHUB_OUTPUT | |
| echo "source_release_version=${SOURCE_BRANCH#release/v}" >> $GITHUB_OUTPUT | |
| echo "Extracted source release version: ${SOURCE_BRANCH#release/v}" | |
| else | |
| echo "Source is NOT a release branch" | |
| echo "is_release_source=false" >> $GITHUB_OUTPUT | |
| fi | |
| echo "=======================================" | |
| - name: Checkout repo | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Get version from pyproject.toml | |
| id: current_version | |
| run: | | |
| echo "====== DEBUGGING CURRENT VERSION ======" | |
| VERSION=$(grep '^version' pyproject.toml | sed -E 's/version = "(.*)"/\1/') | |
| echo "Current pyproject.toml version: $VERSION" | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| echo "=======================================" | |
| # MAIN BRANCH CASE - Check that version is bumped | |
| - name: Check version bump for main branch | |
| if: steps.branch_info.outputs.base_branch == 'main' | |
| run: | | |
| echo "====== CHECKING VERSION BUMP FOR MAIN ======" | |
| # Get version from main branch | |
| git checkout ${{ github.event.pull_request.base.ref }} | |
| MAIN_VERSION=$(grep '^version' pyproject.toml | sed -E 's/version = "(.*)"/\1/') | |
| # Get version from PR branch | |
| git checkout ${{ github.event.pull_request.head.sha }} | |
| PR_VERSION="${{ steps.current_version.outputs.version }}" | |
| echo "Main version: $MAIN_VERSION" | |
| echo "PR version: $PR_VERSION" | |
| # Check that PR version is greater than main version | |
| if dpkg --compare-versions "$PR_VERSION" le "$MAIN_VERSION"; then | |
| echo "❌ ERROR: PR version ($PR_VERSION) is not greater than main version ($MAIN_VERSION)." | |
| echo "Please bump the version." | |
| exit 1 | |
| else | |
| echo "✅ Version was properly bumped from $MAIN_VERSION to $PR_VERSION" | |
| fi | |
| echo "=======================================" | |
| # TARGET RELEASE BRANCH CASE - Check that version matches release branch name | |
| - name: Check version matches target release branch | |
| if: steps.branch_info.outputs.is_release_target == 'true' | |
| run: | | |
| echo "====== CHECKING VERSION MATCH FOR TARGET RELEASE BRANCH ======" | |
| # Extract version from branch name | |
| RELEASE_VERSION="${{ steps.branch_info.outputs.target_release_version }}" | |
| # Get version from PR branch | |
| PR_VERSION="${{ steps.current_version.outputs.version }}" | |
| echo "Target release branch version: $RELEASE_VERSION" | |
| echo "PR version: $PR_VERSION" | |
| # Check if versions match | |
| if [[ "$PR_VERSION" != "$RELEASE_VERSION" ]]; then | |
| echo "❌ ERROR: Version in pyproject.toml ($PR_VERSION) does not match target release branch version ($RELEASE_VERSION)" | |
| exit 1 | |
| else | |
| echo "✅ Version in pyproject.toml matches target release branch version" | |
| fi | |
| echo "=======================================" | |
| # SOURCE RELEASE BRANCH CASE - Check that version matches release branch name | |
| - name: Check version matches source release branch | |
| if: steps.branch_info.outputs.is_release_source == 'true' | |
| run: | | |
| echo "====== CHECKING VERSION MATCH FOR SOURCE RELEASE BRANCH ======" | |
| # Extract version from branch name | |
| RELEASE_VERSION="${{ steps.branch_info.outputs.source_release_version }}" | |
| # Get version from PR branch | |
| PR_VERSION="${{ steps.current_version.outputs.version }}" | |
| echo "Source release branch version: $RELEASE_VERSION" | |
| echo "PR version: $PR_VERSION" | |
| # Check if versions match | |
| if [[ "$PR_VERSION" != "$RELEASE_VERSION" ]]; then | |
| echo "❌ ERROR: Version in pyproject.toml ($PR_VERSION) does not match source release branch version ($RELEASE_VERSION)" | |
| exit 1 | |
| else | |
| echo "✅ Version in pyproject.toml matches source release branch version" | |
| fi | |
| echo "=======================================" |