chore(td): change gh workflow to test only changed files #2420
Workflow file for this run
This file contains 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: Main workflow | |
# The event triggers are configured as following: | |
# - on branch main, trigger the workflow on every push | |
# - on any pull request, trigger the workflow | |
# This is to avoid running the workflow twice on pull requests. | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
build_lint_and_test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node (uses version in .nvmrc) | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'pnpm' | |
- name: Install pnpm | |
uses: pnpm/[email protected] | |
id: pnpm-install | |
with: | |
run_install: false | |
- name: Install dependencies | |
run: pnpm install | |
- name: Get changed directories | |
id: changed_dirs | |
run: | | |
echo "::set-output name=dirs::$(git diff --name-only ${{ github.sha }} ${{ github.event.before }} | xargs -L 1 dirname | uniq | xargs)" | |
- name: Running linters and tests for changed directories | |
if: steps.changed_dirs.outputs.dirs != '' | |
run: | | |
for DIR in ${{ steps.changed_dirs.outputs.dirs }}; do | |
if [ -d "$DIR" ]; then | |
echo "Running tests in $DIR" | |
(cd $DIR && pnpm jest) || exit 1 | |
fi | |
done |