Skip to main content

Git et architecture technique

· 3 min read

Salut à tous 👋

Nouvel article qui va traîter de la partie technique et de notre workflow avec Git.

🌲 Git workflow

Concernant notre workflow Git, nous sommes partis sur une approche avec des branches de feature ou de fix qui sont ensuite mergées dans la branche develop. Une fois que nous avons une version stable, nous la mergons dans la branche main. L'intérêt de cette approche est de pouvoir travailler sur des fonctionnalités sans impacter le code principal. Cela permet également de pouvoir travailler en parallèle sur des fonctionnalités différentes.

Voici un exemple du workflow Git utilisé :

🏗️ Architecture

L'architecture générale du projet a été adapté au cours du développement. Nous avons commencé avec une architecture avec 2 repos Git : un pour le frontend et un pour le backend. Après plusieurs échanges, nous nous sommes rendus compte du coût de développement d'un multijoueur temps-réel plaisant ainsi que de son hébergement. Nous avons donc trouvé d'autres solutions en utilisant des services externes pour gérer le multijoueur, disponible uniquement sur les records des parties.

Figma

📦 Déploiement

Pour le déploiement de notre jeu sur GitHub Pages, nous utilisons les actions GitHub. Cela nous permet de déployer automatiquement le jeu à chaque push sur la branche main. Des protections sont bien évientement mises en place pour éviter de déployer une version instable. Le fichier deploy.yml a été repris de la documentation de vite. Notez le passage des variables d'environnement (pour les credentials de Firestore) comme ceci :

env:
VITE_API_KEY: ${{ secrets.VITE_API_KEY }}
VITE_AUTH: ${{ secrets.VITE_AUTH }}
VITE_PID: ${{ secrets.VITE_PID }}
VITE_STORAGE: ${{ secrets.VITE_STORAGE }}
VITE_MSG: ${{ secrets.VITE_MSG }}
VITE_APP_ID: ${{ secrets.VITE_APP_ID }}

Fichier deploy.yml :

# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages

on:
# Runs on pushes targeting the default branch
push:
branches: ['main']

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow one concurrent deployment
concurrency:
group: 'pages'
cancel-in-progress: true

env:
VITE_API_KEY: ${{ secrets.VITE_API_KEY }}
VITE_AUTH: ${{ secrets.VITE_AUTH }}
VITE_PID: ${{ secrets.VITE_PID }}
VITE_STORAGE: ${{ secrets.VITE_STORAGE }}
VITE_MSG: ${{ secrets.VITE_MSG }}
VITE_APP_ID: ${{ secrets.VITE_APP_ID }}

jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload dist folder
path: './dist'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4