| - name: Checkout code | - name: Checkout code | ||||
| uses: actions/checkout@v4 | uses: actions/checkout@v4 | ||||
| - name: Check changed files | |||||
| id: changed-files | |||||
| uses: tj-actions/changed-files@v44 | |||||
| with: | |||||
| files: api/** | |||||
| - name: Set up Python | - name: Set up Python | ||||
| uses: actions/setup-python@v5 | uses: actions/setup-python@v5 | ||||
| if: steps.changed-files.outputs.any_changed == 'true' | |||||
| with: | with: | ||||
| python-version: '3.10' | python-version: '3.10' | ||||
| - name: Python dependencies | - name: Python dependencies | ||||
| if: steps.changed-files.outputs.any_changed == 'true' | |||||
| run: pip install ruff dotenv-linter | run: pip install ruff dotenv-linter | ||||
| - name: Ruff check | - name: Ruff check | ||||
| if: steps.changed-files.outputs.any_changed == 'true' | |||||
| run: ruff check ./api | run: ruff check ./api | ||||
| - name: Dotenv check | - name: Dotenv check | ||||
| if: steps.changed-files.outputs.any_changed == 'true' | |||||
| run: dotenv-linter ./api/.env.example ./web/.env.example | run: dotenv-linter ./api/.env.example ./web/.env.example | ||||
| - name: Lint hints | - name: Lint hints | ||||
| if: failure() | if: failure() | ||||
| run: echo "Please run 'dev/reformat' to fix the fixable linting errors." | run: echo "Please run 'dev/reformat' to fix the fixable linting errors." | ||||
| test: | |||||
| name: ESLint and SuperLinter | |||||
| web-style: | |||||
| name: Web Style | |||||
| runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
| needs: python-style | |||||
| defaults: | |||||
| run: | |||||
| working-directory: ./web | |||||
| steps: | steps: | ||||
| - name: Checkout code | - name: Checkout code | ||||
| uses: actions/checkout@v4 | uses: actions/checkout@v4 | ||||
| - name: Check changed files | |||||
| id: changed-files | |||||
| uses: tj-actions/changed-files@v44 | |||||
| with: | with: | ||||
| fetch-depth: 0 | |||||
| files: web/** | |||||
| - name: Setup NodeJS | - name: Setup NodeJS | ||||
| uses: actions/setup-node@v4 | uses: actions/setup-node@v4 | ||||
| if: steps.changed-files.outputs.any_changed == 'true' | |||||
| with: | with: | ||||
| node-version: 20 | node-version: 20 | ||||
| cache: yarn | cache: yarn | ||||
| cache-dependency-path: ./web/package.json | cache-dependency-path: ./web/package.json | ||||
| - name: Web dependencies | - name: Web dependencies | ||||
| run: | | |||||
| cd ./web | |||||
| yarn install --frozen-lockfile | |||||
| if: steps.changed-files.outputs.any_changed == 'true' | |||||
| run: yarn install --frozen-lockfile | |||||
| - name: Web style check | - name: Web style check | ||||
| run: | | |||||
| cd ./web | |||||
| yarn run lint | |||||
| if: steps.changed-files.outputs.any_changed == 'true' | |||||
| run: yarn run lint | |||||
| superlinter: | |||||
| name: SuperLinter | |||||
| runs-on: ubuntu-latest | |||||
| steps: | |||||
| - name: Checkout code | |||||
| uses: actions/checkout@v4 | |||||
| - name: Check changed files | |||||
| id: changed-files | |||||
| uses: tj-actions/changed-files@v44 | |||||
| with: | |||||
| files: | | |||||
| **.sh | |||||
| **.yaml | |||||
| **.yml | |||||
| Dockerfile | |||||
| - name: Super-linter | - name: Super-linter | ||||
| uses: super-linter/super-linter/slim@v6 | uses: super-linter/super-linter/slim@v6 | ||||
| if: steps.changed-files.outputs.any_changed == 'true' | |||||
| env: | env: | ||||
| BASH_SEVERITY: warning | BASH_SEVERITY: warning | ||||
| DEFAULT_BRANCH: main | DEFAULT_BRANCH: main |