diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..ab8a716 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,115 @@ +name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI + +on: push + +jobs: + build: + name: Build distribution 📦 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.x" + - name: Setup Poetry + uses: Gr1N/setup-poetry@v8 + + - name: Build distribution 📦 + run: poetry build + + - name: Store the distribution packages + uses: actions/upload-artifact@v3 + with: + name: python-package-distributions + path: dist/ + + # publish-to-pypi: + # name: >- + # Publish Python 🐍 distribution 📦 to PyPI + # if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes + # needs: + # - build + # runs-on: ubuntu-latest + # environment: + # name: prod + # url: https://pypi.org/p/dbt-datadict + # permissions: + # id-token: write # IMPORTANT: mandatory for trusted publishing + + # steps: + # - name: Download all the dists + # uses: actions/download-artifact@v3 + # with: + # name: python-package-distributions + # path: dist/ + # - name: Publish distribution 📦 to PyPI + # uses: pypa/gh-action-pypi-publish@release/v1 + + # github-release: + # name: >- + # Sign the Python 🐍 distribution 📦 with Sigstore + # and upload them to GitHub Release + # needs: + # - publish-to-pypi + # runs-on: ubuntu-latest + + # permissions: + # contents: write # IMPORTANT: mandatory for making GitHub Releases + # id-token: write # IMPORTANT: mandatory for sigstore + + # steps: + # - name: Download all the dists + # uses: actions/download-artifact@v3 + # with: + # name: python-package-distributions + # path: dist/ + # - name: Sign the dists with Sigstore + # uses: sigstore/gh-action-sigstore-python@v1.2.3 + # with: + # inputs: >- + # ./dist/*.tar.gz + # ./dist/*.whl + # - name: Create GitHub Release + # env: + # GITHUB_TOKEN: ${{ github.token }} + # run: >- + # gh release create + # '${{ github.ref_name }}' + # --repo '${{ github.repository }}' + # --notes "" + # - name: Upload artifact signatures to GitHub Release + # env: + # GITHUB_TOKEN: ${{ github.token }} + # # Upload to GitHub Release using the `gh` CLI. + # # `dist/` contains the built packages, and the + # # sigstore-produced signatures and certificates. + # run: >- + # gh release upload + # '${{ github.ref_name }}' dist/** + # --repo '${{ github.repository }}' + + publish-to-testpypi: + name: Publish Python 🐍 distribution 📦 to TestPyPI + needs: + - build + runs-on: ubuntu-latest + + environment: + name: test + url: https://test.pypi.org/p/dbt-datadict + + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + + steps: + - name: Download all the dists + uses: actions/download-artifact@v3 + with: + name: python-package-distributions + path: dist/ + - name: Publish distribution 📦 to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/