name: release on: push: branches: [deploy] tags: [v*] workflow_dispatch: jobs: build-and-deploy: runs-on: ubuntu-latest environment: release permissions: id-token: write # Used to authenticate to PyPI via OIDC contents: write # Used to authenticate github release publish steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python 3.10 uses: actions/setup-python@v5 with: python-version: "3.10" - name: Install dependencies run: | python -m pip install --upgrade pip pip install build ".[test,doc]" - name: Test with pytest env: PY_COLORS: 1 # forcibly enable pytest colors run: pytest - name: Build sdist run: | git clean -fxd make man make sdist - name: Build wheel run: make wheel - name: Output dist file info run: | sha512sum dist/* tar -ztf dist/*.tar.gz | sort - uses: actions/upload-artifact@v4 with: name: results path: dist/* - name: publish uses: pypa/gh-action-pypi-publish@release/v1 if: startsWith(github.ref, 'refs/tags/') - name: Create GitHub release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: dist/*.tar.gz fail_on_unmatched_files: true draft: true