- 📦 Prérequis
- 🚀 Installation
- 🛠️ Utilisation
- 🤝 Contribution
- 🏗️ Construit avec
- 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.
Cloner le dépôt en local
git clone git@github.com:anct-cartographie-nationale/mednum-cli.git
Aller dans le dossier du projet pour installer les dépendances
cd mednum-cli
yarn
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
Le fichier d'environnement .env
contient les variables d'environnements nécessaires à l'exécution de la commande mednum publier
Pour faciliter la mise en place du fichier d'environnement, vous pouvez copier le fichier .env.example et le renommer en .env
.
.env
est susceptible de contenir des données sensibles, il ne doit jamais être traqué par un gestionnaire de version.
env.example
est une aide pour la mise en place du fichier .env
, il est public et ne doit pas contenir de données sensibles.
Configurez les variables d'environnements attendus dans le fichier .env
:
L'URL de l'API data.gouv, il est recommandé d'utiliser l'API de démo pour le développement : https://demo.data.gouv.fr/api/1
La clé d'API qui permet à la commande d'effectuer des requêtes sur l'API nécessitant une authentification en votre nom.
Pour obtenir une clé d'API, vous devez créer un compte sur demo.data.gouv.fr.
Une fois connecté, rendez-vous sur votre profil dans le menuAdministration.
En bas à gauche de la page, vous trouverez un encart intitulé Clé d'API
.
Il vous suffit de copier la clé et de la coller comme valeur dans le fichier .env
Il existe deux moyens de publier des jeux de donnés sur data.gouv ; vous pouvez le faire en votre propre nom ou au nom d'une organisation.
Cette variable permet d'indiquer le type de publication :
- La valeur
owner
signifie que vous publiez en votre propre nom. - La valeur
organization
signifie que vous publiez au nom d'une organisation.
Vous devez indiquer l'identifiant de votre compte si vous avez choisi le type owner
ou l'id de l'organisation si vous avez choisi le type organization
.
- Retrouvez l'id de votre compte en vous rendant sur la page d'Administation de votre compte.
- Appuyez sur la touche
F12
pour afficher l'inspecteur de votre navigateur et observez le moniteur de réseau - [Optionnel] Effacez les requêtes présentes pour faciliter l'identification des prochaines requêtes
- Dans la liste à gauche, cliquez sur le menu
Profil
- Une requête avec le paramètre
?owner=
devrait apparaitre dans le moniteur de réseau, la valeur à la suite du=
correspond à l'id de votre compte - Par exemple pour
.../api/1/harvest/sources/?owner=6396e6363a1ab130371ff777&deleted=true&lang=fr&_=1674118850001
, l'id est6396e6363a1ab130371ff777
- Appuyez sur la touche
- Retrouvez l'id d'une organisation en vous rendant sur la page d'Administation de votre compte.
- Dans la liste à gauche, vos organisations s'affichent en dessous du menu
Profil
. - Cliquez sur l'organisation dnt vous voulez retrouver l'id.
- Une fois la page administration de l'organisation, récupérer le dernier paramètre de l'URL de la page : il s'agit de l'id de l'organisation
- Par exemple pour
.../admin/organization/4a4fc649a5a4982f465cfa24/
, l'id est4a4fc649a5a4982f465cfa24
- Dans la liste à gauche, vos organisations s'affichent en dessous du menu
Ces commandes servent dans un contexte de développement de l'application.
Tester le projet :
yarn test
Analyse statique de tous les fichiers .ts
du projet :
yarn lint.all
Analyse statique des fichiers .ts
qui ont été ajoutés avec la commande git add
:
yarn lint.staged
Valider la syntaxe de l'ensemble des commits réalisés depuis la dernière version commune avec la branche main
:
yarn lint.commit
Vérifier la syntaxe de l'ensemble des fichiers du projet :
yarn prettier.check
Corriger la syntaxe de l'ensemble des fichiers du projet :
yarn prettier
Générer une version prête à être publiée :
yarn build
- 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/
outest/
en fonction du type de modification prévu, pour plus de détails à ce sujet, consulter Conventional Commits cheat sheet
Les commits de ce repository doivent respecter la syntaxe décrite par la spécification des Commits Conventionnels
La branche main
, ainsi que l'ensemble des branches de travail avec un préfixe valide requièrent que les commits soient signés :
- La documentation de GitHub indique comment configurer la signature des commits
- Les utilisateurs de keybase peuvent signer leurs commits avec leur clé GPG sur Keybase
- TypeScript est un langage open source construit à partir de JavaScript
- 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.
- Github Actions est l'outil d'intégration et de déploiement continu intégré à GitHub
- L'historique des déploiements est disponible sous l'onglet Actions
- Secrets du dépôt :
NODE_AUTH_TOKEN
: Clé d'accès NPM pour publier sur l'organisation @gouvfr-anct
- Secrets de l'environnement
demo
: - Secrets de l'environnement
production
:
À chaque fusion sur la branche main
, l'outil est publié sur npm
- Organisation: @gouvfr-anct
- Package: @gouvfr-anct/mednum
Les workflows GitHub validate.yml et transform-and-publish.yml se chargent de transformer et de publier automatiquement les données :
validate.yml
est lancé à chaque push sur une branche en cours de développement. Les données sont publiées dans un environnement de démo de data.gouv.
Pour qu'une nouvelle source de données soit prise en compte, il faut bien penser à l'ajouter dans le jobpublish-to-data-gouv
: unestrategy
de typematrix
définie chaquesource
à transformer et publier.release.yml
est lancé à chaque fusion surmain
. Les données sont publiées dans l'organisation Cartographie Nationale des lieux de médiation numérique sur data.gouv.
Pour qu'une nouvelle source de données soit prise en compte, il faut bien penser à l'ajouter dans le jobpublish-to-data-gouv
: unestrategy
de typematrix
définie chaquesource
à transformer et publier.daily
est lancé tous les jours à 04:15 AM. Les données sont publiées dans l'organisation Cartographie Nationale des lieux de médiation numérique sur data.gouv.
Pour qu'une nouvelle source de données soit prise en compte, il faut bien penser à l'ajouter dans le jobpublish-to-data-gouv
: unestrategy
de typematrix
définie chaquesource
à transformer et publier.