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 LINT_SCRIPT: required: false type: string default: yarn run lint CHECK_TYPES_SCRIPT: required: false type: string default: yarn run check-types INSTALL_SCRIPT: required: false type: string default: yarn install --immutable --inline-builds NODE_VERSION: required: false type: string default: "24" jobs: linting_type_checking: runs-on: ubuntu-latest env: NO_YARN_POSTINSTALL: 1 FONTAWESOME_PACKAGE_TOKEN: ${{ secrets.FONTAWESOME_PACKAGE_TOKEN }} TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} TURBO_API: ${{ vars.TURBO_API }} TURBO_TEAM: ${{ vars.TURBO_TEAM }} TURBO_URL: ${{ vars.TURBO_URL }} steps: - name: Checkout repository uses: actions/checkout@v5 - name: Set up Node.js and Corepack uses: actions/setup-node@v6 with: node-version: ${{ inputs.NODE_VERSION }} - name: Enable Corepack run: | corepack enable - name: Install dependencies run: | ${{ inputs.INSTALL_SCRIPT }} - name: Setup repostitory run: | ${{ inputs.SETUP_REPO_SCRIPT }} - name: Lint source code (eslint) run: | ${{ inputs.LINT_SCRIPT }} - name: Static type checking (TypeScript) run: | ${{ inputs.CHECK_TYPES_SCRIPT }} - 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