name: Tests on: pull_request: branches: - master paths-ignore: - '**.md' push: branches: - master paths-ignore: - '**.md' jobs: # Build and unit test build: strategy: matrix: os: [ubuntu-latest, ubuntu-16.04] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: '12.x' - name: Determine npm cache directory id: npm-cache run: | echo "::set-output name=dir::$(npm config get cache)" - name: Restore npm cache uses: actions/cache@v1 with: path: ${{ steps.npm-cache.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - run: npm ci - name: Prettier Format Check run: npm run format-check - name: ESLint Check run: npm run lint - name: Build & Test run: npm run test - name: Ensure dist/ folder is up-to-date if: ${{ runner.os == 'Linux' }} shell: bash run: | npm run build if [ "$(git status --porcelain | wc -l)" -gt "0" ]; then echo "Detected uncommitted changes after build. See status below:" git diff exit 1 fi # End to end save and restore test-save: strategy: matrix: os: [ubuntu-latest, ubuntu-16.04] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v2 - name: Generate files in working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }} test-cache - name: Generate files outside working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }} ~/test-cache - name: Save cache uses: ./ with: key: test-${{ runner.os }}-${{ github.run_id }} path: | test-cache ~/test-cache test-restore: needs: test-save strategy: matrix: os: [ubuntu-latest, ubuntu-16.04] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v2 - name: Restore cache uses: ./ with: key: test-${{ runner.os }}-${{ github.run_id }} path: | test-cache ~/test-cache - name: Verify cache files in working directory shell: bash run: __tests__/verify-cache-files.sh ${{ runner.os }} test-cache - name: Verify cache files outside working directory shell: bash run: __tests__/verify-cache-files.sh ${{ runner.os }} ~/test-cache # End to end with proxy test-proxy-save: runs-on: ubuntu-latest container: image: ubuntu:latest options: --dns 127.0.0.1 services: squid-proxy: image: datadog/squid:latest ports: - 3128:3128 env: https_proxy: http://squid-proxy:3128 steps: - name: Checkout uses: actions/checkout@v2 - name: Generate files run: __tests__/create-cache-files.sh proxy test-cache - name: Save cache uses: ./ with: key: test-proxy-${{ github.run_id }} path: test-cache test-proxy-restore: needs: test-proxy-save runs-on: ubuntu-latest container: image: ubuntu:latest options: --dns 127.0.0.1 services: squid-proxy: image: datadog/squid:latest ports: - 3128:3128 env: https_proxy: http://squid-proxy:3128 steps: - name: Checkout uses: actions/checkout@v2 - name: Restore cache uses: ./ with: key: test-proxy-${{ github.run_id }} path: test-cache - name: Verify cache run: __tests__/verify-cache-files.sh proxy test-cache