In this tutorial, we use GitHub Actions to deploy Github Pages. It works in both public and private repository. Skip to the One-command deployment section if you prefer not to upload your source folder to GitHub.
- Create a repo named username.github.io, where username is your username on GitHub. If you have already uploaded to other repo, rename the repo instead.
- Add the following highlighted lines to
package.json
: (skip this step if there are existing lines)
{ |
- Push the files of your Hexo folder to the
source
branch of your repository. Thepublic/
folder is not (and should not be) uploaded by default, make sure the.gitignore
file containspublic/
line. The folder structure should be roughly similar to this repo, without the.gitmodules
file.- To push
source
to GitHub:$ git push origin source
- To push
- Add
.github/workflows/pages.yml
file to your repo with the following content:
name: Pages |
- Once the deployment is finished, the generated pages can be found in the
master
branch of your repository - In your GitHub repo’s setting, navigate to “GitHub Pages” section and change Source to master branch.
- Check the webpage at username.github.io.
Note - if you specify a custom domain name with a CNAME
, you need to add the CNAME
file to the source/
folder.
Project page
If you prefer to have a project page on GitHub:
- Navigate to your repo on GitHub. Go to the Settings tab. Change the Repository name so your blog is available at username.github.io/repository, repository can be any name, like blog or hexo.
- Edit your _config.yml, change the
root:
value to the/<repository>/
(must starts and ends with a slash, without the brackets). - Modify the following lines in
.github/workflows/pages.yml
:
name: Pages |
- Commit and push to
master
branch.- To push
master
branch to GitHub:$ git push origin master
- To push
- Once the deployment is finished, the generated pages can be found in the
gh-pages
branch of your repository - In your GitHub repo’s setting, navigate to “GitHub Pages” section and change Source to gh-pages branch.
One-command deployment
The following instruction is adapted from one-command deployment page.
Install hexo-deployer-git.
Add the following configurations to _config.yml, (remove existing lines if any)
deploy:
type: git
repo: https://github.com/<username>/<project>
# example, https://github.com/hexojs/hexojs.github.io
branch: gh-pagesRun
hexo clean && hexo deploy
.Check the webpage at username.github.io.