chore(nextjs.yml): moved the setuppnpm before setup node #5
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 characters
name: Deploy Next.js site to Pages | |
on: | |
push: | |
branches: ["main"] | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: "pages" | |
cancel-in-progress: false | |
jobs: | |
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 }}/pnpm-lock.yaml" ]; then | |
echo "manager=pnpm" >> $GITHUB_OUTPUT | |
echo "command=install --frozen-lockfile" >> $GITHUB_OUTPUT | |
echo "runner=pnpm exec" >> $GITHUB_OUTPUT | |
echo "Detected pnpm-lock.yaml, setting manager to pnpm." | |
exit 0 | |
elif [ -f "${{ github.workspace }}/yarn.lock" ]; then | |
echo "manager=yarn" >> $GITHUB_OUTPUT | |
echo "command=install" >> $GITHUB_OUTPUT | |
echo "runner=yarn" >> $GITHUB_OUTPUT | |
echo "Detected yarn.lock, setting manager to yarn." | |
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 | |
echo "Detected package.json, setting manager to npm." | |
exit 0 | |
else | |
echo "Unable to determine package manager. No lock file or package.json found." | |
exit 1 | |
fi | |
- name: Debug detected package manager | |
run: | | |
echo "Detected Manager: ${{ steps.detect-package-manager.outputs.manager }}" | |
echo "Install Command: ${{ steps.detect-package-manager.outputs.command }}" | |
echo "Runner: ${{ steps.detect-package-manager.outputs.runner }}" | |
- name: Setup pnpm | |
if: steps.detect-package-manager.outputs.manager == 'pnpm' | |
uses: pnpm/action-setup@v2 | |
with: | |
version: 8 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: ${{ steps.detect-package-manager.outputs.manager }} | |
- name: Verify pnpm installation | |
if: steps.detect-package-manager.outputs.manager == 'pnpm' | |
run: | | |
echo "Attempting to verify pnpm installation..." | |
pnpm --version | |
which pnpm | |
echo "pnpm verification complete." | |
- name: Setup Pages | |
uses: actions/configure-pages@v5 | |
with: | |
static_site_generator: next | |
- name: Restore cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
.next/cache | |
# pnpm specific cache location | |
~/.pnpm-store | |
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml', '**/yarn.lock', '**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} | |
restore-keys: | | |
${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml', '**/yarn.lock', '**/package-lock.json') }}- | |
- name: Install dependencies | |
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} | |
- name: Build with Next.js | |
run: ${{ steps.detect-package-manager.outputs.runner }} next build | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: ./out | |
deploy: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |