name: Node CI on: pull_request: types: [opened, synchronize] jobs: lint: runs-on: ubuntu-latest strategy: matrix: node-version: [16.x] steps: - name: Fetch commit count env: PR_COMMIT_COUNT: ${{ github.event.pull_request.commits }} run: | echo "FETCH_DEPTH=$(($PR_COMMIT_COUNT + 1))" >> $GITHUB_ENV - uses: actions/checkout@v3 with: fetch-depth: ${{ env.FETCH_DEPTH }} - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: Cache node modules id: cache-dep uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: node_modules key: ${{ runner.os }}-lint-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - name: Install dependencies if: steps.cache-dep.outputs.cache-hit != 'true' run: npm ci - name: Collect changed files run: | mkdir ~/tmp/ git diff ${{ github.event.pull_request.base.sha }} ${{ github.sha }} --diff-filter=ACM --name-only --relative '*src/**/*.ts' > ~/tmp/changed_files echo -e "Changed files: \n$(cat ~/tmp/changed_files)" - name: Lint run: npx eslint $(cat ~/tmp/changed_files) - name: Check types run: npm run checktype build: runs-on: ubuntu-latest strategy: matrix: node-version: [16.x] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: Cache node modules id: cache-dep 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: Install dependencies if: steps.cache-dep.outputs.cache-hit != 'true' run: npm ci - name: Build release run: npm run release - name: Test generated DTS run: npm run test:dts - name: Unit Test run: npm run test