Utiliser Gitea Actions pour déployer un site Hugo sur AWS S3

Après avoir mis à jour Gitea et Hugo sur AWS S3...

Sommaire

La prochaine étape consiste à mettre en œuvre certains CI/CD et à configurer Gitea Actions pour le 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 du Gitea Configuration du serveur Gitea, et configuration SSL Gitea, configuré déploiement du site Hugo vers AWS S3.

Gitea Runner

OK. Allons-y

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

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

et cliquez sur Créer un nouveau runner

Créer un nouveau runner

copiez le jeton d’enregistrement

Démarrer un nouveau runner Gitea

connectez-vous via SSH au serveur sur lequel votre nouveau runner Gitea sera exécuté

et démarrez le conteneur Docker. vous pouvez le démarrer comme un exécutable distinct, le faire fonctionner comme un 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 bien enregistré

Accédez à 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

Allez à : https://your-gitea-server/your-user/your-repo/settings/actions/secrets

Et créez quelques grands secrets : 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 génération 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 - Déploiement Hugo
run-name: ${{ gitea.actor }} est en train de tester les Gitea Actions 🚀
on:
  push:
    branches:
      - master
jobs:
  Hugo-Deploy:
    runs-on: ubuntu-latest
    steps:
      - run: echo "🎉 La tâche a été automatiquement déclenchée par un événement ${{ gitea.event_name }}."
      - run: echo "🐧 Cette tâche est maintenant en cours d'exécution sur un serveur ${{ runner.os }} hébergé par Gitea !"
      - run: echo "🔎 Le nom de votre branche est ${{ gitea.ref }} et votre dépôt est ${{ gitea.repository }}."

      - name: Vérifier le code du dépôt
        uses: actions/checkout@v4
        with:
          submodules: true  # Récupérer les thèmes Hugo (true OR récursif)
          fetch-depth: 0    # Récupérer toute l'histoire pour .GitInfo et .Lastmod

      - run: echo "💡 Le dépôt ${{ gitea.repository }} a été cloné sur le runner."

      - name: Configurer Hugo
        uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: '0.134.1' # ou supprimez cela pour la version la plus récente
          extended: true

      - name: Lister les fichiers dans le dépôt
        run: |
          ls          

      - name: Construire
        run: hugo

      - name: Déployer
        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 "🍏 L'état de cette tâche est ${{ job.status }}."

Si, pour une raison quelconque, vous n’avez pas particulièrement envie d’héberger votre site à Sydney - changez AWS_REGION en ce que vous préférez.

Cette configuration :

on:
  push:
    branches:
      - master

veillera à ce que toutes les pushes et les merges vers la branche master soient pris en charge.

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 similaire à

hugo-deploy-log-gitea-actions

Bonne journée !

Liens utiles