1
+ # Sample workflow for building and deploying a Next.js site to GitHub Pages
2
+ #
3
+ # To get started with Next.js see: https://nextjs.org/docs/getting-started
4
+ #
5
+ name : Deploy Next.js site to Pages
6
+
7
+ on :
8
+ # Runs on pushes targeting the default branch
9
+ push :
10
+ branches : ' initialClassification'
11
+
12
+ # Allows you to run this workflow manually from the Actions tab
13
+ workflow_dispatch :
14
+
15
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
16
+ permissions :
17
+ contents : read
18
+ pages : write
19
+ id-token : write
20
+
21
+ # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
22
+ # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
23
+ concurrency :
24
+ group : " pages"
25
+ cancel-in-progress : false
26
+
27
+ jobs :
28
+ # Build job
29
+ build :
30
+ runs-on : ubuntu-latest
31
+ steps :
32
+ - name : Checkout
33
+ uses : actions/checkout@v4
34
+ - name : Detect package manager
35
+ id : detect-package-manager
36
+ run : |
37
+ if [ -f "${{ github.workspace }}/yarn.lock" ]; then
38
+ echo "manager=yarn" >> $GITHUB_OUTPUT
39
+ echo "command=install" >> $GITHUB_OUTPUT
40
+ echo "runner=yarn" >> $GITHUB_OUTPUT
41
+ exit 0
42
+ elif [ -f "${{ github.workspace }}/package.json" ]; then
43
+ echo "manager=npm" >> $GITHUB_OUTPUT
44
+ echo "command=ci" >> $GITHUB_OUTPUT
45
+ echo "runner=npx --no-install" >> $GITHUB_OUTPUT
46
+ exit 0
47
+ else
48
+ echo "Unable to determine package manager"
49
+ exit 1
50
+ fi
51
+ - name : Setup Node
52
+ uses : actions/setup-node@v4
53
+ with :
54
+ node-version : " 20"
55
+ cache : ${{ steps.detect-package-manager.outputs.manager }}
56
+ - name : Setup Pages
57
+ uses : actions/configure-pages@v5
58
+ with :
59
+ # Automatically inject basePath in your Next.js configuration file and disable
60
+ # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
61
+ #
62
+ # You may remove this line if you want to manage the configuration yourself.
63
+ static_site_generator : next
64
+ - name : Restore cache
65
+ uses : actions/cache@v4
66
+ with :
67
+ path : |
68
+ .next/cache
69
+ # Generate a new cache whenever packages or source files change.
70
+ key : ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
71
+ # If source files changed but packages didn't, rebuild from a prior cache.
72
+ restore-keys : |
73
+ ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-
74
+ - name : Install dependencies
75
+ run : ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
76
+ - name : Build with Next.js
77
+ run : ${{ steps.detect-package-manager.outputs.runner }} next build
78
+ - name : Upload artifact
79
+ uses : actions/upload-pages-artifact@v3
80
+ with :
81
+ path : ./out
82
+
83
+ # Deployment job
84
+ deploy :
85
+ environment :
86
+ name : github-pages
87
+ url : ${{ steps.deployment.outputs.page_url }}
88
+ runs-on : ubuntu-latest
89
+ needs : build
90
+ steps :
91
+ - name : Deploy to GitHub Pages
92
+ id : deployment
93
+ uses : actions/deploy-pages@v4
0 commit comments