Salut !
Il y a actuellement plusieurs sites qui sont gérés depuis la forge git.duniter.org et qui ont besoin d’être compilé à chaque changement :
Je ne sais pas pour moneda-libre.org. Je ne sais plus pour la doc de silkaj. Ni pour les autres sites…
Mais on a plein de besoins avec d’autres sites à venir !
Ça concerne aussi bien les sites statiques (SSG) comme le site de la monnaie libre que les single page application (SPA) comme wotwizard. ping @Paidge
Le problème, c’est que le workflow n’est pas super optimisé je trouve.
Voici l’état actuel du fonctionnement :
Les sites sont sur le serveur de @poka, et un webhook est configuré sur gitlab pour chaque site pour envoyer à api.monnaie-libre.fr le fait qu’un changement a eu lieu dans le dépôt.
Ensuite, api.monnaie-libre.fr tire les changements et rebuild le site en question sur le serveur en faisant quelque chose comme :
cd /home/axiom/apps/monnaie-libre-fr
git fetch --all
git checkout --force origin/master
unset NODE_ENV
yarn install
yarn generate --color
Et le serveur nginx sert les fichiers compilés du dossier dist
.
Ne pourrait-on pas builder le site dans la CI ?
Au lieu de faire le build sur le serveur, ce serait plus pratique de le faire dans la CI avec un fichier .gitlab-ci.yml
que l’on pourrait configurer comme l’on veut. On aurait le résultat de la CI avec gitlab qui serait conservé et dispo avec graphql. Car actuellement, je ne sais même pas si le build a planté ou pas sur le serveur.
Ensuite, il n’y aurait plus qu’à synchroniser le dossier dist
entre la CI et le serveur.
Comment la CI peut mettre à jour un site sur un autre serveur ?
Je suis nul en CI/CD. Ça doit bien être possible de faire ça ?
Aussi, sur github, certain dépôt on buildé le site pour chaque pull request et on peut “visiter” le site en l’état sur une url dédié. On peut faire ça avec gitlab actuellement ?
Avec des outils monorepo, il y a des trucs à faire aussi.
Cet article de turborepo explique comment ils simplifient la CI : Remote Caching – Turborepo