jobs: package: needs: release runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: cache: pip python-version: '3.8' - run: env | sort - run: make dev-package - run: make build - env: TWINE_NON_INTERACTIVE: true TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }} TWINE_USERNAME: ${{ vars.TWINE_USERNAME != '' && vars.TWINE_USERNAME || '__token__' }} run: make upload pages-build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v5 with: cache: pip python-version: '3.8' - run: env | sort - run: make dev-docs - run: make docs - name: Upload changelog uses: actions/upload-artifact@v4 with: name: changelog path: docs/changelog.md - name: Upload pages artifact uses: actions/upload-pages-artifact@v3 with: path: public pages-deploy: needs: release permissions: id-token: write pages: write runs-on: ubuntu-latest steps: - id: deployment name: Deploy to GitHub Pages uses: actions/deploy-pages@v4 release: needs: pages-build permissions: contents: write runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install git-changelog using pipx run: pipx install git-changelog - name: Remove changelog to avoid file already exists error run: rm -v docs/changelog.md - name: Download changelog uses: actions/download-artifact@v4 with: name: changelog path: docs/ - name: Prepare release notes run: make release-notes > release-notes.md - id: prerelease name: Determine prerelease run: | if [[ "${{ github.ref }}" =~ (a|b|rc)(0|[1-9][0-9]*)?$ ]]; then echo "is_prerelease=true" > $GITHUB_OUTPUT else echo "is_prerelease=false" > $GITHUB_OUTPUT fi - name: Create GitHub release uses: softprops/action-gh-release@v2 with: body_path: release-notes.md prerelease: ${{ steps.prerelease.outputs.is_prerelease }} name: Release on: push: tags: - v?[0-9]+.[0-9]+.[0-9]+ - v?[0-9]+.[0-9]+.[0-9]+-?a[0-9]* - v?[0-9]+.[0-9]+.[0-9]+-?b[0-9]* - v?[0-9]+.[0-9]+.[0-9]+-?rc[0-9]*