Github Action部署Hugo站点到阿里云

问题

基于hugo框架撰写博客后,想要发布到云服务器中,朴素的做法是到云服务器对应目录拉取最新代码,但每次从登录服务器到更新代码的过程枯燥且重复,于是考虑通过持续部署的方式部署站点:使得每次提交/合并代码到指定分支时,自动将最新站点代码部署到服务器中。

工作流程如下:

工具

基于Github Action完成

配置流程

新建.github/workflows/deploy.yaml,在其中定义部署工作流:


name: Alicloud-page-deployment
on:
  push:
    branches:
      - gh-pages  # Set a branch to deploy
  pull_request:

jobs:
  deploy:
    runs-on: ubuntu-22.04
    env:
      HUGO_CACHEDIR: /tmp/hugo_cache
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}
    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: '0.100.2'
          # 是否启用 hugo extend
          extended: true

      - name: Build
        run: hugo --minify

      - name: Deploy
        uses: burnett01/rsync-deployments@5.2
        with:
          switches: -avzr --delete
          path: ./public
          remote_path: /opt/spacetimelab/frontend/blog_coolacademic_pro/coolacademic/ # 需要先手动在远程主机创建该目录,否则会执行失败
          remote_host: ${{ secrets.DEPLOY_HOST }} # 远程主机 IP
          remote_port: ${{ secrets.DEPLOY_PORT }} # ssh 端口233333
          remote_user: ${{ secrets.DEPLOY_USER }} # ssh user
          remote_key: ${{ secrets.DEPLOY_KEY }} # ssh 私钥

配置仓库密钥变量

注意,配置私钥时,需要在—–END OPENSSH PRIVATE KEY—–后新建一行,否则部署时会出现解析错误问题。

效果验证

提交代码后,发现Github Action自动运行并最终成功,表明上述配置无误。

拓展阅读

GitHub - peaceiris/actions-hugo: GitHub Actions for Hugo ⚡️ Setup Hugo quickly and build your site fast. Hugo extended, Hugo Modules, Linux (Ubuntu), macOS, and Windows are supported.

GitHub Actions 文档 - GitHub 文档

CoolCats
CoolCats
理学学士

我的研究兴趣是时空数据分析、知识图谱、自然语言处理与服务端开发