diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml index b303360aff..33b810655b 100644 --- a/.github/workflows/pull-requests.yml +++ b/.github/workflows/pull-requests.yml @@ -10,19 +10,20 @@ ############################################################################## name: PR Workflow + on: pull_request: branches: - '**' env: - CODECOV_UNIQUE_NAME: CODECOV_UNIQUE_NAME-${{ github.run_id }}-${{ github.run_number }} - + CODECOV_UNIQUE_NAME: CODECOV_UNIQUE_NAME-${{ github.run_id }}-${{ github.run_number }} + jobs: Continuous-Integration: - name: Performs linting, formatting, type-checking and testing on the application + name: Performs linting, formatting, type-checking, and testing on the application runs-on: ubuntu-latest steps: - name: Checkout the Repository @@ -31,47 +32,64 @@ jobs: - name: Install Dependencies run: npm install --legacy-peer-deps - - name: Run linting check - run: npm run lint:check - - name: Count number of lines run: | chmod +x ./.github/workflows/countline.py ./.github/workflows/countline.py --lines 1000 --exclude_files src/screens/LoginPage/LoginPage.tsx + - name: Get changed TypeScript files + id: changed-files + uses: tj-actions/changed-files@v40 + - name: Check formatting + if: steps.changed-files.outputs.only_changed != 'true' run: npm run format:check - name: Check for type errors + if: steps.changed-files.outputs.only_changed != 'true' run: npm run typecheck - + - name: Run tests - run: npm run test -- --watchAll=false --coverage - + if: steps.changed-files.outputs.only_changed != 'true' + run: npm run test -- --watchAll=false --coverage + + - name: Run linting check + if: steps.changed-files.outputs.only_changed != 'true' + run: npm run lint:check + + - name: TypeScript compilation for changed files + run: | + for file in ${{ steps.changed-files.outputs.all_files }}; do + if [[ "$file" == *.ts || "$file" == *.tsx ]]; then + npx tsc --noEmit "$file" + fi + done + - name: Present and Upload coverage to Codecov as ${{env.CODECOV_UNIQUE_NAME}} uses: codecov/codecov-action@v3 with: verbose: true fail_ci_if_error: false - name: '${{env.CODECOV_UNIQUE_NAME}}' + name: '${{env.CODECOV_UNIQUE_NAME}}' - name: Test acceptable level of code coverage uses: VeryGoodOpenSource/very_good_coverage@v2 with: path: "./coverage/lcov.info" min_coverage: 95.0 + Graphql-Inspector: - name: Runs Introspection on the github talawa-api repo on the schema.graphql file + name: Runs Introspection on the GitHub talawa-api repo on the schema.graphql file runs-on: ubuntu-latest steps: - name: Checkout the Repository uses: actions/checkout@v3 - + - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '16.14.1' - + - name: resolve dependency run: npm install -g @graphql-inspector/cli