392668f4f Update theme 65d82c845 fix versions in GitHub Pages docs (#1815) 4e078a306 Create hosting-on-azure-static-web-apps.md (#1738) e24e25052 fix requirement typo (#1814) 0790eb173 fix broken link (#1813) f4a1b38c7 📄 Add more clarity on merging of config files (#1493) 2e82efff0 Install on Windows: Correct + augment (#1520) 4bffd076e Update frontends to add CloudCannon's CMS (#1509) 17eea3133 Update index.md to add resource (#1508) 5a5ac1d2f Add documentation for babel sourceMap (#1492) 899b7117c Update menu-templates.md 284dc4266 Include flexible translation in i18n.md f03421274 docs: Escaping Hugo/GO template code 4f0755683 Improve the documentation of imageConfig and the image resource 89aa723cc Clarify leaf bundle explanation and related FAQ 0c6b32bb9 Update starter-kits.md a68151b1b Update starter-kits.md 91b145384 Update starter-kits.md c8104b422 Update hosting-on-21yunbox.md 51ee7603b Update hosting-on-21yunbox.md d88314499 docs(en): add hosting on 21YunBox aab04f269 Update shortcode-templates.md to correct an error. ed48563aa Misc improvements 87dd24e1d Fix merge failure 0bcc6dca8 js.Build: Update docs to not allow boolean inputs for sourceMap e50a28fbc js.Build: Add SourceMap flag into js.Build opts which can turn on sourcemap 9695093a1 Fix Arch Linux installation command 3de773d7a Please remove hugo-elasticsearch plugin. 6510f0a5a release: Add some more ignore expressions to release notes config dc90b7517 typoe > typo (!) 3427c7436 Add hugoreleaser config 5a1f2d0dd Improves formatting of resources, assets sections (#1804) 03ba56fdd Remove Flesland Flis from Showcases 9f61dac7a Update slice.md 533e4e0cd Update theme 85e50325c Simplify writing 9b30e81b9 Typo fix and remove passive form 8974b6c53 dynamic-menu-configuration 1c5467329 netlify: Hugo 0.102.3 610a937b0 Remove Over from Showcase 99f5585bc netlify: Hugo v0.102.2 9f230ac1f netlify: Hugo v0.102.1 a6fc3f864 netlify: Bump to Hugo v0.102.0 3e9bc1a62 Merge branch 'tempv0.102.0' c08d6d898 Update en/templates/404.md with Firebase Hosting (#1796) 322b75f40 Update configuration.md 2fa6f0b94 404 template example: remove slash relURL arg 1195f168a Remove broken link (#1767) e0838e574 Update RenderString.md bee6adf71 Update page-resources.md 24e142f22 Remove duplicate word from cascade description 879fc3983 docs: Update the description of PostCSS config 2ffe539e3 fix: Use `=` instead of `:=` for variable reassignments (#1771) 7496b8f87 update 404 error for digitalocean docs c85caca4a Merge commit 'bdf935d66c1f02dfc942a30e9fc00519bba3aacb' c3888b63a docs: Regen docshelper 8a5942555 Merge commit '475f87f685439de0f907a9ffc29bfd1361eb1c59' 282007217 common: Add hugo.GoVersion 00b4b46da resources/page: Add :slugorfilename attribute git-subtree-dir: docs git-subtree-split: 392668f4f488d184b08b227028b01dbc02abd57a
5.6 KiB
title | linktitle | description | date | publishdate | categories | keywords | authors | menu | weight | sections_weight | toc | aliases | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Host on GitHub | Host on GitHub | Deploy Hugo as a GitHub Pages project or personal/organizational site and automate the whole process with Github Action Workflow | 2014-03-21 | 2014-03-21 |
|
|
|
|
30 | 30 | true |
|
GitHub provides free and fast static hosting over SSL for personal, organization, or project pages directly from a GitHub repository via its GitHub Pages service and automating development workflows and build with GitHub Actions.
Assumptions
- You have Git 2.8 or greater installed on your machine.
- You have a GitHub account. Signing up for GitHub is free.
- You have a ready-to-publish Hugo website or have at least completed the Quick Start.
Types of GitHub Pages
There are two types of GitHub Pages:
- User/Organization Pages (
https://<USERNAME|ORGANIZATION>.github.io/
) - Project Pages (
https://<USERNAME|ORGANIZATION>.github.io/<PROJECT>/
)
Please refer to the GitHub Pages documentation to decide which type of site you would like to create as it will determine which of the below methods to use.
Branches for GitHub Actions
The GitHub Actions used in these instructions pull source content from the main
branch and then commit the generated content to the gh-pages
branch. This applies regardless of what type of GitHub Pages you are using. This is a clean setup as your Hugo files are stored in one branch and your generated files are published into a separate branch.
GitHub User or Organization Pages
As mentioned in the GitHub Pages documentation, you can host a user/organization page in addition to project pages. Here are the key differences in GitHub Pages websites for Users and Organizations:
- You must create a repository named
<USERNAME>.github.io
or<ORGANIZATION>.github.io
to host your pages - By default, content from the
main
branch is used to publish GitHub Pages - rather than thegh-pages
branch which is the default for project sites. However, the GitHub Actions in these instructions publish to thegh-pages
branch. Therefore, if you are publishing Github pages for a user or organization, you will need to change the publishing branch togh-pages
. See the instructions later in this document.
Build Hugo With GitHub Action
GitHub executes your software development workflows. Everytime you push your code on the GitHub repository, Github Actions will build the site automatically.
Create a file in .github/workflows/gh-pages.yml
containing the following content (based on actions-hugo):
name: github pages
on:
push:
branches:
- main # Set a branch to deploy
pull_request:
jobs:
deploy:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: true # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
# extended: true
- name: Build
run: hugo --minify
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
if: github.ref == 'refs/heads/main'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
For more advanced settings actions-hugo and actions-gh-pages.
GitHub pages setting
By default, the GitHub action pushes the generated content to the gh-pages
branch. This means GitHub has to serve your gh-pages
branch as a GitHub Pages branch. You can change this setting by going to Settings > GitHub Pages, and change the source branch to gh-pages
.
Change baseURL in config.toml
Don't forget to rename your baseURL
in config.toml
with the value https://<USERNAME>.github.io
for your user repository or https://<USERNAME>.github.io/<REPOSITORY_NAME>
for a project repository.
Unless this is present in your config.toml
, your website won't work.
Use a Custom Domain
If you'd like to use a custom domain for your GitHub Pages site, create a file static/CNAME
. Your custom domain name should be the only contents inside CNAME
. Since it's inside static
, the published site will contain the CNAME file at the root of the published site, which is a requirement of GitHub Pages.
Refer to the official documentation for custom domains for further information.