|  | @@ -0,0 +1,59 @@
 | 
	
		
			
				|  |  | +name: Build and publish
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Run on PR requests. And on master itself.
 | 
	
		
			
				|  |  | +on:
 | 
	
		
			
				|  |  | +  push:
 | 
	
		
			
				|  |  | +    branches:
 | 
	
		
			
				|  |  | +      - main  # just build the sdist skip release
 | 
	
		
			
				|  |  | +    tags:
 | 
	
		
			
				|  |  | +      - "*"
 | 
	
		
			
				|  |  | +  pull_request:  # also build on PRs touching some files
 | 
	
		
			
				|  |  | +    paths:
 | 
	
		
			
				|  |  | +      - ".github/workflows/release.yml"
 | 
	
		
			
				|  |  | +      - "MANIFEST.in"
 | 
	
		
			
				|  |  | +      - "pyproject.toml"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +jobs:
 | 
	
		
			
				|  |  | +  build:
 | 
	
		
			
				|  |  | +    name: Build
 | 
	
		
			
				|  |  | +    runs-on: ubuntu-latest
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    steps:
 | 
	
		
			
				|  |  | +      - name: Checkout source
 | 
	
		
			
				|  |  | +        uses: actions/checkout@v3
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      - name: Set up Python
 | 
	
		
			
				|  |  | +        uses: actions/setup-python@v4
 | 
	
		
			
				|  |  | +        with:
 | 
	
		
			
				|  |  | +          python-version: "3.10"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      - name: Build a source tarball
 | 
	
		
			
				|  |  | +        run: |
 | 
	
		
			
				|  |  | +          python -m pip install build
 | 
	
		
			
				|  |  | +          python -m build
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      - uses: actions/upload-artifact@v3
 | 
	
		
			
				|  |  | +        with:
 | 
	
		
			
				|  |  | +          path: ./dist/*
 | 
	
		
			
				|  |  | +          retention-days: 5
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  publish:
 | 
	
		
			
				|  |  | +    name: Publish on GitHub and PyPI
 | 
	
		
			
				|  |  | +    needs: [build]
 | 
	
		
			
				|  |  | +    runs-on: ubuntu-latest
 | 
	
		
			
				|  |  | +    # release on every tag
 | 
	
		
			
				|  |  | +    if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/')
 | 
	
		
			
				|  |  | +    steps:
 | 
	
		
			
				|  |  | +      - uses: actions/download-artifact@v3
 | 
	
		
			
				|  |  | +        with:
 | 
	
		
			
				|  |  | +          name: artifact
 | 
	
		
			
				|  |  | +          path: dist
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      - name: Upload Github release
 | 
	
		
			
				|  |  | +        id: upload-release-asset
 | 
	
		
			
				|  |  | +        uses: softprops/action-gh-release@v1
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      - name: Upload Release Assets to PyPI
 | 
	
		
			
				|  |  | +        uses: pypa/gh-action-pypi-publish@release/v1
 | 
	
		
			
				|  |  | +        with:
 | 
	
		
			
				|  |  | +          password: ${{ secrets.PYPI_UPLOAD_TOKEN }}
 |