Update workflows to also validate version number consistency
This commit is contained in:
		
							parent
							
								
									259b13baa1
								
							
						
					
					
						commit
						3c7fdc8d5b
					
				
							
								
								
									
										26
									
								
								.github/workflows/ensure-release-tagged.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								.github/workflows/ensure-release-tagged.yaml
									
									
									
									
										vendored
									
									
								
							| @ -1,26 +0,0 @@ | |||||||
| name: Ensure Tagged Commits on Release |  | ||||||
| 
 |  | ||||||
| on: |  | ||||||
|   pull_request: |  | ||||||
|     branches: |  | ||||||
|       - release |  | ||||||
| 
 |  | ||||||
| jobs: |  | ||||||
|   check_tag: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     steps: |  | ||||||
|     - name: Check out code |  | ||||||
|       uses: actions/checkout@v4 |  | ||||||
|       with: |  | ||||||
|         fetch-depth: 0 |  | ||||||
| 
 |  | ||||||
|     - name: Check if base commit of PR is tagged |  | ||||||
|       run: | |  | ||||||
|         BASE_COMMIT=$(jq -r .pull_request.base.sha < "$GITHUB_EVENT_PATH") |  | ||||||
|         TAG=$(git tag --contains $BASE_COMMIT) |  | ||||||
|         if [ -z "$TAG" ]; then |  | ||||||
|           echo "Base commit of PR is not tagged. PRs onto release must be tagged with the version number." |  | ||||||
|           exit 1 |  | ||||||
|         fi |  | ||||||
|         echo "Base commit of PR is tagged. Check passed." |  | ||||||
| 
 |  | ||||||
							
								
								
									
										46
									
								
								.github/workflows/ensure-version-consistency.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/ensure-version-consistency.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | |||||||
|  | name: Ensure Version Consistency on PR to Release | ||||||
|  | 
 | ||||||
|  | on: | ||||||
|  |   pull_request: | ||||||
|  |     branches: | ||||||
|  |       - release | ||||||
|  | 
 | ||||||
|  | jobs: | ||||||
|  |   check_version_and_tag: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - name: Check out code | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 # Necessary to fetch all tags for comparison | ||||||
|  | 
 | ||||||
|  |       - name: Set up Python | ||||||
|  |         uses: actions/setup-python@v4 | ||||||
|  |         with: | ||||||
|  |           python-version: '3.x' | ||||||
|  | 
 | ||||||
|  |       - name: Extract version from pyproject.toml | ||||||
|  |         run: | | ||||||
|  |           echo "Extracting version from pyproject.toml" | ||||||
|  |           VERSION=$(python -c 'import toml; print(toml.load("pyproject.toml")["project"]["version"])') | ||||||
|  |           echo "Version in pyproject.toml is $VERSION" | ||||||
|  |           echo "VERSION=$VERSION" >> $GITHUB_ENV | ||||||
|  | 
 | ||||||
|  |       - name: Get tag for the PR's head commit | ||||||
|  |         run: | | ||||||
|  |           PR_HEAD_SHA=$(jq -r .pull_request.head.sha < "$GITHUB_EVENT_PATH") | ||||||
|  |           TAG=$(git tag --contains $PR_HEAD_SHA) | ||||||
|  |           echo "Tag on PR's head commit is $TAG" | ||||||
|  |           echo "TAG=$TAG" >> $GITHUB_ENV | ||||||
|  | 
 | ||||||
|  |       - name: Compare version and tag | ||||||
|  |         run: | | ||||||
|  |           if [ -z "$TAG" ]; then | ||||||
|  |             echo "Head commit of PR is not tagged. Ensure the head commit of PRs onto release is tagged with the version number." | ||||||
|  |             exit 1 | ||||||
|  |           elif [ "$VERSION" != "$TAG" ]; then | ||||||
|  |             echo "Version in pyproject.toml ($VERSION) does not match the git tag ($TAG)." | ||||||
|  |             exit 1 | ||||||
|  |           else | ||||||
|  |             echo "Version and git tag match. Check passed." | ||||||
|  | 
 | ||||||
							
								
								
									
										22
									
								
								.github/workflows/publish-to-pypi.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/publish-to-pypi.yml
									
									
									
									
										vendored
									
									
								
							| @ -15,19 +15,24 @@ jobs: | |||||||
|       with: |       with: | ||||||
|         fetch-depth: 0  # This fetches all history for all branches and tags |         fetch-depth: 0  # This fetches all history for all branches and tags | ||||||
| 
 | 
 | ||||||
|     - name: Check if commit is tagged |     - name: Set up Python | ||||||
|  |       uses: actions/setup-python@v4 | ||||||
|  |       with: | ||||||
|  |         python-version: "3.x" | ||||||
|  | 
 | ||||||
|  |     - name: Validate version against tag | ||||||
|       run: | |       run: | | ||||||
|  |         VERSION=$(python -c 'import toml; print(toml.load("pyproject.toml")["project"]["version"])') | ||||||
|         TAG=$(git tag --contains HEAD) |         TAG=$(git tag --contains HEAD) | ||||||
|         if [ -z "$TAG" ]; then |         if [ -z "$TAG" ]; then | ||||||
|           echo "Commit is not tagged. Failing the workflow." |           echo "Commit is not tagged. Failing the workflow." | ||||||
|           exit 1 |           exit 1 | ||||||
|         fi |         fi | ||||||
|         echo "Commit is tagged. Proceeding with the workflow." |         if [ "$VERSION" != "$TAG" ]; then | ||||||
| 
 |           echo "Version in pyproject.toml ($VERSION) does not match the git tag ($TAG). Failing the workflow." | ||||||
|     - name: Set up Python |           exit 1 | ||||||
|       uses: actions/setup-python@v4 |         fi | ||||||
|       with: |         echo "Version and commit tag match. Proceeding with the workflow." | ||||||
|         python-version: "3.x" |  | ||||||
| 
 | 
 | ||||||
|     - name: Install pypa/build/setuptools/twine |     - name: Install pypa/build/setuptools/twine | ||||||
|       run: >- |       run: >- | ||||||
| @ -36,9 +41,6 @@ jobs: | |||||||
|         build setuptools twine |         build setuptools twine | ||||||
|         --user |         --user | ||||||
| 
 | 
 | ||||||
|     - name: Prevent fallback onto setup.py |  | ||||||
|       run: rm setup.py |  | ||||||
| 
 |  | ||||||
|     - name: Build a binary wheel and a source tarball |     - name: Build a binary wheel and a source tarball | ||||||
|       run: python3 -m build |       run: python3 -m build | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user