From b33636024bcb866a57bdc87aa5e7193bf743e207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85rth=E1=80=9Dur?= Date: Tue, 19 Sep 2023 19:19:44 +0400 Subject: [PATCH] ci(deploy): change deploy to github pages config (#10) * ci(deploy): change github pages config * chore: commit some code * ci(lighthouse): change assertions scores * ci(deploy): change restore cache section * ci(deploy): fix config * chore: remove deprecated line since v13.30 * ci: add new deploy config * ci: commit deprecated workflow --- .github/workflows/deploy.yml | 53 +++++++++ .github/workflows/nextjs-deploy.yml | 169 ++++++++++++---------------- lighthouserc.yml | 4 +- next.config.mjs | 1 + 4 files changed, 128 insertions(+), 99 deletions(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..a5c6528 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,53 @@ +name: Deploy Next.js static site to GitHub Pages + +on: + push: + branches: + - 'main' + tags: + - '**' + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +concurrency: + group: 'pages' + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + - name: Install dependencies + run: bun install --frozen-lockfile + - name: Build + run: bun run build + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: ./build + + deploy: + # Add a dependency to the build job + needs: build + + # Grant GITHUB_TOKEN the permissions required to make a Pages deployment + permissions: + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source + + # Deploy to the github-pages environment + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + # Specify runner + deployment step + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 # or the latest "vX.X.X" version tag for this action diff --git a/.github/workflows/nextjs-deploy.yml b/.github/workflows/nextjs-deploy.yml index f908e7c..61d29f2 100644 --- a/.github/workflows/nextjs-deploy.yml +++ b/.github/workflows/nextjs-deploy.yml @@ -1,103 +1,78 @@ -# 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: Deploy Next.js site to Pages +# # 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: Deploy Next.js site to Pages -on: - # Runs on pushes targeting the default branch - push: - branches: ['main'] +# on: +# # Runs on tag pushes targeting the default branch +# push: +# # TODO: uncomment after check +# # branches: +# # - 'main' +# # tags: +# # - '**' - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: +# # 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 +# # 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 +# # 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 - strategy: - matrix: - node-version: [18] - steps: - - name: Checkout - uses: actions/checkout@v3 - - 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" >> $GITHUB_OUTPUT - echo "runner=pnpm exec" >> $GITHUB_OUTPUT - exit 0 - elif [ -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-lock.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 ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: ${{ steps.detect-package-manager.outputs.manager }} - - name: Setup Pages - uses: actions/configure-pages@v3 - 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: - 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: ${{ 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@v2 - with: - path: ./out +# jobs: +# # Build job +# build: +# runs-on: ubuntu-latest +# steps: +# - name: Checkout +# uses: actions/checkout@v3 +# - uses: oven-sh/setup-bun@v1 +# with: +# bun-version: latest +# - name: Setup Pages +# uses: actions/configure-pages@v3 +# 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: +# path: | +# .next/cache +# # Generate a new cache whenever packages or source files change. +# key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml', '**/bun.lockb') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} +# # If source files changed but packages didn't, rebuild from a prior cache. +# restore-keys: | +# ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml', '**/bun.lockb') }}- +# - name: Install dependencies +# run: bun install --frozen-lockfile +# - name: Build with Next.js +# run: bunx next build +# - name: Upload artifact +# uses: actions/upload-pages-artifact@v2 +# with: +# path: ./build - # 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@v2 +# # 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@v2 diff --git a/lighthouserc.yml b/lighthouserc.yml index 5f804b7..3a51182 100644 --- a/lighthouserc.yml +++ b/lighthouserc.yml @@ -6,10 +6,10 @@ ci: isSinglePageApplication: true assert: assertions: - 'categories:performance': ['error', { 'minScore': 1 }] + 'categories:performance': ['error', { 'minScore': .96 }] 'categories:accessibility': ['error', { 'minScore': .90 }] 'categories:best-practices': ['error', { 'minScore': .92 }] 'categories:pwa': ['off'] - 'categories:seo': ['error', { 'minScore': .91 }] + 'categories:seo': ['error', { 'minScore': .83 }] upload: target: 'temporary-public-storage' diff --git a/next.config.mjs b/next.config.mjs index ff1fa88..9bcd5ed 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -4,6 +4,7 @@ import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; const withVanillaExtract = createVanillaExtractPlugin(); const nextConfig = { + output: 'export', distDir: 'build', experimental: { typedRoutes: true,