chore: align file versions (README PyPI install, utils docstring, .py… #3
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/CD | |
| on: | |
| push: | |
| branches: [main] | |
| tags: | |
| - "v*" | |
| - "*-test" | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| inputs: | |
| test_release_version: | |
| description: "Version for TestPyPI (e.g. 0.1.6)" | |
| required: false | |
| type: string | |
| release_version: | |
| description: "Version for PyPI release (e.g. 0.1.5)" | |
| required: false | |
| type: string | |
| env: | |
| UV_VERSION: "latest" | |
| PYTHON_VERSION: "3.11" | |
| jobs: | |
| # Lint, typecheck, test (all branches / PRs) | |
| ci: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: ${{ env.UV_VERSION }} | |
| - name: Install dependencies | |
| run: uv sync --dev | |
| - name: Ruff (check + format) | |
| run: | | |
| uv run ruff check . | |
| uv run ruff format --check . | |
| - name: Mypy | |
| run: uv run mypy pearsonify | |
| - name: Tests | |
| run: uv run python -m pytest tests/ -v | |
| # --- Test-release: TestPyPI (tag *-test or workflow_dispatch) --- | |
| test-release: | |
| needs: ci | |
| if: | | |
| startsWith(github.ref, 'refs/tags/') && endsWith(github.ref, '-test') || | |
| github.event_name == 'workflow_dispatch' && github.event.inputs.test_release_version != '' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: ${{ env.UV_VERSION }} | |
| - name: Install build | |
| run: uv tool install build | |
| - name: Build | |
| run: uv tool run --from build pyproject-build | |
| - name: Publish to TestPyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
| repository-url: https://test.pypi.org/legacy/ | |
| # Release: PyPI + GitHub Release (tag v* on main, or workflow_dispatch) | |
| release: | |
| needs: ci | |
| if: | | |
| startsWith(github.ref, 'refs/tags/v') || | |
| (github.event_name == 'workflow_dispatch' && github.event.inputs.release_version != '') | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: ${{ env.UV_VERSION }} | |
| - name: Install build | |
| run: uv tool install build | |
| - name: Build | |
| run: uv tool run --from build pyproject-build | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| password: ${{ secrets.PYPI_API_TOKEN }} | |
| - name: Get version | |
| id: ver | |
| run: | | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| echo "tag=v${{ github.event.inputs.release_version }}" >> $GITHUB_OUTPUT | |
| else | |
| echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Create GitHub Release | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| tag: ${{ steps.ver.outputs.tag }} | |
| name: Release ${{ steps.ver.outputs.tag }} | |
| body: "See repository for changes and installation instructions." | |
| draft: false | |
| token: ${{ secrets.GITHUB_TOKEN }} |