Развёртывание сайта Hugo в AWS S3 с помощью Gitea Actions
«После настройки Gitea и Hugo в AWS S3...»
Следующий шаг — реализовать CI/CD и настроить Gitea Actions для сайта Hugo, чтобы автоматически выкладывать сайт в AWS S3, когда обновляется ветка master.
После установки, настройки и тестирования Gitea Настройка сервера Gitea, а также настройки SSL для Gitea, мы уже настроили развёртывание сайта Hugo в AWS S3.
Это руководство является частью нашей документации веб-инфраструктуры, описывающей стратегии развёртывания в AWS. Для настройки дистрибуции CloudFront см. статью создание CloudFront по модели pay-as-you-go. Вы также можете изучить развёртывание Hugo с помощью AWS CLI для альтернативных подходов к развёртыванию.

Хорошо. Приступаем
Генерация нового токена для раннера Gitea
Перейдите по адресу https://your-gitea-server/your-user/your-repo/settings/actions/runners
и нажмите Create New Runner (Создать нового раннера)

скопируйте Registration Token (токен регистрации)
Запуск нового раннера Gitea
подключитесь по SSH к серверу, на котором будет работать ваш новый раннер gitea
и запустите контейнер 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
Проверка успешной регистрации раннера
Перейдите по адресу 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. Вы знаете, что это такое, верно?

Создание воркфлоу 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 вы должны увидеть что-то подобное

Хорошего дня! После того как ваш раннер Gitea Actions будет развернут и начнёт собирать ваш сайт, не забудьте, что инстансу, на котором он работает, тоже нужна своя «подушка безопасности» - см. Резервное копирование и восстановление сервера Gitea для процесса работы с gitea dump.