From b8f3453d3c695582749f25baae9d7dcd26e11b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 26 Aug 2020 11:53:06 -0400 Subject: [PATCH] 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 --- .github/workflows/ci.yml | 48 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 877c5a9b0d9a..ceb48cb8ca91 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,15 +1,50 @@ -name: Node CI +name: CI on: [push, pull_request] jobs: - test: + prepare-yarn-cache: + name: Prepare 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 + 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 run: | make -j test-ci-coverage @@ -19,6 +54,8 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} legacy-node-version-test: + name: Test on Node.js + needs: prepare-yarn-cache runs-on: ubuntu-latest strategy: matrix: @@ -28,6 +65,13 @@ jobs: uses: actions/checkout@v2 - name: Use Node.js latest 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 run: | BABEL_ENV=test-legacy make -j bootstrap