# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: Node.js CI on: push: branches: [ master ] pull_request: branches: [ master ] env: CYPRESS_CACHE_FOLDER: cypress/cache jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [12.x, 14.x, 16.8] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - name: Cache Node Modules id: cache-node-modules uses: actions/cache@v2 with: path: node_modules key: node-modules-${{ hashFiles('package-lock.json') }} - name: Cache Cypress binary id: cache-cypress-binary uses: actions/cache@v2 with: path: cypress/cache key: cypress-binary-${{ hashFiles('package-lock.json') }} - name: Install dependencies if: | steps.cache-node-modules.outputs.cache-hit != 'true' || steps.cache-cypress-binary.outputs.cache-hit != 'true' run: npm ci - name: Lint code for errors only run: npm run lint-errors - name: Run all tests run: npm test env: CI: true artifact-bundle: runs-on: ubuntu-latest strategy: matrix: node-version: [12.x, 14.x, 16.x] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - name: Cache Node Modules # artifact-bundle test is node-only, no Cypress id: cache-node-modules uses: actions/cache@v2 with: path: node_modules key: node-modules-${{ hashFiles('package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci - name: Build and Run all artifact tests run: npm run test:artifact release: if: contains(github.ref, 'master') runs-on: ubuntu-latest needs: [build] steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v2 with: node-version: 14.x