本文章是 使用hugo+GitHub Pages搭建免费博客 的续篇。
下文假设你已经:
- 拥有自己的GitHub Pages仓库
- 安装了hugo并完成有关配置
1 前言
通过这篇文章,你将获得以下方案:
- 使用Git与GitHub备份全站
- 使用GitHub Actions自动部署全站
- 使用自定义域名
2 使用Git与GitHub备份全站
2.1 初始化Git
在GitHub上创建一个新的private
仓库,仓库名为 blogName
。
请务必设置为private
仓库,否则你的配置文件中的私密信息将会被公开。
在你的站点目录下执行以下命令:
git initgit remote add origin <your-repo-url>git add .git commit -m "init"git push -u origin master
2.2 配置.gitignore
在你的站点目录下创建 .gitignore
文件,内容如下:
/public
这可以防止你的 public
目录被提交到仓库中。
3 使用GitHub Actions自动部署全站
3.1 创建GitHub Actions
在你的站点目录下创建 .github/workflows/gh-pages.yml
文件,内容如下:
点击查看配置文件
# Sample workflow for building and deploying a Hugo site to GitHub Pagesname: Deploy Hugo site to Pages
on: # Runs on pushes targeting the default branch push: branches: ["main"]
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pagespermissions: contents: read pages: write id-token: write
# Environment variables available to all jobs and steps in this workflowenv: HUGO_ENV: production HUGO_VERSION: "0.115.4" GO_VERSION: "1.20.5" NODE_VERSION: "18.15.0" TINA_CLIENT_ID: ${{ vars.TINA_CLIENT_ID }} TINA_TOKEN: ${{ vars.TINA_TOKEN }}
jobs: # Build job build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }}
- name: Install Hugo run: | curl -LO "https://github.com/gohugoio/hugo/releases/download/v${{ env.HUGO_VERSION }}/hugo_extended_${{ env.HUGO_VERSION }}_Linux-64bit.tar.gz" tar -xvf hugo_extended_${{ env.HUGO_VERSION }}_Linux-64bit.tar.gz sudo mv hugo /usr/local/bin/ rm hugo_extended_${{ env.HUGO_VERSION }}_Linux-64bit.tar.gz hugo version
- name: Install Go run: | curl -LO "https://dl.google.com/go/go${{ env.GO_VERSION }}.linux-amd64.tar.gz" sudo tar -C /usr/local -xzf go${{ env.GO_VERSION }}.linux-amd64.tar.gz echo "export PATH=$PATH:/usr/local/go/bin" >> $GITHUB_ENV rm go${{ env.GO_VERSION }}.linux-amd64.tar.gz go version
- name: Setup Project run: npm run project-setup
- name: Install npm dependencies run: npm install
- name: Build Website run: npm run build
- name: Upload artifact uses: actions/upload-pages-artifact@v1 with: path: ./public
- name: Echo CNAME run: echo ${{ secrets.CNAME }} > ./public/CNAME
- name: Deploy Web uses: peaceiris/actions-gh-pages@v3 with: PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }} EXTERNAL_REPOSITORY: ${{ secrets.PAGE_URL }} PUBLISH_BRANCH: master PUBLISH_DIR: ./public commit_message: ${{ github.event.head_commit.message }}
仔细观察代码,你会发现有一些变量需要你自己填写。
3.2 配置GitHub Secrets
在你的仓库中,点击 Settings
-> Secrets
-> New repository secret
,添加以下变量:
PERSONAL_TOKEN
这是你的GitHub Personal Token,用于推送到仓库中。
点击这里获得你的Token。PAGE_URL
这是你的GitHub Pages仓库的URL,格式应该为username.github.io
。CNAME
(可选)
这是你的自定义域名,格式应该为example.com
。
点击查看示例
3.3 部署博客
观察GitHub Actions
的配置文件,你会发现,只有在main
分支提交时,才会触发自动部署。
# Sample workflow for building and deploying a Hugo site to GitHub Pagesname: Deploy Hugo site to Pages
on: # Runs on pushes targeting the default branch push: branches: ["main"]
因此,我们需要将静态文件推送到main
分支中就能完成部署。
git add .git commit -m "init"git push origin main
或者在GitHub网页中编辑完文章后,点击Commit changes
按钮。
这样,你应该就能在username.github.io
中看到你的博客了。
4 (可选)使用自定义域名
如果你想要绑定域名,可以在 GitHub Pages
的设置中,将 Custom domain
设置为你的域名。
此外,你还需要在你的域名服务商中,添加一条 CNAME
记录,将 yourCustom.domain
指向你的博客域名username.github.io
。
有时,你或许需要在你的域名服务商中,添加一条 A
记录,将 yourCustom.domain
指向 GitHub对应的IP地址。
这样你就可以通过yourCustom.domain
访问你的博客了。
5 结语
至此,你的博客就已经可以自动部署了。
下一篇文章中,我将分享我将博客文章图片托管至OSS
的方案。