Skip to content

Commit

Permalink
ci: improve yarn 3 cache handling
Browse files Browse the repository at this point in the history
  • Loading branch information
scolladon committed May 11, 2023
1 parent 8f18d54 commit 8726b0a
Show file tree
Hide file tree
Showing 5 changed files with 936 additions and 12 deletions.
52 changes: 45 additions & 7 deletions .github/actions/install/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,61 @@ 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
echo "node-version="node-$(node --version)"" >> $GITHUB_OUTPUT
shell: bash
env:
YARN_ENABLE_GLOBAL_CACHE: 'false'

- name: Restore yarn cache
uses: actions/cache@v3
with:
path: ${{ steps.yarn-config.outputs.CACHE_FOLDER }}
key: yarn-download-cache-${{ hashFiles('**/yarn.lock', '.yarnrc.yml') }}
restore-keys: |
yarn-download-cache-
- name: Restore node_modules
id: yarn-nm-cache
uses: actions/cache@v3
with:
path: node_modules
key: yarn-nm-cache-${{ runner.os }}-${{ steps.yarn-config.outputs.node-version }}-${{ github.ref }}-${{ hashFiles('**/yarn.lock', '.yarnrc.yml') }}

- name: Cache yarn
- 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: .yarn/
key: yarn-install-state-cache-${{ runner.os }}-${{ steps.yarn-config.outputs.node-version }}-${{ github.ref }}-${{ hashFiles('**/yarn.lock', '.yarnrc.yml') }}

- name: Install dependencies in production mode
if: ${{ inputs.prod-context == 'true' }}
run: yarn install --immutable --immutable-cache --check-cache --frozen-lockfile --prod
run: yarn install --immutable --check-cache --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/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
run: yarn install --immutable --check-cache
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/install-state.gz' # Might speed up resolution step when node_modules present
# Other environment variables
HUSKY: '0' # By default do not run HUSKY install
4 changes: 4 additions & 0 deletions .github/linters/.cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,13 @@
"Cherfaoui",
"Colladon",
"Commitlint",
"Corepack",
"corepack",
"FORCEIGNORE",
"FORCEINCLUDE",
"FULLNAME",
"Flexi",
"hardlinks",
"Iframe",
"METAFILE",
"Mehdi",
Expand Down Expand Up @@ -141,6 +144,7 @@
"weblinks",
"wlens",
"xmlbuilder",
"yarnrc",
"\u00c0gain"
]
}
14 changes: 11 additions & 3 deletions .github/workflows/on-pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ jobs:
fetch-depth: 0

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 16

- name: Setup dependencies, cache and install
uses: ./.github/actions/install

- name: Lint commits
Expand Down Expand Up @@ -53,11 +58,14 @@ jobs:
node-version: 16
registry-url: https://registry.npmjs.org/

- name: Setup dependencies, cache and install
uses: ./.github/actions/install

- name: Check outdated dependencies
run: yarn outdated
run: npm outdated

- name: Audit dependencies
run: yarn audit
run: yarn npm audit

megalinter:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -146,7 +154,7 @@ jobs:

- name: Install dependencies in production mode
working-directory: ./plugin
run: yarn install --immutable --immutable-cache --check-cache --frozen-lockfile --prod
run: yarn install --immutable --immutable-cache --check-cache --prod
shell: bash

- name: Install build dependencies
Expand Down
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
/node_modules
/reports
/lib
/.yarn
/.nyc_output
/.yarn/cache
install-state.gz
*-debug.log
*-error.log
sfdx-git-delta-*.tgz
/.nyc_output
stderr*.txt
stdout*.txt
# stryker temp files
Expand Down
873 changes: 873 additions & 0 deletions .yarn/releases/yarn-3.5.1.cjs

Large diffs are not rendered by default.

0 comments on commit 8726b0a

Please sign in to comment.