name: build on: [push, pull_request] env: PYTEST_ADDOPTS: "--color=yes" jobs: test: name: Test - Python ${{ matrix.python-version }} runs-on: ubuntu-latest strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} & PDM uses: pdm-project/setup-pdm@v4 with: python-version: ${{ matrix.python-version }} cache: true cache-dependency-path: ./pyproject.toml - name: Install dependencies run: pdm install - name: Run tests run: pdm run invoke tests lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Validate links in Markdown files uses: JustinBeckwith/linkinator-action@v1 with: retry: true - name: Set up Python & PDM uses: pdm-project/setup-pdm@v4 with: python-version: "3.10" - name: Install dependencies run: pdm install - name: Run linters run: pdm run invoke lint --diff deploy: name: Deploy environment: Deployment needs: [test, lint] runs-on: ubuntu-latest if: github.ref=='refs/heads/main' && github.event_name!='pull_request' permissions: contents: write id-token: write steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GH_TOKEN }} - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.10" - name: Check release id: check_release run: | python -m pip install autopub httpx python -m pip install https://github.com/scikit-build/github-release/archive/master.zip autopub check - name: Publish if: ${{ steps.check_release.outputs.autopub_release=='true' }} env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} run: | autopub prepare autopub commit autopub build autopub githubrelease - name: Upload package to PyPI if: ${{ steps.check_release.outputs.autopub_release=='true' }} uses: pypa/gh-action-pypi-publish@release/v1