name: JavaScript, CSS and Markdown Linting on: pull_request: push: branches: [trunk] permissions: actions: write checks: write pull-requests: read jobs: # cache node and modules Setup: name: Setup runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache node_modules id: cache-node-modules uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: node_modules key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - name: Setup node version and npm cache uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'npm' - name: Install Node Dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci --no-optional JSLintingCheck: name: Lint JavaScript needs: Setup runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache node_modules id: cache-node-modules uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: node_modules key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - name: Setup node version uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - name: Save code linting report JSON run: npm run lint:js:report # Continue to the next step even if this fails continue-on-error: true - name: Upload ESLint report uses: actions/upload-artifact@v3.1.2 with: name: eslint_report.json path: eslint_report.json - name: Annotate code linting results uses: ataylorme/eslint-annotate-action@v2 with: repo-token: '${{ secrets.GITHUB_TOKEN }}' report-json: 'eslint_report.json' CSSLintingCheck: name: Lint CSS needs: Setup runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache node_modules id: cache-node-modules uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: node_modules key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - name: Setup node version uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - name: Lint CSS run: npm run lint:css MDLintingCheck: name: Lint MD needs: Setup runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup node version and npm cache uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'npm' - name: Install Node dependencies run: npm ci --no-optional - name: Lint MD run: npm run lint:md:docs