Använda Gitea Actions för att distribuera en Hugo-website till AWS S3

Efter att ha konfigurerat Gitea och Hugo på AWS S3...

Sidinnehåll

Nästa steg är att implementera någon CI/CD och konfigurera Gitea Actions för Hugo-webbplats, för att automatiskt skicka webbplatsen till AWS S3 när huvudgrenen uppdateras.

Vi har redan - efter installation, konfiguration och testning av Gitea Gitea Server Setup, och konfiguration av Gitea SSL, konfigurerat Hugo-webbplatsdistribution till AWS S3.

Gitea Runner

OK. Låt oss börja

Generera ny token för Gitea runner

Gå till https://din-gitea-server/din-användare/din-repo/inställningar/actions/runners

och klicka på Skapa ny runner

Skapa ny runner

kopiera Registrerings Token

Starta ny Gitea Runner

SSH till servern där din nya gitea runner ska köras

och starta docker container. du kan starta den som en separat exekverbar fil, köra den som en tjänst etc, men här använder jag en docker container.

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

Kontrollera att runnern registrerades OK

Gå till https://din-gitea-server/din-användare/din-repo/inställningar/actions/runners

och du bör se att den redan körs

Skapa ett par AWS hemligheter

Gå till: https://din-gitea-server/din-användare/din-repo/inställningar/actions/hemligheter

Och skapa ett par stora hemligheter: AWS_ACCESS_KEY_ID och AWS_SECRET_ACCESS_KEY. Du vet vad de betyder, eller hur?

aws-hemligheter

Skapa Gitea Workflow för att bygga och distribuera Hugo till s3

I ditt Hugo-projekt, i mappen .gitea/workflows skapa en fil hugo-deploy.yaml

name: Gitea Actions - Hugo Deploy
run-name: ${{ gitea.actor }} testar Gitea Actions 🚀
on:
  push:
    branches:
      - master
jobs:
  Hugo-Deploy:
    runs-on: ubuntu-latest
    steps:
      - run: echo "🎉 Jobbet startades automatiskt av en ${{ gitea.event_name }} händelse."
      - run: echo "🐧 Detta jobb körs nu på en ${{ runner.os }} server som är värd för Gitea!"
      - run: echo "🔎 Namnet på din gren är ${{ gitea.ref }} och ditt repository är ${{ gitea.repository }}."

      - name: Checka ut repositorykod
        uses: actions/checkout@v4
        with:
          submodules: true  # Hämta Hugo-teman (true ELLER recursive)
          fetch-depth: 0    # Hämta all historia för .GitInfo och .Lastmod

      - run: echo "💡 ${{ gitea.repository }} repository har klonats till runnern."

      - name: Konfigurera Hugo
        uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: '0.134.1' # eller ta bort detta för den senaste
          extended: true

      - name: Lista filer i repositoryt
        run: |
          ls          

      - name: Bygg
        run: hugo

      - name: Distribuera
        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 "🍏 Jobbets status är ${{ job.status }}."

Om du av någon anledning inte har ett stort begär att värd för din webbplats i Sydney - ändra AWS_REGION till vad du föredrar.

Den här konfigurationen:

on:
  push:
    branches:
      - master

tar hand om alla push och sammanslagningar till huvudgrenen.

Committa och skicka

Efter att ha skickat ändringar till servern bör du se på sidan https://din-gitea-server/din-användare/din-repo/actions något som liknar

hugo-deploy-log-gitea-actions

Ha en bra dag!

Användbara länkar