搭建 Hugo 博客 (2)——Action 发布
通过 Github Action 将生成的网站代码直接部署到云服务器上。

对于如何发布在自己的服务器上,需要考虑以下几个方面的问题:

  1. 服务器是发布网站的地方,不适合于把生成的逻辑放在服务器上操作,尤其这种静态网站。我们更不应该把 Go 和 Hugo 的环境放在服务器上。
  2. 之前有想过使用 Docker 的方式部署,但我觉得有点大材小用了,再说 Docker 部署需要的资源更多,不至于一个静态网站这么大动干戈。
  3. 第三点,在 Github 上,我们可以利用 Github Action 来自动化 hugo deploy,把生成的静态网站,转移到咱们的服务器中。

最后思考的就是如何把静态网站转移到服务器上。

这里继续考虑两个问题:

  1. 我们可以在 Github 上生成的静态网站装到 Docker 镜像中,这样在服务器上就可以下载 Docker Image,部署网站。
  2. 但通过 Github 生成的镜像,由于网络的问题,在国内服务器下载或者更新,都很费劲。所以我们需要继续往下思考。

创建 Action

❯ mkdir -p .github/workflows
❯ touch .github/workflows/deploy.yml

具体 deploy.yml 内容:

name: Custom Server  
on:  
  push:  
    branches:  
      - main  # Set a branch to deploy  
  pull_request:  
  
jobs:  
  deploy:  
    runs-on: ubuntu-20.04  
    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.145.0'  
          extended: true  
  
      - name: Build  
        run: hugo --minify  
  
      - name: Deploy  
        uses: burnett01/rsync-deployments@5.2  
        with:  
          switches: -avzr --delete  
          path: ./public  
          remote_path: ${{ secrets.DEPLOY_PATH }} # 需要先手动在远程主机创建该目录,否则会执行失败  
          remote_host: ${{ secrets.DEPLOY_HOST }} # 远程主机 IP          
          remote_port: ${{ secrets.DEPLOY_PORT }} # ssh 端口,默认为 22          
          remote_user: ${{ secrets.DEPLOY_USER }} # ssh user  
          remote_key: ${{ secrets.DEPLOY_KEY }} # ssh 私钥

为了安全起见,敏感数据都通过 secrets 方式引用,需要在对应仓库中创建这些 secret。

这里用的是 rsync 方式,需要在服务器上安装 rsync。这里用的是 centos7,自带了 rsync, 只是没有启动,只需要启动就好,其他系统应该也默认安装了。

systemctl enable rsyncd --now

至于剩下的就是在 Github 设置这几个参数。只要代码提交到服务器上,我们就能看到 Action 执行。

参考

https://www.lixueduan.com/posts/blog/01-github-action-deploy-hugo/ Hugo + GitHub Action,搭建你的博客自动发布系统


最后修改于 2025-03-16