Usar Gitea Actions para desplegar un sitio web de Hugo en AWS S3

Después de configurar Gitea y Hugo en AWS S3...

Índice

El siguiente paso es implementar algunos CI/CD y configurar Gitea Actions para el sitio web de Hugo, para empujar el sitio web a AWS S3 automáticamente cuando se actualice la rama master.

Ya hemos configurado - después de instalar, configurar y probar Gitea Configuración del servidor Gitea, y configurar SSL en Gitea, implementación del sitio web de Hugo en AWS S3.

Gitea Runner

Bien. Vamos

Generar un nuevo token para el runner de Gitea

Navega a https://your-gitea-server/your-user/your-repo/settings/actions/runners

y haz clic en Crear nuevo runner

Crear nuevo runner

copia el token de registro

Iniciar un nuevo runner de Gitea

conéctate por ssh al servidor donde se ejecutará el nuevo runner de Gitea

y inicia el contenedor de docker. puedes iniciarlo como un ejecutable separado, ejecutarlo como un servicio, etc, pero aquí estoy usando un contenedor de 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

Verificar que el runner se haya registrado correctamente

Navega a https://your-gitea-server/your-user/your-repo/settings/actions/runners

y deberías ver que ya está en ejecución

Crear un par de secretos de AWS

Ve a: https://your-gitea-server/your-user/your-repo/settings/actions/secrets

Y crea un par de secretos grandes: AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY. ¿Sabes qué significan, verdad?

aws-secrets

Crear un flujo de trabajo de Gitea para construir y desplegar Hugo a S3

En tu proyecto de Hugo, en la carpeta .gitea/workflows crea un archivo 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 "🎉 El trabajo fue automáticamente desencadenado por un evento ${{ gitea.event_name }}."
      - run: echo "🐧 Este trabajo ahora se está ejecutando en un servidor ${{ runner.os }} alojado por Gitea!"
      - run: echo "🔎 El nombre de tu rama es ${{ gitea.ref }} y tu repositorio es ${{ gitea.repository }}."

      - name: Verificar el código del repositorio
        uses: actions/checkout@v4
        with:
          submodules: true  # Descargar temas de Hugo (true OR recursivo)
          fetch-depth: 0    # Descargar toda la historia para .GitInfo y .Lastmod

      - run: echo "💡 El repositorio ${{ gitea.repository }} ha sido clonado en el runner."

      - name: Configurar Hugo
        uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: '0.134.1' # o elimina esto para la última versión
          extended: true

      - name: Listar archivos en el repositorio
        run: |
          ls

      - name: Construir
        run: hugo

      - name: Desplegar
        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 "🍏 El estado de este trabajo es ${{ job.status }}."

Si por alguna razón no tienes un gran deseo de alojar tu sitio en Sydney - cambia AWS_REGION a lo que más te guste.

Este fragmento de configuración:

on:
  push:
    branches:
      - master

se encargará de todos los empujes y fusiones en la rama master.

Confirmar y empujar

Después de empujar los cambios al servidor, deberías ver en la página https://your-gitea-server/your-user/your-repo/actions algo parecido a

hugo-deploy-log-gitea-actions

¡Tenga un excelente día!

Enlaces útiles