name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI on: workflow_dispatch: # Keep manual trigger schedule: - cron: "0 0 * * *" # Run every day at midnight jobs: build: name: Build distribution 📦 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: persist-credentials: false - name: Get date id: date run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT - name: Get short SHA id: sha run: echo "sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: Update version for nightly if: github.event_name == 'schedule' run: | # Assuming your version is in setup.py or pyproject.toml sed -i 's/version="\([^"]*\)"/version="\1rc${{ steps.date.outputs.date }}"/' setup.py - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.11" - name: Install pypa/build run: >- python3 -m pip install build --user - name: Build a binary wheel and a source tarball run: python3 -m build - name: Store the distribution packages uses: actions/upload-artifact@v4 with: name: python-package-distributions path: dist/ publish-to-testpypi: name: Publish Python 🐍 distribution 📦 to TestPyPI needs: - build runs-on: ubuntu-latest environment: name: testpypi url: https://test.pypi.org/p/llama-stack permissions: id-token: write # IMPORTANT: mandatory for trusted publishing steps: - name: Download all the dists uses: actions/download-artifact@v4 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/