name: Linting and type checking (standalone) on: workflow_call: inputs: SONARQUBE_ENABLED: required: false type: boolean default: false TESTS_ENABLED: required: false type: boolean default: false SETUP_REPO_SCRIPT: required: false type: string default: yarn run setup TEST_SCRIPT: required: false type: string default: yarn run test --ci --passWithNoTests --coverage jobs: linting_type_checking: runs-on: ubuntu-latest env: NO_YARN_POSTINSTALL: 1 FONTAWESOME_PACKAGE_TOKEN: ${{ secrets.FONTAWESOME_PACKAGE_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v5 - name: Set up Node.js and Corepack uses: actions/setup-node@v4 with: node-version: "22" - name: Enable Corepack run: | corepack enable - name: Install dependencies run: | yarn install --immutable --inline-builds - name: Setup repostitory run: | ${{ inputs.SETUP_REPO_SCRIPT }} - name: Lint source code (eslint) run: | yarn run lint --max-warnings=0 - name: Static type checking (TypeScript) run: | yarn run check-types - name: Run tests if: ${{ inputs.TESTS_ENABLED == true }} run: | ${{ inputs.TEST_SCRIPT }} - name: Static code analysis with SonarQube uses: https://github.com/SonarSource/sonarqube-scan-action@v6 if: ${{ inputs.SONARQUBE_ENABLED == true }} env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_HOST_URL: ${{ vars.SONAR_HOST_URL }} # TODO add dependency scanning / graph here