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.141.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: Install Dart Sass
42+ run: sudo snap install dart-sass
43+ - name: Checkout
44+ uses: actions/checkout@v4
45+ with:
46+ submodules: recursive
47+ fetch-depth: 0
48+ - name: Setup Pages
49+ id: pages
50+ uses: actions/configure-pages@v5
51+ - name: Install Node.js dependencies
52+ run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
53+ - name: Build with Hugo
54+ env:
55+ HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
56+ HUGO_ENVIRONMENT: production
57+ TZ: America/Los_Angeles
58+ run: |
59+ hugo \
60+ --gc \
61+ --minify \
62+ --baseURL "${{ steps.pages.outputs.base_url }}/"
63+ - name: Upload artifact
64+ uses: actions/upload-pages-artifact@v3
65+ with:
66+ path: ./public
67+
68+ # Deployment job
69+ deploy:
70+ environment:
71+ name: github-pages
72+ url: ${{ steps.deployment.outputs.page_url }}
73+ runs-on: ubuntu-latest
74+ needs: build
75+ steps:
76+ - name: Deploy to GitHub Pages
77+ id: deployment
78+ uses: actions/deploy-pages@v4
0 commit comments