1- name : Deployment to GitHub Pages
1+ # Sample workflow for building and deploying a Hugo site to GitHub Pages
2+ name : Deploy Hugo
23
34on :
4- workflow_dispatch :
5+ # Runs on pushes targeting the default branch
56 push :
67 branches :
7- - master # <-- specify the branch you want to deploy from
8- pull_request :
8+ - gh-pages
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
918
10- env :
11- REPO_NAME : ${{ github.event.repository.name }}
12- REPO_OWNER : ${{ github.repository_owner }}
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
1329
1430jobs :
15- deploy :
16- runs-on : ubuntu-22.04
17- concurrency :
18- group : ${{ github.workflow }}-${{ github.ref }}
31+ # Build job
32+ build :
33+ runs-on : ubuntu-latest
34+ env :
35+ HUGO_VERSION : 0.147.8
36+ HUGO_ENVIRONMENT : production
37+ TZ : America/Los_Angeles
1938 steps :
20- - uses : actions/checkout@v4
39+ - name : Install Hugo CLI
40+ run : |
41+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_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
2147 with :
22- fetch-depth : 0 # Fetch all history for .GitInfo and .Lastmod
23-
24- - name : Setup Hugo
25- uses : peaceiris/actions-hugo@v3
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 : NPM
56+ run : npm install -D postcss postcss-cli autoprefixer
57+ - name : Cache Restore
58+ id : cache-restore
59+ uses : actions/cache/restore@v4
2660 with :
27- hugo-version : ' 0.125.5'
28- extended : true
29-
30- - name : Setup Node
31- uses : actions/setup-node@v4
61+ path : |
62+ ${{ runner.temp }}/hugo_cache
63+ key : hugo-${{ github.run_id }}
64+ restore-keys :
65+ hugo-
66+ - name : Configure Git
67+ run : git config core.quotepath false
68+ - name : Build with Hugo
69+ run : |
70+ hugo \
71+ --gc \
72+ --minify \
73+ --baseURL "${{ steps.pages.outputs.base_url }}/" \
74+ --cacheDir "${{ runner.temp }}/hugo_cache"
75+ - name : Cache Save
76+ id : cache-save
77+ uses : actions/cache/save@v4
3278 with :
33- node-version : ' 20'
34- cache : ' npm'
35- cache-dependency-path : ' **/package-lock.json'
36-
37- - run : npm ci
38- - run : hugo --baseURL https://${REPO_OWNER}.github.io/${REPO_NAME} --minify
39-
40- - name : Deploy
41- uses : peaceiris/actions-gh-pages@v4
42- if : ${{ github.ref == 'refs/heads/mastter' }} # <-- specify same branch as above here
79+ path : |
80+ ${{ runner.temp }}/hugo_cache
81+ key : ${{ steps.cache-restore.outputs.cache-primary-key }}
82+ - name : Upload artifact
83+ uses : actions/upload-pages-artifact@v3
4384 with :
44- github_token : ${{ secrets.GITHUB_TOKEN }}
85+ path : ./public
86+
87+ # Deployment job
88+ deploy :
89+ environment :
90+ name : github-pages
91+ url : ${{ steps.deployment.outputs.page_url }}
92+ runs-on : ubuntu-latest
93+ needs : build
94+ steps :
95+ - name : Deploy to GitHub Pages
96+ id : deployment
97+ uses : actions/deploy-pages@v4
0 commit comments