name: CI Checks on: push: branches: - "main" paths-ignore: - "**.md" - LICENSE - "docker-compose.yml" - "docker-compose.dev.yml" - ".github/ISSUE_TEMPLATE/*.yml" - ".github/dependabot.yml" - ".github/release-drafter.yml" pull_request: branches: - "*" paths-ignore: - "**.md" - LICENSE - "docker-compose.yml" - "docker-compose.dev.yml" - ".github/ISSUE_TEMPLATE/*.yml" - ".github/dependabot.yml" - ".github/release-drafter.yml" workflow_dispatch: release: types: [published, edited] jobs: check-json-syntax: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check syntax of models JSON file run: cat ./api/src/serge/data/models.json | jq -e . validate-models-schema: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Validate models.json against a json schema uses: cardinalby/schema-validator-action@v3 with: file: './api/src/serge/data/models.json' schema: './api/src/serge/schema/schema.json' fileParser: json mode: default python-unit-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - name: Install dependencies with poetry working-directory: ./api run: | pip install poetry poetry install - name: Run unit tests working-directory: ./api run: | poetry run python -m pytest check-sh-files: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: luizm/action-sh-checker@v0.8.0 env: SHFMT_OPTS: "-s" SHELLCHECK_OPTS: "-P scripts/ -e SC1091" with: sh_checker_only_diff: false sh_checker_comment: false check-api-code: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - name: Run ruff check uses: chartboost/ruff-action@v1 with: src: "./api" args: "--verbose" - name: Run black check uses: psf/black@stable with: options: "--check --diff --verbose" src: "./api" check-web-code: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' - name: Install Web working-directory: ./web run: npm ci - name: Run linting working-directory: ./web run: npm run lint - name: Check Type Errors working-directory: ./web run: npm run check - name: Build Web working-directory: ./web run: npm run build