Gebruik Gitea Actions om een Hugo-website te implementeren in AWS S3

Na het instellen van Gitea en Hugo op AWS S3...

Inhoud

De volgende stap is het implementeren van enige CI/CD en het instellen van
Gitea Actions voor Hugo website, om website naar AWS S3 te pushen
automatisch wanneer de master branch wordt bijgewerkt.

We hebben al - na het installeren, configureren en testen van Gitea Gitea Server Setup,
en het instellen van Gitea SSL,
geconfigureerd Hugo website deployment naar AWS S3.

Gitea Runner

OK. Laten we beginnen

Genereer een nieuw token voor de Gitea runner

Navigeer naar https://your-gitea-server/your-user/your-repo/settings/actions/runners

en klik op Create New Runner

Create New Runner

kopieer het registratie token

Start een nieuwe Gitea Runner

ssh naar de server waarop je nieuwe Gitea runner zal draaien

en start de docker container. je kunt het als een aparte uitvoerbare bestand starten, het als een service draaien, etc, maar hier gebruik ik een docker container.

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

Controleer of de runner correct is geregistreerd

Navigeer naar https://your-gitea-server/your-user/your-repo/settings/actions/runners

en je zou moeten zien dat het al draait

Maak een paar AWS geheime waarden aan

Ga naar: https://your-gitea-server/your-user/your-repo/settings/actions/secrets

En maak een paar grote geheime waarden aan: AWS_ACCESS_KEY_ID en AWS_SECRET_ACCESS_KEY. Je weet wat ze betekenen, toch?

aws-secrets

Maak een Gitea workflow aan voor het bouwen en implementeren van Hugo naar S3

In je Hugo project, in de map .gitea/workflows maak een bestand hugo-deploy.yaml aan

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 }}."

Als je op een of andere manier geen groot verlangen hebt om je site te hosten in Sydney - verander dan AWS_REGION naar wat je liever hebt.

Deze configuratie:

on:
  push:
    branches:
      - master

zorgt ervoor dat alle pushes en merges naar de master branch worden verwerkt.

Commit en push

Na het pushen van de wijzigingen naar de server zou je op de pagina https://your-gitea-server/your-user/your-repo/actions iets moeten zien dat er ongeveer uitziet als

hugo-deploy-log-gitea-actions

Heb een fijn dagje!