# This workflow will upload a Python Package to PyPI when a release is created # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries # This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: Upload Python Package on: workflow_dispatch: inputs: pkg_name: description: the name of the project type: string required: true pkg_folder: description: the folder containing the pyproject.toml file type: string required: true workflow_call: inputs: pkg_name: description: the name of the project type: string required: true pkg_folder: description: the folder containing the pyproject.toml file type: string required: true # release: # types: [published] permissions: contents: read jobs: release-build: # runs-on: ubuntu-latest runs-on: self-hosted defaults: run: working-directory: ${{ inputs.pkg_folder }} steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.x" - name: Build release distributions run: | # NOTE: put your own distribution build steps here. echo '::group::Installing Build' python -m pip install build echo '::endgroup::' echo '::group::Installing Build the package' python -m build echo '::endgroup::' - name: Upload distributions uses: actions/upload-artifact@v4 with: name: release-dist-${{ inputs.pkg_name }} path: ${{ inputs.pkg_folder }}/dist/ pypi-publish: runs-on: self-hosted needs: - release-build permissions: # IMPORTANT: this permission is mandatory for trusted publishing id-token: write steps: - uses: actions/setup-python@v5 with: python-version: "3.x" - name: Retrieve release distributions uses: actions/download-artifact@v4 with: name: release-dist-${{ inputs.pkg_name }} path: dist/ - name: check shell: bash run: | ls -laR dist - name: Publish run: | echo '::group::Installing Twine' python -m pip install twine echo '::endgroup::' echo '::group::Deploy The Package' python -m twine upload --verbose -u ${{ secrets.PYPI_USER }} -p ${{ secrets.PYPI_TOKEN }} dist/* echo '::endgroup::'