cache/.github/workflows/workflow.yml

144 lines
3.6 KiB
YAML
Raw Normal View History

name: Tests
2019-11-13 04:48:02 +07:00
2019-10-31 01:48:49 +07:00
on:
pull_request:
2019-11-08 08:02:06 +07:00
branches:
2020-07-15 21:36:12 +07:00
- main
- releases/**
2019-11-08 08:02:06 +07:00
paths-ignore:
- '**.md'
2019-10-31 01:48:49 +07:00
push:
branches:
2020-07-15 21:36:12 +07:00
- main
- releases/**
paths-ignore:
2019-11-01 21:22:36 +07:00
- '**.md'
2019-10-31 01:48:49 +07:00
jobs:
2020-02-14 00:38:56 +07:00
# Build and unit test
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
2019-10-31 01:48:49 +07:00
steps:
2020-02-14 00:38:56 +07:00
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
2020-02-14 00:38:56 +07:00
- name: Determine npm cache directory
2019-11-13 05:48:19 +07:00
id: npm-cache
run: |
echo "::set-output name=dir::$(npm config get cache)"
2020-02-14 00:38:56 +07:00
- name: Restore npm cache
2020-07-16 22:01:23 +07:00
uses: actions/cache@v2
2019-11-13 05:48:19 +07:00
with:
path: ${{ steps.npm-cache.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
2019-10-31 01:48:49 +07:00
- run: npm ci
- name: Prettier Format Check
run: npm run format-check
2019-11-13 04:48:02 +07:00
- name: ESLint Check
run: npm run lint
2019-10-31 01:48:49 +07:00
- name: Build & Test
run: npm run test
2020-02-14 00:38:56 +07:00
# End to end save and restore
2020-04-08 10:37:50 +07:00
test-save:
2020-02-14 00:38:56 +07:00
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
2020-04-08 10:41:38 +07:00
fail-fast: false
2020-02-14 00:38:56 +07:00
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Generate files in working directory
2020-02-14 00:38:56 +07:00
shell: bash
2020-04-08 10:28:05 +07:00
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
2020-02-14 00:38:56 +07:00
- name: Save cache
uses: ./
with:
key: test-${{ runner.os }}-${{ github.run_id }}
path: |
test-cache
~/test-cache
2020-04-08 10:37:50 +07:00
test-restore:
needs: test-save
2020-02-14 00:38:56 +07:00
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
2020-04-08 10:41:38 +07:00
fail-fast: false
2020-02-14 00:38:56 +07:00
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
2020-02-14 00:38:56 +07:00
shell: bash
2020-04-08 10:28:05 +07:00
run: __tests__/verify-cache-files.sh ${{ runner.os }} test-cache
- name: Verify cache files outside working directory
2020-04-08 10:28:05 +07:00
shell: bash
run: __tests__/verify-cache-files.sh ${{ runner.os }} ~/test-cache
2020-02-14 00:38:56 +07:00
# 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
2020-04-08 10:28:05 +07:00
run: __tests__/create-cache-files.sh proxy test-cache
2020-02-14 00:38:56 +07:00
- 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
2020-04-08 10:28:05 +07:00
run: __tests__/verify-cache-files.sh proxy test-cache