Gitea Actions zur Deployment einer Hugo-Website auf AWS S3 verwenden

Nach der Einstellung von Gitea und Hugo auf AWS S3 ...

Inhaltsverzeichnis

Der nächste Schritt besteht darin, CI/CD umzusetzen und Gitea Actions für eine Hugo-Website einzurichten, um die Website automatisch auf AWS S3 zu pushen, sobald der Master-Branch aktualisiert wird.

Wir haben bereits – nach der Installation, Konfiguration und dem Testen von Gitea unter Gitea Server Setup, sowie dem Einrichten von Gitea SSL, die Deployment der Hugo-Website auf AWS S3 konfiguriert.

Dieses Handbuch ist Teil unserer Web-Infrastruktur-Dokumentation, die AWS-Deploymentsstrategien abdeckt. Für die Einrichtung der CloudFront-Distribution siehe CloudFront auf Pay-as-you-go-Basis erstellen. Sie können auch die Deployment von Hugo mit der AWS CLI erkunden, für alternative Deployment-Ansätze.

Gitea Runner

Alles klar. Los geht’s.

Neues Token für Gitea-Runner generieren

Navigieren Sie zu https://your-gitea-server/your-user/your-repo/settings/actions/runners

und klicken Sie auf Create New Runner

Create New Runner

Kopieren Sie das Registration Token.

Neuen Gitea-Runner starten

Melden Sie sich per SSH auf dem Server an, auf dem Ihr neuer Gitea-Runner laufen soll.

Starten Sie dann den Docker-Container. Sie können ihn als separates ausführbares Programm starten, als Dienst ausführen usw., aber hier verwende ich einen 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

Prüfen, ob der Runner korrekt registriert wurde

Navigieren Sie zu https://your-gitea-server/your-user/your-repo/settings/actions/runners

und Sie sollten sehen, dass er bereits läuft.

Ein paar AWS-Geheimnisse erstellen

Gehen Sie zu: https://your-gitea-server/your-user/your-repo/settings/actions/secrets

Und erstellen Sie ein paar große Geheimnisse: AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY. Sie wissen schon, was sie bedeuten, oder?

aws-secrets

Gitea-Workflow zum Bauen und Deployen von Hugo auf S3 erstellen

In Ihrem Hugo-Projekt, im Ordner .gitea/workflows, erstellen Sie die Datei 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 }}."

Falls Sie gar keine Lust haben, Ihre Website in Sydney zu hosten, ändern Sie AWS_REGION zu einem beliebigen anderen Wert.

Dieser Konfigurationsblock:

on:
  push:
    branches:
      - master

kümmert sich um alle Pushes und Merges in den Master-Branch.

Commit und Push

Nachdem Sie Änderungen auf den Server gepusht haben, sollten Sie auf der Seite https://your-gitea-server/your-user/your-repo/actions etwas Ähnliches sehen:

hugo-deploy-log-gitea-actions

Ich wünsche Ihnen einen schönen Tag! Wenn Ihr Gitea-Actions-Runner deployed ist und Ihre Website baut, denken Sie daran, dass die Instanz, die ihn ausführt, auch ein eigenes Sicherheitsnetz benötigt – siehe Backup und Restore des Gitea-Server für den gitea dump-Workflow.

Abonnieren

Neue Beiträge zu Systemen, Infrastruktur und KI-Engineering.