name: Publish Python 🐍 distribution 📦 to TestPyPI on: push # workflow_dispatch: # Keep manual trigger # inputs: # rc_version: # description: 'RC version number (e.g., 1, 2, 3)' # required: true # type: string # schedule: # - cron: "0 0 * * *" # Run every day at midnight jobs: trigger-client-build: name: Trigger llama-stack-client build runs-on: ubuntu-latest steps: - name: Get date id: date run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT - name: Compute version based on dispatch event id: version run: | # Read base version from pyproject.toml if [ "${{ github.event_name }}" = "schedule" ]; then echo "version=.dev${{ steps.date.outputs.date }}" >> $GITHUB_OUTPUT elif [ "${{ github.event_name }}" = "workflow_dispatch" ]; then echo "version=rc${{ inputs.rc_version }}" >> $GITHUB_OUTPUT else echo "version=.dev$(shuf -i 10000000-99999999 -n 1)" >> $GITHUB_OUTPUT fi - name: Trigger llama-stack-client workflow uses: peter-evans/repository-dispatch@v2 with: token: ${{ secrets.PAT_TOKEN }} repository: meta-llama/llama-stack-client-python event-type: build-client-package client-payload: '{"source": "llama-stack-nightly", "version": "${{ steps.version.outputs.version }}"}' outputs: version: ${{ steps.version.outputs.version }} build: name: Build distribution 📦 needs: trigger-client-build # Wait for client build to complete 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: Update version for nightly run: | sed -i 's/version="\([^"]*\)"/version="\1${{ needs.trigger-client-build.outputs.version }}"/' setup.py echo "Before requirements.txt modification:" cat requirements.txt sed -i 's#llama-stack-client\([>=]\+\)\([^"]*\)#llama-stack-client==\2${{ needs.trigger-client-build.outputs.version }} --index-url https://test.pypi.org/simple/#' requirements.txt echo "After requirements.txt modification:" cat requirements.txt - 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: testrelease 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/