| 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 |