通过Actions推送部署GithubPages域名被解绑问题解决

问题描述#

使用Github Action将hugo生成的public文件夹推送到github.io仓库时,pages绑定的域名会被自动解绑,导致访问报404

解决办法#

  1. 在hugo项目根目录创建一个名为static的文件夹(如果它还不存在),这个文件夹中的内容会被hugo直接复制到生成的public文件夹中。
  2. static文件夹中创建一个名为CNAME的文件,并在其中写入你的域名。以本站为例:
$ echo "gali.fan" >> static/CNAME
  1. 确保Github Actions工作流中,不会删除或忽略CNAME文件。修改Github Actions工作流文件:
# gh-pages.yml
    ...

- name: Deploy
uses: peaceiris/actions-gh-pages@v3	# 一个自动发布github pages的action
with:
    # github_token: ${{ secrets.GITHUB_TOKEN }} 该项适用于发布到源码相同repo的情况,不能用于发布到其他repo
    external_repository: yueluz/yueluz.github.io	# 发布到哪个repo
    personal_token: ${{ secrets.ACTION_ACCESS_TOKEN }}	# 发布到其他repo需要提供上面生成的personal access token
    publish_dir: ./public	# 注意这里指的是要发布哪个文件夹的内容,而不是指发布到目的仓库的什么位置,因为hugo默认生成静态网页到public文件夹,所以这里发布public文件夹里的内容
    publish_branch: main	# 发布到哪个branch
    cname: gali.fan  # 确保域名不会被解除 <<<<<<<<<<<<<<<<<<<<<<<<<<<<增加内容>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ...