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 : 0.142.0
36+ steps :
37+ - name : Install Hugo CLI
38+ run : |
39+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
40+ && sudo dpkg -i ${{ runner.temp }}/hugo.deb
41+ - name : Checkout
42+ uses : actions/checkout@v4
43+ with :
44+ submodules : recursive
45+ fetch-depth : 0
46+ - name : Setup Pages
47+ id : pages
48+ uses : actions/configure-pages@v3
49+ - name : Install Node.js dependencies
50+ run : " [[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
51+ - name : Build with Hugo
52+ env :
53+ # For maximum backward compatibility with Hugo modules
54+ HUGO_ENVIRONMENT : production
55+ HUGO_ENV : production
56+ run : |
57+ hugo \
58+ --gc \
59+ --minify \
60+ --baseURL "${{ steps.pages.outputs.base_url }}/"
61+ - name : Upload artifact
62+ uses : actions/upload-pages-artifact@v1
63+ with :
64+ path : ./public
65+
66+ # Deployment job
67+ deploy :
68+ environment :
69+ name : github-pages
70+ url : ${{ steps.deployment.outputs.page_url }}
71+ runs-on : ubuntu-latest
72+ needs : build
73+ steps :
74+ - name : Deploy to GitHub Pages
75+ id : deployment
76+ uses : actions/deploy-pages@v2
0 commit comments