cache/.github/workflows/workflow.yml
2025-04-11 14:01:08 +05:30

198 lines
5.3 KiB
YAML

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@v4
- name: Setup Node.js 20.x
uses: actions/setup-node@v4
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:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- 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, windows-latest, macOS-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- 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: ubuntu/squid:latest
ports:
- 3128:3128
env:
https_proxy: http://squid-proxy:3128
steps:
- name: Checkout
uses: actions/checkout@v4
- 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@v4
- 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
# GCS integration tests
test-gcs-save:
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' || github.event_name == 'push'
env:
GCS_BUCKET: ${{ secrets.GCS_TEST_BUCKET }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up GCP credentials
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
- name: Generate files
run: __tests__/create-cache-files.sh gcs test-gcs-cache
- name: Save cache to GCS
uses: ./
with:
key: test-gcs-${{ github.run_id }}
path: test-gcs-cache
gcs-bucket: ${{ env.GCS_BUCKET }}
test-gcs-restore:
needs: test-gcs-save
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' || github.event_name == 'push'
env:
GCS_BUCKET: ${{ secrets.GCS_TEST_BUCKET }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up GCP credentials
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
- name: Restore cache from GCS
uses: ./
with:
key: test-gcs-${{ github.run_id }}
path: test-gcs-cache
gcs-bucket: ${{ env.GCS_BUCKET }}
- name: Verify GCS cache
run: __tests__/verify-cache-files.sh gcs test-gcs-cache
test-gcs-fallback:
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' || github.event_name == 'push'
env:
GCS_BUCKET: "non-existent-bucket-for-test"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Generate files
run: __tests__/create-cache-files.sh fallback test-fallback-cache
- name: Save with GCS fallback
uses: ./
with:
key: test-fallback-${{ github.run_id }}
path: test-fallback-cache
gcs-bucket: ${{ env.GCS_BUCKET }}
- name: Restore with GCS fallback
uses: ./
with:
key: test-fallback-${{ github.run_id }}
path: test-fallback-cache
gcs-bucket: ${{ env.GCS_BUCKET }}
- name: Verify Fallback cache
run: __tests__/verify-cache-files.sh fallback test-fallback-cache