diff --git a/.github/actions/pnpm-install/action.yml b/.github/actions/pnpm-install/action.yml new file mode 100644 index 000000000..beef65d61 --- /dev/null +++ b/.github/actions/pnpm-install/action.yml @@ -0,0 +1,87 @@ +######################################################################################## +# "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/pnpm-install # +# with: # +# enable-corepack: false # (default) # +# cwd: ${{ github.workspace }}/apps/my-app # (default = '.') # +# # +# Reference: # +# - latest: https://gist.github.com/belgattitude/838b2eba30c324f1f0033a797bab2e31 # +# # +# Versions: # +# - 1.1.0 - 15-07-2023 - Add project custom directory support. # +######################################################################################## + + +name: 'PNPM install' +description: 'Run pnpm install with cache enabled' + +inputs: + enable-corepack: + description: 'Enable corepack' + required: false + default: 'false' + cwd: + description: "Changes node's process.cwd() if the project is not located on the root. Default to process.cwd()" + required: false + default: '.' + +runs: + using: 'composite' + + steps: + - name: ⚙️ Enable Corepack + if: ${{ inputs.enable-corepack == 'true' }} + shell: bash + working-directory: ${{ inputs.cwd }} + run: | + corepack enable + echo "corepack enabled" + + - uses: pnpm/action-setup@v2.2.4 + if: ${{ inputs.enable-corepack == 'false' }} + with: + run_install: false + # If you're not setting the packageManager field in package.json, add the version here + # version: 8.6.7 + + - 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 + working-directory: ${{ inputs.cwd }} + run: pnpm install --frozen-lockfile --prefer-offline + env: + # Other environment variables + HUSKY: '0' # By default do not run HUSKY install \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 28c8bb62a..068705651 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: Build and Deploy to GitHub Pages +name: Deploy to GitHub Pages on: workflow_dispatch: @@ -25,8 +25,10 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18.14 + - name: PNPM Install + uses: ./.github/actions/pnpm-install - name: Install Dependencies - run: npm ci # was npm i + run: pnpm i # was npm i - name: Build Quartz run: npx quartz build - name: Upload artifact