Wdrażanie witryny Hugo do AWS S3 za pomocą Gitea Actions
„Po ustawieniu upd dla Gitea i Hugo w AWS S3...”
Następnym krokiem jest implementacja CI/CD oraz konfiguracja Gitea Actions dla strony Hugo, w celu automatycznego publikowania witryny na AWS S3 po każdym zaktualizowaniu gałęzi master.
Już wcześniej - po zainstalowaniu, skonfigurowaniu i przetestowaniu serwera Gitea Konfiguracja serwera Gitea, oraz skonfigurowaniu SSL dla Gitea
- przygotowaliśmy wdrożenie strony Hugo na AWS S3.
Ten poradnik jest częścią naszej dokumentacji infrastruktury webowej, obejmującej strategie wdrażania na AWS. Aby dowiedzieć się więcej o konfiguracji dystrybucji CloudFront, zobacz tworzenie CloudFront w modelu pay-as-you-go. Możesz również zapoznać się z wdrażaniem Hugo za pomocą AWS CLI jako alternatywną metodą wdrożenia.

Dobrze. Zaczynajmy.
Generowanie nowego tokena dla runnera Gitea
Przejdź do https://twoja-urzadzenie-gitea/twój-użytkownik/twoje-repo/settings/actions/runners
i kliknij Create New Runner

skopiuj Registration Token
Uruchamianie nowego runnera Gitea
Połącz się przez ssh z serwerem, na którym będzie działał nowy runner Gitea
i uruchom kontener docker. Możesz go uruchomić jako oddzielny wykonywalny plik, jako usługę itp., ale tutaj używam kontenera docker.
sudo docker run \
-v /var/run/docker.sock:/var/run/docker.sock \
-e GITEA_INSTANCE_URL=http://<mój-serwer-gitea>:3000/ \
-e GITEA_RUNNER_REGISTRATION_TOKEN=<mój-token-rejestracji> \
-e GITEA_RUNNER_NAME=srv-act-runner \
--name my_runner \
--restart always \
-d docker.io/gitea/act_runner:latest
Sprawdzenie, czy runner zarejestrował się poprawnie
Przejdź do https://twoja-urzadzenie-gitea/twój-użytkownik/twoje-repo/settings/actions/runners
i powinieneś zobaczyć, że jest już aktywny
Utworzenie kilku sekretów AWS
Przejdź do: https://twoja-urzadzenie-gitea/twój-użytkownik/twoje-repo/settings/actions/secrets
I utwórz parę sekretów: AWS_ACCESS_KEY_ID oraz AWS_SECRET_ACCESS_KEY. Wiesz, co one oznaczają, prawda?

Utworzenie workflow Gitea do budowania i wdrażania Hugo na S3
W projekcie Hugo, w folderze .gitea/workflows utwórz plik 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 }}."
Jeśli w jakiś sposób nie masz silnego przekonania, aby hostować swoją stronę w Sydney - zmień AWS_REGION na coś, co bardziej Ci odpowiada.
Ta część konfiguracji:
on:
push:
branches:
- master
zajmie się wszystkimi operacjami push i merge na gałąź master.
Commit i push
Po przesłaniu zmian na serwer, na stronie https://twoja-urzadzenie-gitea/twój-użytkownik/twoje-repo/actions powinieneś zobaczyć coś zbliżonego do:

Miłego dnia! Pamiętaj, że nawet gdy Twój runner Gitea Actions jest wdrożony i buduje Twoją stronę, instancja, na której działa, nadal potrzebuje własnej sieci bezpieczeństwa - zobacz Kopia zapasowa i przywracanie serwera Gitea, aby zapoznać się z procesem gitea dump.