From 8b0794d3e7c7f3fc43d3060860885166ffbfa940 Mon Sep 17 00:00:00 2001 From: Kevin Kwan Date: Mon, 1 Jan 2024 18:39:07 -0500 Subject: [PATCH] Update nextjs.yml --- .github/workflows/nextjs.yml | 119 +++++++++++++++++++++++++++++++---- 1 file changed, 108 insertions(+), 11 deletions(-) diff --git a/.github/workflows/nextjs.yml b/.github/workflows/nextjs.yml index aee24dd..e2189a1 100644 --- a/.github/workflows/nextjs.yml +++ b/.github/workflows/nextjs.yml @@ -1,16 +1,13 @@ -# Modified Versionn of the sample workflow for building and deploying a Next.js site to GitHub Pages -# Expect there's no deployment to GitHub Pages -# And the purpose of this workflow is to ensure there's no build errors (for my purposes at least) -# CloudFlare Pages handles continuous deployment. +# Sample workflow for building and deploying a Next.js site to GitHub Pages +# # To get started with Next.js see: https://nextjs.org/docs/getting-started # -name: Checking for No Build Errors (Next.js) +name: Deploy Next.js site to Pages on: + # Runs on pushes targeting the default branch push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] + branches: ["master"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -48,14 +45,22 @@ jobs: echo "runner=npx --no-install" >> $GITHUB_OUTPUT exit 0 else - echo "Unable to determine package manager" >&2 + echo "Unable to determine package manager" exit 1 fi - name: Setup Node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "20" cache: ${{ steps.detect-package-manager.outputs.manager }} + - name: Setup Pages + uses: actions/configure-pages@v4 + with: + # Automatically inject basePath in your Next.js configuration file and disable + # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized). + # + # You may remove this line if you want to manage the configuration yourself. + static_site_generator: next - name: Restore cache uses: actions/cache@v3 with: @@ -69,4 +74,96 @@ jobs: - name: Install dependencies run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} - name: Build with Next.js - run: npm run build + run: ${{ steps.detect-package-manager.outputs.runner }} next build + - name: Static HTML export with Next.js + run: ${{ steps.detect-package-manager.outputs.runner }} next export + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./out + + # Deployment job + 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 + + +# # Modified Versionn of the sample workflow for building and deploying a Next.js site to GitHub Pages +# # Expect there's no deployment to GitHub Pages +# # And the purpose of this workflow is to ensure there's no build errors (for my purposes at least) +# # CloudFlare Pages handles continuous deployment. +# # To get started with Next.js see: https://nextjs.org/docs/getting-started +# # +# name: Checking for No Build Errors (Next.js) + +# on: +# push: +# branches: [ "master" ] +# pull_request: +# branches: [ "master" ] + +# # Allows you to run this workflow manually from the Actions tab +# workflow_dispatch: + +# # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +# permissions: +# contents: read +# pages: write +# id-token: write + +# # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +# concurrency: +# group: "pages" +# cancel-in-progress: false + +# 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" >&2 +# exit 1 +# fi +# - name: Setup Node +# uses: actions/setup-node@v3 +# with: +# node-version: "20" +# cache: ${{ steps.detect-package-manager.outputs.manager }} +# - name: Restore cache +# uses: actions/cache@v3 +# 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 +# run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} +# - name: Build with Next.js +# run: npm run build