1
+ # Sample workflow for building and deploying a Hugo site to GitHub Pages
2
+ name : Deploy Hugo site to Pages
3
+
4
+ on :
5
+ # Runs on pushes targeting the default branch
6
+ push :
7
+ branches :
8
+ - main
9
+
10
+ # Allows you to run this workflow manually from the Actions tab
11
+ workflow_dispatch :
12
+
13
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
14
+ permissions :
15
+ contents : read
16
+ pages : write
17
+ id-token : write
18
+
19
+ # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
20
+ # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
21
+ concurrency :
22
+ group : " pages"
23
+ cancel-in-progress : false
24
+
25
+ # Default to bash
26
+ defaults :
27
+ run :
28
+ shell : bash
29
+
30
+ jobs :
31
+ # Build job
32
+ build :
33
+ runs-on : ubuntu-latest
34
+ env :
35
+ HUGO_VERSION : v0.146.7
36
+ HUGO_ENVIRONMENT : production
37
+ TZ : America/Los_Angeles
38
+ steps :
39
+ - name : Install Hugo CLI
40
+ run : |
41
+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.146.7/hugo_extended_0.146.7_linux-amd64.deb \
42
+ && sudo dpkg -i ${{ runner.temp }}/hugo.deb
43
+ - name : Install Dart Sass
44
+ run : sudo snap install dart-sass
45
+ - name : Checkout
46
+ uses : actions/checkout@v4
47
+ with :
48
+ submodules : recursive
49
+ fetch-depth : 0
50
+ - name : Setup Pages
51
+ id : pages
52
+ uses : actions/configure-pages@v5
53
+ - name : Install Node.js dependencies
54
+ run : " [[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
55
+ - name : Cache Restore
56
+ id : cache-restore
57
+ uses : actions/cache/restore@v4
58
+ with :
59
+ path : |
60
+ ${{ runner.temp }}/hugo_cache
61
+ key : hugo-${{ github.run_id }}
62
+ restore-keys :
63
+ hugo-
64
+ - name : Configure Git
65
+ run : git config core.quotepath false
66
+ - name : Build with Hugo
67
+ run : |
68
+ hugo \
69
+ --gc \
70
+ --minify \
71
+ --baseURL "${{ steps.pages.outputs.base_url }}/" \
72
+ --cacheDir "${{ runner.temp }}/hugo_cache"
73
+ - name : Cache Save
74
+ id : cache-save
75
+ uses : actions/cache/save@v4
76
+ with :
77
+ path : |
78
+ ${{ runner.temp }}/hugo_cache
79
+ key : ${{ steps.cache-restore.outputs.cache-primary-key }}
80
+ - name : Upload artifact
81
+ uses : actions/upload-pages-artifact@v3
82
+ with :
83
+ path : ./public
84
+
85
+ # Deployment job
86
+ deploy :
87
+ environment :
88
+ name : github-pages
89
+ url : ${{ steps.deployment.outputs.page_url }}
90
+ runs-on : ubuntu-latest
91
+ needs : build
92
+ steps :
93
+ - name : Deploy to GitHub Pages
94
+ id : deployment
95
+ uses : actions/deploy-pages@v4
0 commit comments