Enfin, enfin, c’est réussi !
Sur notre projet de metaverse 2D que nous développons chez DevToBeCurious (vous en saurez plus d’ici quelques mois), nous avons mis en place le déploiement automatique depuis gitlab de notre front et de notre back.
Spécifications techniques
Nous avons un front qui contient :
– du react
– du phaserjs
– du socket.io
Pour notre back, nous avons un POC suivant :
– du node.js
– du express (qui va devenir du nest.js)
– du socket.io
Intégration et déploiement continus sur gitlab
Etant des grands fans de l’automatisation du build et de la livraison continue chez DevToBeCurious, j’ai cherché à voir comment déployer sur internet sans avoir à créer de serveur.
Ca tombe bien, il existe des serveurs dispos sur Internet pour le front, pour le back !
Pour le front, nous avons choisi :
– Firebase
Pour le back, nous avons pris :
– Heroku
Déployer sur Firebase
Le déploiement sur firebase se fait vraiment facilement depuis notre gitlab.
(En fin d’article, je vous mettrai à dispo notre yaml pour plus de détails).
Déployer sur Heroku
Là où ça se corse, c’est pour déployer notre back sur Heroku !
Le problème se présente car nous avons notre back dans un sous dossier.
Or, pour déployer, nous utilisons dpl.
Et dpl va déployer en partant du principe que notre repository complet est le projet à déployer !
Nous obtenons une erreur de ce type :
ERROR: Application not supported by ‘heroku/nodejs’ buildpack
remote: !
remote: ! The ‘heroku/nodejs’ buildpack is set on this application, but was
remote: ! unable to detect a Node.js codebase.
remote: !
remote: ! A Node.js app on Heroku requires a ‘package.json’ at the root of
remote: ! the directory structure.
remote: !
remote: ! If you are trying to deploy a Node.js application, ensure that this
remote: ! file is present at the top level directory.
Nous, nous voulons pouvoir déployer uniquement le sous-dossier du back.
Déployer un sous-dossier
Déjà, nous avons testé avec la CLI de heroku en local, et le déploiement fonctionne bien en passant par .. git !
Nous y sommes arrives en lançant, en local, la commande :
git subtree push –prefix back-end/api heroku main
(en ayant fait avant : un add remote pour heroku)
Et c’est là, la clef !
Nous allons utiliser git directement sur gitlab !
Pour y arriver, nous allons utiliser la notion de subtree de git.
Ainsi, nous allons :
1. Créer un subtree pour notre dossier back
git subtree split –prefix back-end/api -b api
2. Push notre code sur le repository heroku
git push -f heroku api:main
Bingo !
Tout fonctionne bien !! <3