使用 Gitea Actions 将 Hugo 网站部署到 AWS S3

在 AWS S3 上设置好 Gitea 和 Hugo 之后...

目录

下一步是实施一些 CI/CD 并设置 Gitea Actions for Hugo website, to push website to AWS S3 当 master 分支更新时自动推送网站到 AWS S3。

我们已经 - 在安装、配置和测试 Gitea Gitea Server Setup, 以及 setting up Gitea SSL, 配置了 Hugo website deployment to AWS S3.

Gitea Runner

好的。我们开始吧

为 Gitea runner 生成新令牌

导航到 https://your-gitea-server/your-user/your-repo/settings/actions/runners

并点击 Create New Runner

Create New Runner

复制注册令牌

启动新的 Gitea Runner

通过 ssh 登录到将运行新 Gitea runner 的服务器

并启动 docker 容器。你可以将其作为独立的可执行文件运行,也可以作为服务运行等,但在这里我使用的是 docker 容器。

sudo docker run \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e GITEA_INSTANCE_URL=http://<my-gitea-server>:3000/ \
    -e GITEA_RUNNER_REGISTRATION_TOKEN=<my-registration-token> \
    -e GITEA_RUNNER_NAME=srv-act-runner \
    --name my_runner \
    --restart always \
    -d docker.io/gitea/act_runner:latest

检查 runner 是否已正确注册

导航到 https://your-gitea-server/your-user/your-repo/settings/actions/runners

你应该能看到它已经在运行了

创建几个 AWS 密钥

前往:https://your-gitea-server/your-user/your-repo/settings/actions/secrets

并创建两个重要的密钥:AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。你知道它们的含义,对吧?

aws-secrets

创建 Gitea 工作流以构建并部署 Hugo 到 S3

在你的 Hugo 项目中,在文件夹 .gitea/workflows 中创建一个文件 hugo-deploy.yaml

name: Gitea Actions - Hugo Deploy
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on:
  push:
    branches:
      - master
jobs:
  Hugo-Deploy:
    runs-on: ubuntu-latest
    steps:
      - run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
      - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
      - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."

      - name: Check out repository code
        uses: actions/checkout@v4
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: '0.134.1' # or remove this for the latest
          extended: true

      - name: List files in the repository
        run: |
          ls          

      - name: Build
        run: hugo

      - name: Deploy
        run: hugo deploy
        env:
          AWS_REGION: 'ap-southeast-2'
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

      - run: echo "🍏 This job's status is ${{ job.status }}."

如果你不想将网站托管在悉尼,可以将 AWS_REGION 改为你喜欢的任何区域。

这段配置:

on:
  push:
    branches:
      - master

将处理所有推送到 master 分支的提交和合并。

提交并推送

在将更改推送到服务器后,你应该在页面 https://your-gitea-server/your-user/your-repo/actions 上看到类似以下内容:

hugo-deploy-log-gitea-actions

祝你有美好的一天!

有用的链接