diff --git a/.github/actions/install/action.yml b/.github/actions/install/action.yml index 02972a98..499904cb 100644 --- a/.github/actions/install/action.yml +++ b/.github/actions/install/action.yml @@ -11,23 +11,58 @@ inputs: runs: using: composite steps: + - name: ⚙️ Enable Corepack + run: corepack enable + shell: bash + - name: Cache prep - id: yarn-cache-dir-path - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + id: yarn-config + run: | + echo "CACHE_FOLDER=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT shell: bash + env: + YARN_ENABLE_GLOBAL_CACHE: 'false' - - name: Cache yarn + - name: Restore yarn cache + uses: actions/cache@v3 + with: + path: ${{ steps.yarn-config.outputs.CACHE_FOLDER }} + key: yarn-download-cache-${{ hashFiles(format('{0}/yarn.lock', inputs.cwd), format('{0}/.yarnrc.yml', inputs.cwd)) }} + restore-keys: | + yarn-download-cache- + + - name: Restore node_modules + id: yarn-nm-cache + uses: actions/cache@v3 + with: + path: ${{ inputs.cwd }}/**/node_modules + key: yarn-nm-cache-${{ runner.os }}-${{ inputs.node-version }}-${{ github.ref }}-${{ hashFiles(format('{0}/yarn.lock', inputs.cwd), format('{0}/.yarnrc.yml', inputs.cwd)) }} + + - name: Restore yarn install state + id: yarn-install-state-cache uses: actions/cache@v3 with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: cache-${{ inputs.node-version }}-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + path: ${{ inputs.cwd }}/.yarn/ci-cache + key: yarn-install-state-cache-${{ runner.os }}-${{ inputs.node-version }}-${{ github.ref }}-${{ hashFiles(format('{0}/yarn.lock', inputs.cwd), format('{0}/.yarnrc.yml', inputs.cwd)) }} - name: Install dependencies in production mode if: ${{ inputs.prod-context == 'true' }} run: yarn install --immutable --immutable-cache --check-cache --frozen-lockfile --prod shell: bash + env: + # Overrides/align yarnrc.yml options (v3, v4) for a CI context + YARN_ENABLE_GLOBAL_CACHE: 'false' # Use local cache folder to keep downloaded archives + YARN_NM_MODE: 'hardlinks-local' # Reduce node_modules size + YARN_INSTALL_STATE_PATH: '.yarn/ci-cache/install-state.gz' # Might speed up resolution step when node_modules present + # Other environment variables + HUSKY: '0' # By default do not run HUSKY install - name: Install dependencies in integration mode if: ${{ inputs.prod-context == 'false' }} run: yarn install --immutable --immutable-cache --check-cache --frozen-lockfile shell: bash + env: + # Overrides/align yarnrc.yml options (v3, v4) for a CI context + YARN_ENABLE_GLOBAL_CACHE: 'false' # Use local cache folder to keep downloaded archives + YARN_NM_MODE: 'hardlinks-local' # Reduce node_modules size + YARN_INSTALL_STATE_PATH: '.yarn/ci-cache/install-state.gz' # Might speed up resolution step when node_modules present diff --git a/.github/linters/.cspell.json b/.github/linters/.cspell.json index 1292a1ef..6ea50638 100644 --- a/.github/linters/.cspell.json +++ b/.github/linters/.cspell.json @@ -141,6 +141,7 @@ "weblinks", "wlens", "xmlbuilder", + "yarnrc", "\u00c0gain" ] } \ No newline at end of file