Merge pull request #136 from lsst-sqre/tickets/DM-54375 #469
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 | |
| "on": | |
| merge_group: {} | |
| pull_request: {} | |
| push: | |
| branches-ignore: | |
| - "dependabot/**" | |
| - "renovate/**" | |
| - "u/**" | |
| release: | |
| types: [published] | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version-file: ".python-version" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| - name: Run linters | |
| run: uv run --only-group=lint pre-commit run --all-files | |
| test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version-file: ".python-version" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| - name: Run typing | |
| run: uv run --only-group=nox nox -s typing | |
| - name: Run tests | |
| run: uv run --only-group=nox nox -s test | |
| client-test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: | | |
| 3.12 | |
| 3.13 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| - name: Run client tests | |
| run: >- | |
| uv run --only-group=nox nox -s | |
| client_test | |
| client_test_compat | |
| client_test_oldest | |
| build: | |
| needs: [test, client-test] | |
| uses: lsst-sqre/multiplatform-build-and-push/.github/workflows/build.yaml@v3 | |
| with: | |
| images: ghcr.io/${{ github.repository }} | |
| # Build on server releases and ticket branch PRs (exclude client releases) | |
| if: > | |
| (github.event_name == 'release' | |
| && !startsWith(github.event.release.tag_name, 'client/')) | |
| || (github.event_name != 'merge_group' | |
| && (startsWith(github.head_ref, 'tickets/') | |
| || startsWith(github.head_ref, 't/'))) | |
| client-test-packaging: | |
| name: Test client packaging | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| needs: [lint, test, client-test] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # full history for setuptools_scm | |
| - name: Build and publish | |
| uses: lsst-sqre/build-and-publish-to-pypi@v3 | |
| with: | |
| working-directory: client | |
| upload: false | |
| client-pypi: | |
| name: Upload client to PyPI | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| needs: [lint, test, client-test, client-test-packaging] | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/docverse-client | |
| permissions: | |
| id-token: write | |
| if: > | |
| github.event_name == 'release' | |
| && startsWith(github.event.release.tag_name, 'client/') | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # full history for setuptools_scm | |
| - name: Build and publish | |
| uses: lsst-sqre/build-and-publish-to-pypi@v3 | |
| with: | |
| working-directory: client |