Déployer un site Hugo sur AWS S3 à l'aide de Gitea Actions

« Après avoir configuré Gitea et Hugo sur AWS S3... »

Sommaire

L’étape suivante consiste à mettre en place une intégration et une livraison continues (CI/CD) et à configurer Gitea Actions pour un site Hugo, afin de pousser le site vers AWS S3 automatiquement lorsque la branche master est mise à jour.

Nous avons déjà - après l’installation, la configuration et les tests de Gitea Installation du serveur Gitea, et la configuration du SSL de Gitea, configuré le déploiement du site Hugo vers AWS S3.

Ce guide fait partie de notre documentation sur l’infrastructure web qui couvre les stratégies de déploiement AWS. Pour la configuration de la distribution CloudFront, consultez la création de CloudFront en mode pay-as-you-go. Vous pouvez également explorer le déploiement de Hugo avec AWS CLI pour des approches de déploiement alternatives.

Gitea Runner

D’accord. C’est parti.

Générer un nouveau jeton pour le runner Gitea

Naviguez vers https://your-gitea-server/your-user/your-repo/settings/actions/runners

et cliquez sur Create New Runner

Create New Runner

copiez le jeton d’enregistrement (Registration Token)

Démarrer le nouveau runner Gitea

Connectez-vous en SSH au serveur où votre nouveau runner Gitea sera exécuté

et démarrez le conteneur Docker. Vous pouvez le démarrer comme un exécutable séparé, l’exécuter en tant que service, etc., mais ici j’utilise un conteneur 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

Vérifier que le runner est correctement enregistré

Naviguez vers https://your-gitea-server/your-user/your-repo/settings/actions/runners

et vous devriez voir qu’il est déjà en cours d’exécution

Créer quelques secrets AWS

Accédez à : https://your-gitea-server/your-user/your-repo/settings/actions/secrets

Et créez un couple de secrets considérables : AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY. Vous savez ce qu’ils signifient, n’est-ce pas ?

aws-secrets

Créer un workflow Gitea pour la compilation et le déploiement de Hugo vers S3

Dans votre projet Hugo, dans le dossier .gitea/workflows, créez un fichier 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 }}."

Si par hasard vous n’avez pas un immense désir d’héberger votre site à Sydney - changez AWS_REGION pour ce que vous préférez de plus.

Ce fragment de configuration :

on:
  push:
    branches:
      - master

s’occupera de toutes les poussées et les fusions vers la branche master.

Commit et push

Après avoir poussé les modifications vers le serveur, vous devriez voir sur la page https://your-gitea-server/your-user/your-repo/actions quelque chose de proche de

hugo-deploy-log-gitea-actions

Passée une bonne journée ! Une fois votre runner Gitea Actions déployé et en train de compiler votre site, n’oubliez pas que l’instance qui l’exécute a encore besoin de son propre filet de sécurité - consultez Sauvegarde et restauration du serveur Gitea pour le flux de travail gitea dump.

Liens utiles

S'abonner

Recevez de nouveaux articles sur les systèmes, l'infrastructure et l'ingénierie IA.