docs: sample app #18828
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Run Unit & Integration Tests | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - staging/** | |
| pull_request: | |
| merge_group: | |
| concurrency: | |
| group: tests-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| should-run: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| should_skip: ${{ steps.check.outputs.should_skip }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| filters: | | |
| docs_only: | |
| - 'docs/**' | |
| non_docs: | |
| - '**' | |
| - '!docs/**' | |
| - name: Determine if should skip | |
| id: check | |
| run: | | |
| # Run on PRs only if not docs only | |
| # Always run on merge queue | |
| # Always run on direct pushes to master (not merge queue bot) | |
| IS_PR="${{ github.event_name == 'pull_request' }}" | |
| IS_MERGE_QUEUE="${{ github.event_name == 'merge_group' }}" | |
| IS_DIRECT_PUSH_TO_MASTER="${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.actor != 'github-merge-queue[bot]' }}" | |
| IS_DOCS_ONLY="${{ steps.filter.outputs.docs_only == 'true' && steps.filter.outputs.non_docs != 'true' }}" | |
| SHOULD_SKIP="true" | |
| # Always run on merge queue and direct push to master | |
| if [[ "$IS_MERGE_QUEUE" == "true" || "$IS_DIRECT_PUSH_TO_MASTER" == "true" ]]; then | |
| SHOULD_SKIP="false" | |
| # Run on PR only if not docs only | |
| elif [[ "$IS_PR" == "true" && "$IS_DOCS_ONLY" != "true" ]]; then | |
| SHOULD_SKIP="false" | |
| fi | |
| echo "should_skip=$SHOULD_SKIP" >> $GITHUB_OUTPUT | |
| tests: | |
| needs: should-run | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| if: needs.should-run.outputs.should_skip != 'true' | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: '0' | |
| - name: Use Node.js | |
| if: needs.should-run.outputs.should_skip != 'true' | |
| uses: actions/setup-node@v4 | |
| with: | |
| cache: 'npm' | |
| node-version-file: '.nvmrc' | |
| - run: npm ci | |
| if: needs.should-run.outputs.should_skip != 'true' | |
| - run: npm run ts-build | |
| if: needs.should-run.outputs.should_skip != 'true' | |
| - run: npm run test:unit -- --exclude packages/cli/ | |
| if: needs.should-run.outputs.should_skip != 'true' | |
| - run: npm run test:integration | |
| if: needs.should-run.outputs.should_skip != 'true' |