⬆️ Update all npm dependencies (2024-12-23) #73
Workflow file for this run
This file contains 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 characters
name: Deploy Next.js preview | |
on: | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
- closed | |
paths: | |
- .github/workflows/** | |
- src/** | |
- .eslintrc.json | |
- jsconfig.json | |
- next.config.mjs | |
- package*.json | |
- postcss.config.*js | |
- tailwind.config.js | |
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
permissions: | |
contents: write | |
pages: write | |
id-token: write | |
issues: write | |
pull-requests: write | |
concurrency: preview-${{ github.ref }} | |
jobs: | |
# Build job | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout 🛎️ | |
uses: actions/checkout@v4 | |
- name: Detect package manager 🔎 | |
id: detect-package-manager | |
run: | | |
if [ -f "${{ github.workspace }}/yarn.lock" ]; then | |
echo "manager=yarn" >> $GITHUB_OUTPUT | |
echo "command=install" >> $GITHUB_OUTPUT | |
echo "runner=yarn" >> $GITHUB_OUTPUT | |
exit 0 | |
elif [ -f "${{ github.workspace }}/package.json" ]; then | |
echo "manager=npm" >> $GITHUB_OUTPUT | |
echo "command=ci" >> $GITHUB_OUTPUT | |
echo "runner=npx --no-install" >> $GITHUB_OUTPUT | |
exit 0 | |
else | |
echo "Unable to determine package manager" | |
exit 1 | |
fi | |
- name: Setup Node ⚙️ | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: ${{ steps.detect-package-manager.outputs.manager }} | |
- name: Restore cache ⚡ | |
uses: actions/cache@v4 | |
with: | |
path: | | |
.next/cache | |
# Generate a new cache whenever packages or source files change. | |
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} | |
# If source files changed but packages didn't, rebuild from a prior cache. | |
restore-keys: | | |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}- | |
- name: Install dependencies 📦 | |
if: github.event.action != 'closed' # Skip if pr is closed | |
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} | |
- name: Build with Next.js 🏗️ | |
if: github.event.action != 'closed' # Skip if pr is closed | |
run: ${{ steps.detect-package-manager.outputs.runner }} next build | |
env: | |
BASE_PATH: "/frontend/pr-preview/pr-${{ github.event.number }}" | |
- name: Store build artifacts 📂 | |
uses: actions/upload-artifact@v4 | |
if: github.event.action != 'closed' # Skip if pr is closed | |
with: | |
name: nextjs-preview | |
path: out | |
# Deployment job | |
deploy: | |
environment: | |
name: github-pages | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout 🛎️ | |
uses: actions/checkout@v4 | |
- name: Download build artifacts 📂 | |
uses: actions/download-artifact@v4 | |
if: github.event.action != 'closed' # Skip if pr is closed | |
with: | |
name: nextjs-preview | |
path: out | |
- name: Setup env 🔧 | |
run: | | |
apt-get update && apt-get install -y rsync | |
git init | |
- name: Deploy preview to GitHub Pages 🚀 | |
uses: rossjrw/pr-preview-action@v1 | |
with: | |
preview-branch: pages | |
source-dir: ./out |