Objectifs
Ce projet a pour but de reproduire ce que fait Netlify : Pour chaque MR/branchs, la CI doit recréer un environnement (création/initialisation/suppression). En plus de cela, il y en aura des fixes,
main/master/production
etdevelop/staging
Créer une image de base, spécifique au projet, stockée dans le container registry du projet afin de l'utiliser lors des builds. Elle devra inclure tout ce dont a besoin le projet, par exemple, Gatsby, Meilisearch, etc. et initialiser tout ce dont elle a besoin pour fonctionner, par exemple, créer le premier index pour Meilisearch.- Mettre en places des règles de nommages de branches et les gérer lors de la création des environnements
- Créer les pipelines nécessaires pour les environnements dynamiques et les environnements statiques (production/staging)
- Avoir un domain dynamique, si possible. Exemple: https://feat-2-title-issue.domain.tld, https://fix-3-title-issue.domain.tld, https://staging.domain.tld, https://(www.)domain.tld
- Créer un Runner sur Jelastic pour éviter la consommation de minutes de build
Ce projet POC
Pour tester, ajouter à ce projet :
- dev container avec Meilisearch ;
- Gatsby sans source de données ;
- Warning : bien gérer les caches pour réduire les minutes consommées ;
Objectifs détaillés
Image de base (Abandonned)
On peut se servir de ce qui est fait pour le dev container
- Une image de bases (typescrit|javascript)-node/{0-version}
- Des services : Meilisearch, etc
- Des commandes à lancer à la création : curl, par exemple. infos :
- https://docs.gitlab.com/ee/user/packages/container_registry/
Règles de nommages
Les Push rules ne sont pas accessibles dans notre version de GitLab, on peut gérer cela dans la configuration d'un dev container et les settings de VScode
-
Settings VSCODE
"git.branchPrefix": "feat/",
"git.branchValidationRegex": "(feat|fix|merge)\\/[\\w\\d-]*"
-
Forçage du nom des branches dans GitLab
Desactiver tant que la créaton auti des environnements ne sait pas le gérer.
infos :
- https://forge.tedomum.net/help/user/project/repository/branches/index.md#name-your-branch
- https://docs.gitlab.com/ee/user/project/repository/push_rules.html
Pipelines
-
CI créant des environnements/review apps dynamique -
Créer les taches annexes nécessaires (ex, créations des index meilisearch de cette branche) -
Définir la durée de vie des environnements (actuellement 2h) -
Gérer les domaines pour visualiser les environnements -
main
→-
env production : main.domain.tld
-
env staging : (pour le moment chez surge.sh @staging.domain.tld
staging-renaud-heluin.surge.sh
)
-
-
MRs → (pour le moment chez surge.sh @{feat|fix-issue-name-slugyfied}.domain.tld
renaud-heluin-{feat|fix-issue-name-slugyfied}.surge.sh
)
-
-
Gérer les nettoyages nécessaires (ex, suppressions des index meilisearch)
infos :
- https://blog.ippon.fr/2021/02/10/un-environnement-par-branche-avec-gitlab/
- https://www.jdecool.fr/blog/2019/08/23/mettre-en-place-review-app-application-statique.html#:~:text=Le%20concept%20de%20Review%20Apps,dans%20une%20branche%20de%20production.
- https://forge.tedomum.net/help/ci/review_apps/index.md#review-apps-examples
Runner
-
TODO
services:
gitlab-runner:
image: 'gitlab/gitlab-runner:latest'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./config:/etc/gitlab-runner
restart: always
docker-compose up -d
docker-compose exec gitlab-runner gitlab-runner register
infos :
Edited by Renaud Heluin