diff --git a/.github/workflows/lint-monorepo.yaml b/.github/workflows/lint-monorepo.yaml index 9c936fc..ff856e9 100644 --- a/.github/workflows/lint-monorepo.yaml +++ b/.github/workflows/lint-monorepo.yaml @@ -2,9 +2,18 @@ name: Linting and type checking (monorepo) on: workflow_call: inputs: - PACKAGE_WRITER_USERNAME: - required: true + 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 jobs: linting_type_checking: @@ -32,14 +41,26 @@ jobs: run: | yarn install --immutable --inline-builds - - name: Build packages + - name: Setup repostitory run: | - yarn run build:packages + ${{ inputs.SETUP_REPO_SCRIPT }} - name: Lint source code (eslint) run: | - yarn run lint + 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: | + yarn run test --ci --passWithNoTests --coverage + + - name: Static code analysis with SonarQube + uses: https://github.com/SonarSource/sonarqube-scan-action@v5 + if: ${{ inputs.SONARQUBE_ENABLED == true }} + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ vars.SONAR_HOST_URL }} diff --git a/.github/workflows/lint-standalone.yaml b/.github/workflows/lint-standalone.yaml new file mode 100644 index 0000000..835071f --- /dev/null +++ b/.github/workflows/lint-standalone.yaml @@ -0,0 +1,65 @@ +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 + +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: | + yarn run test --ci --passWithNoTests --coverage + + - name: Static code analysis with SonarQube + uses: https://github.com/SonarSource/sonarqube-scan-action@v5 + if: ${{ inputs.SONARQUBE_ENABLED == true }} + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ vars.SONAR_HOST_URL }} + + # TODO add dependency scanning / graph here