name: Style check on: pull_request: branches: - main concurrency: group: style-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: python-style: name: Python Style runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Check changed files id: changed-files uses: tj-actions/changed-files@v45 with: files: api/** - name: Install Poetry if: steps.changed-files.outputs.any_changed == 'true' uses: abatilo/actions-poetry@v3 - name: Set up Python uses: actions/setup-python@v5 if: steps.changed-files.outputs.any_changed == 'true' with: python-version: '3.10' - name: Python dependencies if: steps.changed-files.outputs.any_changed == 'true' run: poetry install -C api --only lint - name: Ruff check if: steps.changed-files.outputs.any_changed == 'true' run: poetry run -C api ruff check ./api - name: Dotenv check if: steps.changed-files.outputs.any_changed == 'true' run: poetry run -C api dotenv-linter ./api/.env.example ./web/.env.example - name: Ruff formatter check if: steps.changed-files.outputs.any_changed == 'true' run: poetry run -C api ruff format --check ./api - name: Lint hints if: failure() run: echo "Please run 'dev/reformat' to fix the fixable linting errors." web-style: name: Web Style runs-on: ubuntu-latest defaults: run: working-directory: ./web steps: - name: Checkout code uses: actions/checkout@v4 - name: Check changed files id: changed-files uses: tj-actions/changed-files@v45 with: files: web/** - name: Setup NodeJS uses: actions/setup-node@v4 if: steps.changed-files.outputs.any_changed == 'true' with: node-version: 20 cache: yarn cache-dependency-path: ./web/package.json - name: Web dependencies if: steps.changed-files.outputs.any_changed == 'true' run: yarn install --frozen-lockfile - name: Web style check 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@v45 with: files: | **.sh **.yaml **.yml **Dockerfile dev/** - name: Super-linter uses: super-linter/super-linter/slim@v7 if: steps.changed-files.outputs.any_changed == 'true' env: BASH_SEVERITY: warning DEFAULT_BRANCH: main GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} IGNORE_GENERATED_FILES: true IGNORE_GITIGNORED_FILES: true VALIDATE_BASH: true VALIDATE_BASH_EXEC: true # FIXME: temporarily disabled until api-docker.yaml's run script is fixed for shellcheck # VALIDATE_GITHUB_ACTIONS: true VALIDATE_DOCKERFILE_HADOLINT: true VALIDATE_XML: true VALIDATE_YAML: true