name: CI # Triggers the workflow on push or pull request events but only for the master branch on: push: branches: [master] pull_request: branches: [master] jobs: setup: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x] steps: - name: checkout uses: actions/checkout@v2 - name: cache yarn.lock uses: actions/cache@v2 with: path: package-temp-dir key: lock-${{ github.sha }} - name: create yarn.lock run: yarn generate-lock-entry - name: hack for single file run: | if [ ! -d "package-temp-dir" ]; then mkdir package-temp-dir fi cp yarn.lock package-temp-dir - name: cache node_modules id: node_modules_cache_id uses: actions/cache@v2 with: path: node_modules key: node_modules-${{ hashFiles('**/package-temp-dir/yarn.lock') }} - name: install if: steps.node_modules_cache_id.outputs.cache-hit != 'true' run: yarn test: runs-on: ubuntu-latest needs: [setup] steps: - uses: actions/checkout@v2 - name: Restore cache from yarn.lock uses: actions/cache@v2 with: path: package-temp-dir key: lock-${{ github.sha }} - name: Restore cache from node_modules uses: actions/cache@v2 with: path: node_modules key: node_modules-${{ hashFiles('**/package-temp-dir/yarn.lock') }} - name: Run Unit Test run: | export NODE_OPTIONS="--max_old_space_size=4096" yarn test build: runs-on: ubuntu-latest needs: [setup] steps: - uses: actions/checkout@v2 - name: Restore cache from yarn.lock uses: actions/cache@v2 with: path: package-temp-dir key: lock-${{ github.sha }} - name: Restore cache from node_modules uses: actions/cache@v2 with: path: node_modules key: node_modules-${{ hashFiles('**/package-temp-dir/yarn.lock') }} - name: Run Build run: yarn build