Aller au contenu
  1. Docs/
  2. Gitlab/

Déployez votre site avec Gitlab CI

·Temps de lecture : 2 minutes· loading · loading · ·
ksh2177
Gitlab CI/CD Pipeline Automation DevOps Yaml Git Self-Hosted Runner Integration Delivery Tests Build
ksh2177
Auteur
ksh2177
Ingénieur DevOps passionné par l’automatisation, la fiabilité et le design système.
Auteur
ksh2177
Ingénieur DevOps passionné par l’automatisation, la fiabilité et le design système. J’apporte des solutions robustes et bien pensées.
Table des matières

1. ⚙️ Configuration du site Hugo
#

📂 Arborescence de base
#

Ton site suit l’organisation classique d’un projet Hugo :

.
├── config/
│   └── _default/hugo.toml
├── content/
├── static/
│   └── favicon.ico
├── layouts/
├── public/              <-- généré par Hugo
├── .gitlab-ci.yml

📝 Fichier hugo.toml
#

theme = "blowfish"
baseURL = "https://homelab.scasse.com"
relativeURLs = true
canonifyURLs = true

🔎 baseURL est important pour générer des liens corrects, notamment les assets CSS/JS. En environnement GitLab Pages, ce champ doit pointer vers ton domaine final.


2. 🧪 Pipeline GitLab CI
#

⚙️ .gitlab-ci.yml
#

image: docker.io/hugomods/hugo:ci

variables:
  GIT_SUBMODULE_STRATEGY: recursive
  HUGO_ENV: production
  HUGO_BASEURL: "https://homelab.scasse.com/"

pages:
  script:
    - hugo --minify --gc --cleanDestinationDir --baseURL="$HUGO_BASEURL"
  artifacts:
    paths:
      - public
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push"'

✅ Ce fichier :

  • Utilise une image Hugo officielle
  • Minifie le site
  • Nettoie le dossier public
  • Génère le site avec le bon baseURL
  • Déploie les fichiers du dossier public vers GitLab Pages

3. 🌍 Configuration du domaine personnalisé
#

🎯 Objectif
#

Associer homelab.scasse.com à ksh2177.gitlab.io/homelab.

🧾 DNS chez o2switch
#

Ajoute 2 entrées CNAME dans la zone DNS de scasse.com :

NomTypeCible
homelab.scasse.com.CNAMEksh2177.gitlab.io.
www.homelab.scasse.com.CNAMEksh2177.gitlab.io.

✅ Vérification GitLab
#

Ajoute un enregistrement TXT pour la vérification de propriété :

Nom : _gitlab-pages-verification-code.homelab.scasse.com.
Type : TXT
Valeur : gitlab-pages-verification-code=XXXXXXXXXXXXXXX

Ensuite, retourne sur GitLab > Pages > Vérifie que le domaine est bien Verified ✅.

Gitlab Pages


4. 🎨 Ajout du favicon
#

🖼️ Création
#

  • Créé à partir d’un terminal stylisé avec les couleurs du thème
  • Converti en .ico 256x256
  • Placé dans le dossier static/ sous le nom favicon.ico

🔗 Accessible via :
#

https://homelab.scasse.com/favicon.ico

🛠️ Fonctionnement
#

Le thème Blowfish détecte automatiquement static/favicon.ico si présent à la racine. Pas besoin de surcharger les layouts.


5. 🧼 Problèmes rencontrés & résolutions
#

ProblèmeSolution
Plus de CSS après changement de baseURLAjout de relativeURLs = true et canonifyURLs = true dans hugo.toml
Le favicon n’apparaît pasVérifie le cache navigateur + que le fichier est bien dans static/favicon.ico
Erreur DNS CNAME and other dataVérifie qu’il n’y a qu’un seul CNAME par sous-domaine
Redirection GitLab demandant un loginLe projet doit être privé, mais Pages configuré pour être public pour Everyone

6. ✅ Résultat final
#

🌐 homelab.scasse.com

Gitlab-CI Deploy

Ton site Hugo est en ligne, avec :

  • Nom de domaine personnalisé
  • Thème Blowfish
  • Déploiement automatique à chaque git push
  • Favicon personnalisé
  • Infrastructure maîtrisée de bout en bout

Articles connexes

Déploiement Home Assistant (GitOps)
·Temps de lecture : 7 minutes· loading · loading
ksh2177
GitOps Argo CD Kubernetes App-of-Apps DevOps Homelab K3s Helm Sealed Domotique
Création d’un chart Helm minimal, overlay Kustomize, secret chiffré et déclaration Argo CD pour Home Assistant.
Dashboard Conky Pop!_OS
·Temps de lecture : 5 minutes· loading · loading
ksh2177
Pop_os Linux Homelab Conky Widget Dev-Environment Customisation Performance Themes Dotfiles System76 Open-Source
Guide détaillé de la création de widgets pour affichage de la météo, de la lecture en cours sur Spotify, ou encore du Uptime de la machine
Bootstrap du cluster K3s - Préparation
·Temps de lecture : 3 minutes· loading · loading
ksh2177
K3s Ansible Bootstrap Homelab GitOps Infrastructure Raspberry Pi
Initialisation du dépôt homelab-k3s et création de l’inventaire Ansible pour les nœuds du cluster.
Design goal
·Temps de lecture : 2 minutes· loading · loading
ksh2177
K3s Kubernetes Ansible Raspberry Pi Homelab SSH Automation Cluster Infra-as-Code
Préparation des nœuds Raspberry Pi avant le déploiement du cluster K3s : réseau, SSH, Ansible et inventaire automatisé.
Déploiement des nœuds K3s avec Ansible
·Temps de lecture : 2 minutes· loading · loading
ksh2177
K3s Ansible Playbook Cluster Automation Raspberry Pi DevOps
Installer automatiquement le nœud master et les nœuds workers dans un cluster K3s à l’aide de playbooks Ansible personnalisés.
Installation d’Argo CD avec Ansible
·Temps de lecture : 4 minutes· loading · loading
ksh2177
Argo CD Kubernetes Helm GitOps Ansible DevOps K3s Homelab
Déployer Argo CD dans le cluster K3s à l’aide d’un playbook Ansible Helm complet et idempotent.
Structure GitOps et App-of-Apps
·Temps de lecture : 2 minutes· loading · loading
ksh2177
GitOps Argo CD Kubernetes App-of-Apps DevOps Homelab K3s
Organisation du dépôt GitOps et déclaration du manifeste App-of-Apps dans Argo CD pour gérer les applications.
Installer Pop!_OS pour un Homelab Moderne
·Temps de lecture : 3 minutes· loading · loading
ksh2177
Pop_os Linux Homelab Dev-Environment Customisation Performance Themes Dotfiles System76 Open-Source
Guide détaillé de l’installation de Pop!_OS, configuration DevOps-friendly, dual boot Windows et personnalisation terminal.
Outils du DevOps
·Temps de lecture : 4 minutes· loading · loading
ksh2177
Pop_os Linux Homelab Dev-Environment Customisation Performance Themes Dotfiles System76 Open-Source Tools DevOps
Configuration complète de Neovim pour Pop!_OS avec Lazy.nvim, Mason et une stack DevOps prête à l’emploi (Ansible, Terraform, Docker, YAML, etc.).