name: CI on: pull_request: branches: [main] permissions: contents: read jobs: python-quality: name: Python Quality runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install uv and Python uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 with: version: "0.11.3" python-version: "3.14" enable-cache: true - name: Sync dependencies run: make install-python-dev - name: Lint run: make python-lint - name: Check formatting run: make python-format - name: Check dead code run: make python-dead-code python-typechecks: name: Python Typechecks runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install uv and Python uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 with: version: "0.11.3" python-version: "3.14" enable-cache: true - name: Sync dependencies run: make install-python-dev - name: Typecheck run: make python-typecheck python-tests: name: Python Tests runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install uv and Python uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 with: version: "0.11.3" python-version: "3.14" enable-cache: true - name: Sync dependencies run: make install-python-dev - name: Run tests run: make python-test docker-build-check: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0 - name: Build shelfmark-lite image uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 with: context: . target: shelfmark-lite platforms: linux/amd64 push: false build-args: | BUILD_VERSION=pr-${{ github.sha }} RELEASE_VERSION=pr-${{ github.event.pull_request.number }} frontend-quality: name: Frontend Quality runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24 cache: "npm" cache-dependency-path: src/frontend/package-lock.json - name: Install dependencies run: make install-ci - name: Lint run: make frontend-lint - name: Check formatting run: make frontend-format frontend-typechecks: name: Frontend Typechecks runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24 cache: "npm" cache-dependency-path: src/frontend/package-lock.json - name: Install dependencies run: make install-ci - name: Typecheck run: make frontend-typecheck frontend-tests: name: Frontend Tests runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24 cache: "npm" cache-dependency-path: src/frontend/package-lock.json - name: Install dependencies run: make install-ci - name: Unit tests run: make frontend-test