name: "Automated release" on: push: tags: - "v*" defaults: run: shell: bash jobs: tests: uses: "./.github/workflows/tests.yml" build-package: name: "📦 Build Python package" runs-on: ubuntu-latest steps: - name: "⬇️ Checkout repository" uses: actions/checkout@v4 - name: "🔨 Setup Python" uses: actions/setup-python@v3 - name: "🔨 Setup Poetry" uses: abatilo/actions-poetry@v2.4.0 - name: "🔨 Setup Poetry Python environment" uses: Steffo99/actions-poetry-deps@v0.2.5 - name: "🏗 Build package with Poetry" run: poetry build --no-interaction - name: "⬆️ Upload code package to artifacts" uses: actions/upload-artifact@v4 with: name: "Build" path: dist/*.tar.gz if-no-files-found: error - name: "⬆️ Upload wheel package to artifacts" uses: actions/upload-artifact@v4 with: name: "Build" path: dist/*.whl if-no-files-found: warn publish-github: name: "🌐 Publish release on GitHub" needs: - "tests" - "build-package" runs-on: ubuntu-latest steps: - name: "⬇️ Download built packages from artifacts" uses: actions/download-artifact@v4 with: name: "Build" path: dist/ - name: "🌐 Create release" uses: ncipollo/release-action@v1.13.0 with: artifactErrorsFailBuild: true artifacts: dist/* draft: true generateReleaseNotes: true publish-pypi: name: "🌐 Publish release on PyPI" needs: - "tests" - "build-package" runs-on: ubuntu-latest steps: - name: "⬇️ Download built packages from artifacts" uses: actions/download-artifact@v4 with: name: "Build" path: dist/ - name: "🌐 Upload package" uses: pypa/gh-action-pypi-publish@release/v1 with: user: "__token__" password: ${{ secrets.PYPI_TOKEN }}