From ae1ce556b324c9447d110269e7984a9c9c791e40 Mon Sep 17 00:00:00 2001 From: Vehbi Sinan Tunalioglu Date: Sun, 7 Apr 2024 16:00:13 +0800 Subject: [PATCH 1/3] fix(release): fetch all history for all tags and branches before build This is required for `git describe --always --tags` to produce meaningful output with latest tag information. See --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 92d0368..90fd122 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,6 +21,8 @@ jobs: - name: "Checkout Codebase" if: "${{ steps.release.outputs.release_created }}" uses: "actions/checkout@v4" + with: + fetch-depth: 0 - name: "Install nix" if: "${{ steps.release.outputs.release_created }}" From ec6a62bc9ecb1c84df40c6a89c95b1f8697b5c1b Mon Sep 17 00:00:00 2001 From: Vehbi Sinan Tunalioglu Date: Sun, 7 Apr 2024 16:30:51 +0800 Subject: [PATCH 2/3] chore: revisit Website build and publish workflow --- .github/workflows/website.yml | 107 +++++++++++++--------------------- 1 file changed, 40 insertions(+), 67 deletions(-) diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 63e8af7..cc67ff5 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -1,97 +1,70 @@ -# See https://github.com/gregrickaby/nextjs-github-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 +## Note that this workflow is based on: +## +## . +name: "Build and Deploy Website" on: - # Runs on pushes targeting the default branch push: - branches: ["main"] + branches: + - "main" - # 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 + contents: "read" + pages: "write" + id-token: "write" # For GITHUB_TOKEN to deploy to GitHub Pages -# 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. +## 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 + runs-on: "ubuntu-latest" steps: - - name: Checkout - uses: actions/checkout@v4 + - name: "Checkout" + uses: "actions/checkout@v4" - - name: Detect package manager - id: detect-package-manager - run: | - if [ -f "${{ github.workspace }}/website/yarn.lock" ]; then - echo "manager=yarn" >> $GITHUB_OUTPUT - echo "command=install" >> $GITHUB_OUTPUT - echo "runner=yarn" >> $GITHUB_OUTPUT - exit 0 - elif [ -f "${{ github.workspace }}/website/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 + - name: "Setup Node" + uses: "actions/setup-node@v4" with: node-version: "lts/*" - cache: ${{ steps.detect-package-manager.outputs.manager }} + cache: "npm" cache-dependency-path: "website" - - name: Setup Pages - uses: actions/configure-pages@v4 + - name: "Setup Pages" + uses: "actions/configure-pages@v5" - - name: Restore cache - uses: actions/cache@v4 + - name: "Restore Cache" + uses: "actions/cache@v4" with: - path: | - website/.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') }}- + path: "website/.next/cache" + key: "${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}" + restore-keys: "${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-" - - name: Install dependencies - run: cd website && ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} + - name: "Install Dependencies" + run: "cd website && npm ci" - - name: Build with Next.js - run: cd website && ${{ steps.detect-package-manager.outputs.runner }} next build + - name: "Build Website" + run: "cd website && npx --no-install next build" - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + - name: "Upload Built Artifact" + uses: "actions/upload-pages-artifact@v3" with: - path: ./website/out + path: "./website/out" - # Deployment job deploy: + needs: "build" + runs-on: "ubuntu-latest" environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build + name: "github-pages" + url: "${{ steps.deployment.outputs.page_url }}" steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 + - name: "Deploy Website to GitHub Pages" + uses: "actions/deploy-pages@v4" From 67f713356641c45fb348080218c811a27cb9bd4f Mon Sep 17 00:00:00 2001 From: Vehbi Sinan Tunalioglu Date: Sun, 7 Apr 2024 16:35:24 +0800 Subject: [PATCH 3/3] fix(release): build and publish Website on release, not push to main --- .github/workflows/website.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index cc67ff5..088c686 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -4,11 +4,10 @@ name: "Build and Deploy Website" on: - push: - branches: - - "main" - workflow_dispatch: + release: + types: + - "published" permissions: contents: "read"