# SPDX-FileCopyrightText: 2025 Stanford University, ETH Zurich, and the project authors (see CONTRIBUTORS.md) # SPDX-FileCopyrightText: 2025 This source file is part of the OpenTSLM open-source project. # # SPDX-License-Identifier: MIT name: "Publish to PyPI" on: workflow_dispatch: inputs: target: description: 'Target' required: true default: 'PyPI' type: choice options: - PyPI - TestPyPI # push: # tags: # # Publish on any tag starting with a `v`, e.g., v0.1.0 # - v* env: BRANCH_NAME: ${{ github.head_ref || github.ref_name }} run-name: Publish to ${{ inputs.target }} jobs: run: runs-on: ubuntu-latest environment: name: pypi permissions: id-token: write contents: read steps: - name: Verify branch run: | echo "Branch name is $BRANCH_NAME" if [ "${{ inputs.target }}" == "PyPI" ] && [ "$BRANCH_NAME" != "main" ]; then echo "::error title=Invalid branch::Only the main branch can be published to PyPI." exit 1 fi - name: Checkout uses: actions/checkout@v5 - name: Install uv uses: astral-sh/setup-uv@v7 - name: Build run: uv build # Check that basic features work and we didn't miss to include crucial files - name: Smoke test (wheel) run: uv run --isolated --no-project --with dist/*.whl test/smoke_test.py - name: Smoke test (source distribution) run: uv run --isolated --no-project --with dist/*.tar.gz test/smoke_test.py - name: Publish run: uv publish ${{ inputs.target == 'TestPyPI' && '--index testpypi' || '' }} - name: Summary run: | echo "### Published OpenTSLM to ${{ inputs.target }} :rocket:" >> $GITHUB_STEP_SUMMARY echo "Version: `$(uv version --short)`" >> $GITHUB_STEP_SUMMARY echo "URL: https://${{ inputs.target == 'TestPyPI' && 'test.' || '' }}pypi.org/project/opentslm/$(uv version --short)/" >> $GITHUB_STEP_SUMMARY