-
-
Save ThatGuySam/663e2d7b798bbedc41a0ff150858ba2c to your computer and use it in GitHub Desktop.
Revisions
-
belgattitude revised this gist
May 22, 2023 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -65,6 +65,7 @@ runs: run: corepack enable - uses: pnpm/[email protected] if: ${{ inputs.enable-corepack }} == 'false' # If you're not setting the packageManager field in package.json, add the version here # with: # version: 8.5.1 -
belgattitude revised this gist
May 22, 2023 . 1 changed file with 26 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -30,23 +30,44 @@ With warmed cache: ±40s + (add ±10s for compression). Crafted from benchmarks Create a file in `.github/actions/pnpm-install/action.yml` and paste ```yml ######################################################################################## # "pnpm install" composite action for pnpm 7/8+ # #--------------------------------------------------------------------------------------# # Requirement: @setup/node should be run before # # # # Usage in workflows steps: # # # # - name: 📥 Monorepo install # # uses: ./.github/actions/pnm-install # # with: # # enable-corepack: false # (default) # # # # Reference: # # - latest: https://gist.github.com/belgattitude/838b2eba30c324f1f0033a797bab2e31 # ######################################################################################## name: 'Monorepo install (pnpm)' description: 'Run pnpm install with cache enabled' inputs: enable-corepack: description: 'Enable corepack' required: false default: 'false' runs: using: 'composite' steps: - name: ⚙️ Enable Corepack if: ${{ inputs.enable-corepack }} == 'true' shell: bash working-directory: ${{ inputs.cwd }} run: corepack enable - uses: pnpm/[email protected] # If you're not setting the packageManager field in package.json, add the version here # with: # version: 8.5.1 - name: Expose pnpm config(s) through "$GITHUB_OUTPUT" id: pnpm-config -
belgattitude revised this gist
May 22, 2023 . 1 changed file with 13 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -102,6 +102,8 @@ To use it in the workflows ## Recommended .npmrc > Ensure you're running a recent pnpm version (or adapt) ``` ## PNPM related ############### ## https://pnpm.io/npmrc # @@ -130,15 +132,23 @@ dedupe-peer-dependents=true # https://pnpm.io/npmrc#resolve-peers-from-workspace-root resolve-peers-from-workspace-root=true # default to 'lowest' in v8.5.0 # set to highest for reasons specified here: https://github.com/pnpm/pnpm/issues/6463 # https://pnpm.io/npmrc#resolution-mode resolution-mode=highest # Default in 8.1.0 to fix issues with root/workspaces hoisting # https://pnpm.io/npmrc#dedupe-direct-deps dedupe-direct-deps=false # Pinlock to exact version (default is '^') # https://pnpm.io/npmrc#save-prefix # see also how save-workspace-protocol affect this https://pnpm.io/npmrc#save-workspace-protocol save-prefix='' # Most of the time, you want to use the rolling protocol for monorepos # https://pnpm.io/npmrc#save-workspace-protocol save-workspace-protocol=rolling ``` ## Notes -
belgattitude revised this gist
May 2, 2023 . 1 changed file with 35 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -4,7 +4,7 @@ Although @setup/node as a [built-in cache option](https://github.com/actions/set ## Requirements pnpm v7 or v8 (not using pnpm ? see the corresponding [yarn action gist](https://gist.github.com/belgattitude/042f9caf10d029badbde6cf9d43e400a)) ## Bench @@ -46,7 +46,7 @@ runs: - uses: pnpm/[email protected] # If you're not setting the packageManager field in package.json, add the version here # with: # version: 8.4.0 - name: Expose pnpm config(s) through "$GITHUB_OUTPUT" id: pnpm-config @@ -103,10 +103,42 @@ To use it in the workflows ## Recommended .npmrc ``` ## PNPM related ############### ## https://pnpm.io/npmrc # ############################### # Not always possible to be strict, but if it works for you, keep it to true. # https://pnpm.io/next/npmrc#strict-peer-dependencies strict-peer-dependencies=false # Auto install peers should be false to avoid downloading # extraneous deps. If the install fails, try first to explicitly add # the missing deps in your package. Set it to true at last resort # (when the problem comes from upstream dependencies). The best is false. # https://pnpm.io/npmrc#auto-install-peers auto-install-peers=false # Helps locating duplicates, default in v8 # https://pnpm.io/next/npmrc#use-lockfile-v6 use-lockfile-v6=true # Will fix duplicates due to peer-dependencies (>=7.29.0), default in v8 # https://github.com/pnpm/pnpm/releases/tag/v7.29.0 dedupe-peer-dependents=true # Helps with peer-deps (>=7.23.0), default in v8 # https://pnpm.io/npmrc#resolve-peers-from-workspace-root resolve-peers-from-workspace-root=true # https://pnpm.io/npmrc#resolution-mode resolution-mode=lowest # Default in 8.1.0 to fix issues with root/workspaces hoisting # https://github.com/pnpm/pnpm/releases/tag/v8.1.0 dedupe-direct-deps=false save-workspace-protocol=rolling save-prefix='' ``` ## Notes -
belgattitude revised this gist
Mar 2, 2023 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -77,7 +77,7 @@ runs: - name: Install dependencies shell: bash run: pnpm install --frozen-lockfile --prefer-offline env: # Other environment variables HUSKY: '0' # By default do not run HUSKY install -
belgattitude revised this gist
Feb 7, 2023 . 1 changed file with 3 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -134,7 +134,7 @@ Link: https://docs.github.com/en/actions/using-workflows/caching-dependencies-to Here's an example (feel free to adapt if you need to preserse some things, ie `gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 | grep pnpm` will only clear pnpm related caches) ```yaml # https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#force-deleting-cache-entries name: Cleanup caches for closed branches on: @@ -150,12 +150,12 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Cleanup run: | gh extension install actions/gh-actions-cache REPO=${{ github.repository }} BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge" echo "Fetching list of cache key" cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 ) -
belgattitude revised this gist
Jan 21, 2023 . 1 changed file with 55 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -120,3 +120,58 @@ Post-install  ### Cleanup caches When a PR is closed or merged the best is to remove install cache rather than letting github reach the max (10GB) and prune.  Link: https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#force-deleting-cache-entries Here's an example (feel free to adapt if you need to preserse some things, ie `gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 | grep pnpm` will only clear pnpm related caches) ```yaml # .github/workflows/clean-up-pr-caches.yml name: Cleanup caches for closed branches on: pull_request: types: - closed workflow_dispatch: jobs: cleanup: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v3 - name: Cleanup yarn caches run: | gh extension install actions/gh-actions-cache REPO=${{ github.repository }} BRANCH=${{ github.ref }} echo "Fetching list of cache key" cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 ) ## Setting this to not fail the workflow while deleting cache keys. set +e echo "Deleting caches..." for cacheKey in $cacheKeysForPR do gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm done echo "Done" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} ``` -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 3 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -44,6 +44,9 @@ runs: steps: - uses: pnpm/[email protected] # If you're not setting the packageManager field in package.json, add the version here # with: # version: 7.16.1 - name: Expose pnpm config(s) through "$GITHUB_OUTPUT" id: pnpm-config -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 1 addition and 7 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -38,11 +38,6 @@ Create a file in `.github/actions/pnpm-install/action.yml` and paste name: 'Monorepo install (pnpm)' description: 'Run pnpm install' runs: using: 'composite' @@ -82,8 +77,7 @@ runs: run: pnpm install --frozen-lockfile --strict-peer-dependencies --prefer-offline env: # Other environment variables HUSKY: '0' # By default do not run HUSKY install ``` ### Workflow action -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ ## Why Although @setup/node as a [built-in cache option](https://github.com/actions/setup-node#caching-global-packages-data), it lacks an opportunity [regarding cache persistence](https://github.com/actions/setup-node/issues/325). Depending on usage, the action below might give you faster installs and potentially reduce carbon emissions (♻️🌳❤️). ## Requirements -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ ## Why Although @setup/node as a [built-in cache option](https://github.com/actions/setup-node#caching-global-packages-data) it lacks an opportunity [regarding cache persistence](https://github.com/actions/setup-node/issues/325). Depending on usage, the action below might give you faster installs and potentially reduce carbon emissions (♻️🌳❤️). ## Requirements -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ ## Why Although @setup/node as a [built-in cache option](https://github.com/actions/setup-node#caching-global-packages-data)it lacks an opportunity [regarding cache persistence](https://github.com/actions/setup-node/issues/325). Depending on usage, the action below might give you faster installs and potentially reduce carbon emissions (♻️🌳❤️). ## Requirements -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 1 addition and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,8 +1,6 @@ ## Why Althought @setup/node as a [built-in cache option](https://github.com/actions/setup-node#caching-global-packages-data)it lacks an opportunity [regarding cache persistence](https://github.com/actions/setup-node/issues/325). Depending on usage, the action below might give you faster installs and potentially reduce carbon emissions (♻️🌳❤️). ## Requirements -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -50,7 +50,7 @@ runs: using: 'composite' steps: - uses: pnpm/[email protected].4 - name: Expose pnpm config(s) through "$GITHUB_OUTPUT" id: pnpm-config -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 1 addition and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -2,9 +2,7 @@ ## Why The [@setup/node built-in cache option](https://github.com/actions/setup-node#caching-global-packages-data) is fantastic, but lacks an opportunity [regarding cache persistence](https://github.com/actions/setup-node/issues/325). Depending on usage, the action below might give you faster installs and potentially reduce carbon emissions (♻️🌳❤️). ## Requirements -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 4 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,15 +1,14 @@ > ## Why The [@setup/node built-in cache option](https://github.com/actions/setup-node#caching-global-packages-data) is fantastic, but lacks an opportunity [regarding cache persistence](https://github.com/actions/setup-node/issues/325). Depending on usage, the action below might give you faster installs and potentially reduce carbon emissions (♻️🌳❤️). ## Requirements pnpm v7+ (not using pnpm ? see the corresponding [yarn action gist](https://gist.github.com/belgattitude/042f9caf10d029badbde6cf9d43e400a)) ## Bench -
belgattitude revised this gist
Nov 16, 2022 . 1 changed file with 4 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,6 +7,10 @@ for popular package managers, it discards the cache on every lock file update. T Depending on repo usage, it might reduce the monthly ci-time and decrease the carbon emissions. See also https://github.com/actions/setup-node/issues/325. ## Requirements pnpm v7+ ## Bench Based on the [nextjs-monorepo-example](https://github.com/belgattitude/nextjs-monorepo-example) with pnpm. -
belgattitude revised this gist
Oct 13, 2022 . 1 changed file with 18 additions and 11 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -51,24 +51,32 @@ runs: steps: - uses: pnpm/[email protected] - name: Expose pnpm config(s) through "$GITHUB_OUTPUT" id: pnpm-config shell: bash run: | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Cache rotation keys id: cache-rotation shell: bash run: | echo "YEAR_MONTH=$(/bin/date -u "+%Y%m")" >> $GITHUB_OUTPUT - uses: actions/cache@v3 name: Setup pnpm cache with: path: ${{ steps.pnpm-config.outputs.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-cache-${{ steps.cache-rotation.outputs.YEAR_MONTH }}-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store-cache-${{ steps.cache-rotation.outputs.YEAR_MONTH }}- # Prevent store to grow over time (not needed with yarn) # Note: not perfect as it prune too much in monorepos so the idea # is to use cache-rotation as above. In the future this might work better. #- name: Prune pnpm store # shell: bash # run: pnpm prune store - name: Install dependencies shell: bash @@ -77,7 +85,6 @@ runs: # Other environment variables HUSKY: '0' # By default do not run HUSKY install PRISMA_SKIP_POSTINSTALL_GENERATE: ${{ inputs.skip-prisma-postinstall-generate }} ``` ### Workflow action -
belgattitude revised this gist
Oct 13, 2022 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -5,7 +5,7 @@ While @setup/node has a [built-in cache parameter](https://github.com/actions/setup-node#caching-global-packages-data) for popular package managers, it discards the cache on every lock file update. This composite action allows to run install with (almost always) warm cache. Depending on repo usage, it might reduce the monthly ci-time and decrease the carbon emissions. See also https://github.com/actions/setup-node/issues/325. ## Bench -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -115,4 +115,5 @@ Install Post-install  -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 11 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -105,3 +105,14 @@ strict-peer-dependencies=true # https://pnpm.io/npmrc#auto-install-peers auto-install-peers=false ``` ## Notes Install  Post-install -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 9 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -65,7 +65,7 @@ runs: restore-keys: | ${{ runner.os }}-pnpm-store-cache- # Prevent store to grow over time (different from yarn which prunes when enableGlobalCache is false) - name: Prune pnpm store shell: bash run: pnpm prune store @@ -97,3 +97,11 @@ To use it in the workflows uses: ./.github/actions/pnpm-install ``` ## Recommended .npmrc ``` # https://pnpm.io/next/npmrc#strict-peer-dependencies strict-peer-dependencies=true # https://pnpm.io/npmrc#auto-install-peers auto-install-peers=false ``` -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 2 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -44,10 +44,6 @@ inputs: description: 'Avoid prisma to automatically generate schema on postinstall' required: false default: 'true' runs: using: 'composite' @@ -60,8 +56,7 @@ runs: id: pnpm-cache run: | echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - uses: actions/cache@v3 name: Setup pnpm cache with: @@ -77,8 +72,7 @@ runs: - name: Install dependencies shell: bash run: pnpm install --frozen-lockfile --strict-peer-dependencies --prefer-offline env: # Other environment variables HUSKY: '0' # By default do not run HUSKY install -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -61,7 +61,7 @@ runs: run: | echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" # Diffently from yarn, caching the store is not independent from os/arch. - uses: actions/cache@v3 name: Setup pnpm cache with: -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -60,7 +60,8 @@ runs: id: pnpm-cache run: | echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" # Diffently from yarn, caching the store is no independent from os/arch. - uses: actions/cache@v3 name: Setup pnpm cache with: -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,4 @@ > Not using pnpm ? see the corresponding [yarn action gist](https://gist.github.com/belgattitude/042f9caf10d029badbde6cf9d43e400a) ## Why -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -5,7 +5,7 @@ While @setup/node has a [built-in cache parameter](https://github.com/actions/setup-node#caching-global-packages-data) for popular package managers, it discards the cache on every lock file update. This composite action allows to run install with (almost always) warm cache. That might reduce the monthly ci-time and decrease the carbon emissions. See also https://github.com/actions/setup-node/issues/325. ## Bench -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 5 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,17 +1,19 @@ > Not using pnpm ?, see the [corresponding yarn gist](https://gist.github.com/belgattitude/042f9caf10d029badbde6cf9d43e400a) ## Why While @setup/node has a [built-in cache parameter](https://github.com/actions/setup-node#caching-global-packages-data) for popular package managers, it discards the cache on every lock file update. This composite action allows to run install with (almost always) warm cache. That will reduce the monthly ci-time and decrease the carbon emissions. See also https://github.com/actions/setup-node/issues/325. ## Bench Based on the [nextjs-monorepo-example](https://github.com/belgattitude/nextjs-monorepo-example) with pnpm. A cold cache install on the ci is around ±1m20s. With warmed cache: ±40s + (add ±10s for compression). Crafted from benchmarks results in https://gist.github.com/belgattitude/0ecd26155b47e7be1be6163ecfbb0f0b. Depending on repo (renovatebot...), the slight complexity increase in ci setup might worth it. ## Structure -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 32 additions and 46 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -19,74 +19,68 @@ With warmed cache: 1 minute. Crafted from benchmarks results in https://gist.git . └── .github ├── actions │ └── pnpm-install/action.yml (composite action) └── workflows └── ci.yml (uses: ./.github/actions/pnpm-install) ``` ### Composite action Create a file in `.github/actions/pnpm-install/action.yml` and paste ```yml ####################################################################################### # "pnpm install" composite action # #--------------------------------------------------------------------------------------# # - bench: https://gist.github.com/belgattitude/0ecd26155b47e7be1be6163ecfbb0f0b # ######################################################################################## name: 'Monorepo install (pnpm)' description: 'Run pnpm install' inputs: skip-prisma-postinstall-generate: description: 'Avoid prisma to automatically generate schema on postinstall' required: false default: 'true' playwright-skip-browser-download: description: 'Avoid playwright to download browsers automatically' required: false default: '1' runs: using: 'composite' steps: - uses: pnpm/[email protected] - name: Get pnpm store directory shell: bash id: pnpm-cache run: | echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - uses: actions/cache@v3 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} key: ${{ runner.os }}-pnpm-store-cache-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store-cache- # Prevent store to grow over time (not needed with yarn) - name: Prune pnpm store shell: bash run: pnpm prune store - name: Install dependencies shell: bash run: | pnpm install --frozen-lockfile env: # Other environment variables HUSKY: '0' # By default do not run HUSKY install PRISMA_SKIP_POSTINSTALL_GENERATE: ${{ inputs.skip-prisma-postinstall-generate }} PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: ${{ inputs.playwright-skip-browser-download }} ``` ### Workflow action @@ -103,14 +97,6 @@ To use it in the workflows node-version: ${{ matrix.node-version }} - name: 📥 Monorepo install uses: ./.github/actions/pnpm-install ``` -
belgattitude revised this gist
Oct 10, 2022 . 1 changed file with 2 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,9 +1,7 @@ ## Why While @setup/node has a [built-in cache parameter](https://github.com/actions/setup-node#caching-global-packages-data) for popular package managers, it discards the cache on every lock file update. This composite action allows to run install with (almost always) warm cache. That might reduces the monthly ci-time and decrease the carbon emissions. See also https://github.com/actions/setup-node/issues/325.
NewerOlder