chore: improve Yarn 2 cache on CI (#11781)
* chore: add cache actions for yarn * chore: validate yarn cache before CI jobs * chore: remove restore-keys as cache-hit must be true * chore: disable post install scripts in yarn-cache validate * chore: use pnp linker in validate-yarn-cache step * chore: add job names
This commit is contained in:
parent
2e20f1b8a6
commit
b8f3453d3c
48
.github/workflows/ci.yml
vendored
48
.github/workflows/ci.yml
vendored
@ -1,15 +1,50 @@
|
|||||||
name: Node CI
|
name: CI
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
prepare-yarn-cache:
|
||||||
|
name: Prepare Cache
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Use Node.js latest
|
- name: Use Node.js latest
|
||||||
uses: actions/setup-node@v2-beta
|
uses: actions/setup-node@v2-beta
|
||||||
|
- name: Get yarn cache directory path
|
||||||
|
id: yarn-cache-dir-path
|
||||||
|
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
id: yarn-cache
|
||||||
|
with:
|
||||||
|
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-yarn-
|
||||||
|
- name: Update Yarn cache
|
||||||
|
if: steps.yarn-cache.outputs.cache-hit != 'true'
|
||||||
|
env:
|
||||||
|
YARN_ENABLE_SCRIPTS: false # disable post-install scripts
|
||||||
|
YARN_NODE_LINKER: pnp # use pnp linker for better performance: it meant to update yarn cache only
|
||||||
|
run: |
|
||||||
|
yarn install --immutable
|
||||||
|
|
||||||
|
test-coverage:
|
||||||
|
name: Test on Node.js Latest
|
||||||
|
needs: prepare-yarn-cache
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Use Node.js latest
|
||||||
|
uses: actions/setup-node@v2-beta
|
||||||
|
- name: Get yarn cache directory path
|
||||||
|
id: yarn-cache-dir-path
|
||||||
|
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
|
||||||
- name: Generate coverage report
|
- name: Generate coverage report
|
||||||
run: |
|
run: |
|
||||||
make -j test-ci-coverage
|
make -j test-ci-coverage
|
||||||
@ -19,6 +54,8 @@ jobs:
|
|||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
|
||||||
legacy-node-version-test:
|
legacy-node-version-test:
|
||||||
|
name: Test on Node.js
|
||||||
|
needs: prepare-yarn-cache
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
@ -28,6 +65,13 @@ jobs:
|
|||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Use Node.js latest
|
- name: Use Node.js latest
|
||||||
uses: actions/setup-node@v2-beta # Build Babel on latest node versions
|
uses: actions/setup-node@v2-beta # Build Babel on latest node versions
|
||||||
|
- name: Get yarn cache directory path
|
||||||
|
id: yarn-cache-dir-path
|
||||||
|
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
BABEL_ENV=test-legacy make -j bootstrap
|
BABEL_ENV=test-legacy make -j bootstrap
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user