name: Tests on: pull_request: branches: - main - releases/** push: branches: - main - releases/** jobs: # Build and unit test build: strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Node.js 20.x uses: actions/setup-node@v3 with: node-version: 20.x cache: npm - 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 # End to end save and restore test-save: needs: build strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Generate files in working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }}-save test-cache - name: Generate files outside working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }}-save ~/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, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - 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 }}-save test-cache - name: Verify cache files outside working directory shell: bash run: __tests__/verify-cache-files.sh ${{ runner.os }}-save ~/test-cache # End to end with save-always test-save-always: needs: build strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} continue-on-error: true steps: - name: Checkout uses: actions/checkout@v3 - name: Save cache id: save-always uses: ./ with: key: test-${{ runner.os }}-${{ github.run_id }}.${{ github.run_attempt }} path: test-cache save-always: true - name: Generate files shell: bash run: | __tests__/create-cache-files.sh ${{ runner.os }}-save-always test-cache exit 1 test-save-always-restore: needs: test-save-always strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Restore cache uses: ./ with: key: test-${{ runner.os }}-${{ github.run_id }}.${{ github.run_attempt }} path: test-cache - name: Verify cache run: __tests__/verify-cache-files.sh ${{ runner.os }}-save-always test-cache # End to end with proxy test-proxy-save: needs: build runs-on: ubuntu-latest container: image: ubuntu:latest options: --dns 127.0.0.1 services: squid-proxy: image: ubuntu/squid:latest ports: - 3128:3128 env: https_proxy: http://squid-proxy:3128 steps: - name: Checkout uses: actions/checkout@v3 - 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: ubuntu/squid:latest ports: - 3128:3128 env: https_proxy: http://squid-proxy:3128 steps: - name: Checkout uses: actions/checkout@v3 - 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