Add auto name-to-UUID resolution, LinearServerError, and smoke workflow #15
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: Publish | |
| on: | |
| # Build + verify on every push/PR; publish to PyPI when a GitHub Release is published. | |
| push: | |
| branches: [main] | |
| pull_request: | |
| release: | |
| types: [published] | |
| workflow_dispatch: | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Lint | |
| run: uv run ruff check | |
| - name: Test (with coverage gate) | |
| run: uv run pytest | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Build sdist and wheel | |
| run: uv build | |
| - name: Validate distribution metadata | |
| run: uvx twine check dist/* | |
| - name: Smoke-test that the wheel installs and imports | |
| run: | | |
| uv venv /tmp/install-check | |
| uv pip install --python /tmp/install-check dist/*.whl | |
| /tmp/install-check/bin/python -c "import linear_python_client; print('installed', linear_python_client.__version__)" | |
| - name: Upload distribution artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist | |
| path: dist/ | |
| smoke: | |
| needs: [test, build] | |
| uses: ./.github/workflows/smoke.yml | |
| if: github.event_name == 'release' | |
| secrets: | |
| LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }} | |
| publish: | |
| needs: [test, build, smoke] | |
| if: github.event_name == 'release' | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/linear-python-client | |
| permissions: | |
| # Required for PyPI Trusted Publishing (OIDC); no API token needed. | |
| id-token: write | |
| steps: | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| - name: Download distribution artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: dist | |
| path: dist/ | |
| - name: Publish to PyPI | |
| run: uv publish --trusted-publishing always |