Skip to content

Latest commit

 

History

History
143 lines (92 loc) · 6.55 KB

File metadata and controls

143 lines (92 loc) · 6.55 KB

Guide de contribution

Table des matières

Prérequis

  • Git : Système de contrôle de versions distribué d'un ensemble de fichiers
  • Node : Environnement d'exécution pour Javascript
  • Yarn : Gestionnaire de paquets pour les produits développés dans des environnements Node

Node et Yarn peuvent être installés via nvm qui permet d'obtenir et d'utiliser rapidement différentes versions de Node via la ligne de commande.

Installation

Mise en place des sources et des dépendances

Cloner le dépôt en local

git clone git@github.com:anct-cartographie-nationale/lieux-de-mediation-numerique.git

Aller dans le dossier du projet pour installer les dépendances

cd lieux-de-mediation-numerique
yarn

Installer Husky

Husky est un outil de gestion des hooks git pour effectuer des tâches automatiques

yarn husky install

Rendre exécutable les fichiers qui contiennent les hooks :

chmod a+x .husky/commit-msg
chmod a+x .husky/pre-commit

Utilisation

Ces commandes servent dans un contexte de développement de l'application.

Construction de la bibliothèque

Exécuter yarn build, le résultat esy disponible dans le dossier lib/.

Test

Exécuter yarn test pour tester le projet.

ESLint

Exécuter yarn lint.es pour une analyse statique des fichiers .ts du projet.

Commit lint

Exécuter yarn lint.commit pour valider la syntaxe de l'ensemble des commits réalisés depuis la dernière version commune avec la branche main.

Prettier

Exécuter yarn prettier pour mettre à niveau la syntaxe de l'ensemble des fichiers du projet.

Contribution

Nommage des branches

  • Avant de créer une nouvelle branche de travail, récupérer les dernières modifications disponibles sur la branche main
  • La nouvelle branche de travail doit ête préfixée par build/, chore/, ci/, docs/, feat/, fix/, perf/, refactor/, revert/, style/ ou test/ en fonction du type de modification prévu, pour plus de détails à ce sujet, consulter Conventional Commits cheat sheet

Commits

Convention

Les commits de ce repository doivent respecter la syntaxe décrite par la spécification des Commits Conventionnels

Signature

La branche main, ainsi que l'ensemble des branches de travail avec un préfixe valide requièrent que les commits soient signés :

Contribuer sur la branche principale

  • La branche principale est main, il n'est pas possible de publier en faisant un push depuis un dépôt local
  • Il faut forcément créer une nouvelle branche de travail avec l'un préfixe autorisé
  • À chaque publication sur une branche de travail, le workflow validate sur github actions vérifie
    • Qu'il est possible de créer un build sans erreur
    • Que la syntaxe correspond bien à ce qui est défini par Prettier
    • Que le code écrit en TypeScript respecte les conventions décrites par les règles ESLint
    • Que les messages des commits suivent le standard établi par Conventional Commits
  • Une fois les développements terminés, il faut créer une pull request avec la banche de travail comme origin et la branche main comme destination.
  • La pull request ne peut être fusionné que si :
    • Les étapes du workflow validate sont valides
    • Les fichiers modifiés ont été revus par au moins une personne
    • Les commits ajoutés sont signés
  • La branche de travail est supprimée automatiquement une fois qu'elle a été fusionnée

Publier la bibliothèque

La fusion sur la branche principale entraîne automatiquement la publication d'une nouvelle version du paquet sur le registre NPM.

Construit avec

langages & Frameworks

  • TypeScript est un langage open source construit à partir de JavaScript

Outils

CLI

  • Vitest est une boîte à outils pour écrire des tests automatisés en JavaScript
  • Eslint est un analyseur statique de JavaScript
  • Prettier est un magnificateur de code source en JavaScript
  • Husky est un outil qui permet d'effectuer des vérifications automatiques avant de publier des contributions.
  • Commitlint est un outil de vérification des commits suivant le format des Commits Conventionnels.
  • Lint-staged est un outil qui permet d'effectuer un ensemble de vérifications à l'aide d'autres outils sur un ensemble de fichiers qui viennent d'être modifiés.

CI/CD

  • Github Actions est l'outil d'intégration et de déploiement continu intégré à GitHub
  • Secrets du dépôt :
    • NODE_AUTH_TOKEN : Clé d'accès NPM pour publier sur l'organisation @gouvfr-anct

Déploiement