Compilation en local de la FAQ#
Pour voir les effets des modifications qu’ils ont apportées aux fichiers sources
.md de la FAQ, les contributeurs doivent a priori :
attendre la fin du processus d’intégration/développement continu (lancé automatiquement sur notre instance GitLab lorsqu’ils les « poussent » sur le dépôt du projet) ;
aller (à nouveau) consulter en ligne sur le site https://faq.gutenberg-asso.fr/ les pages .
htmlcorrespondantes (ré)générées.
Ces contributeurs peuvent (devraient?) préférer compiler la FAQ en local sur leur machine car cela présente au moins trois avantages :
ils peuvent ainsi ne publier qu’après contrôle en local des effets de leurs modifications ;
pour un unique fichier modifié, la compilation ne dure que quelques secondes ce qui permet un contrôle rapide ;
le « log » de la compilation permet d’avoir connaissance de certains problèmes (éventuellement créés par les modifications venant d’être apportées).
Pour pouvoir compiler en local la FAQ, il y a au moins deux méthodes :
pas via une image Docker ;
via une image Docker.
Attention
Nous avons testé ces méthodes avec le système d’exploitation GNU/Linux et les détaillons donc dans ce cadre. Les mêmes instructions sont valables à quelques modifications éventuelles près pour macOS.
À faire
Transposer pour Windows les détails (donnés pour GNU/Linux) des méthodes permettant de compiler la FAQ en local.
1. Méthode n’utilisant pas d’image Docker#
Cette méthode nécessite :
l’installation de logiciels en local sur la machine du contributeur, et ceci principalement dans un environnement
Pythonvirtuel viapip install;le clonage du dépôt
gitde la FAQ qui est hébergé sur l’instance GitLab de GUTenberg ;l’emploi de commandes (
make,git) lancées dans un terminal, avec l’environnment virtuelPythonactivé, afin de tester en local puis de contribuer vos changements.
1.1. Étapes à suivre la première fois#
Si ce n’est déjà fait, installez
git.Si ce n’est déjà fait, installez
pythonetpython3-venv.Clonez le dépôt de la FAQ. Ceci peut être fait de deux façons (voir Édition en clonant le dépôt pour une description plus détaillée) :
soit avec
ssh, ce qui suppose un compte ouvert et une clé publique enregistrée sur notre instance GitLab :git clone ssh://git@gitlab.gutenberg-asso.fr:31022/gutenberg/faq-gut.git
soit avec
https, ce qui n’est pratique sur le long terme que si le mécanisme ducredential.helperdegitest mis en oeuvre afin de ne pas avoir à redonner son nom d’utilisateur GitLab et le mot de passe associé à chaque « push » :git clone https://gitlab.gutenberg-asso.fr/gutenberg/faq-gut.git
Créez un environnement virtuel
python, par exemple nommé.venvet placé dans un sous-dossier (caché) du dossier de la FAQ :python3 -m venv .venv
Activez l’environnement virtuel
.venv:source .venv/bin/activate
L’activation de l’environnement virtuel modifie le prompt de votre ligne de commande en le faisant précéder du nom choisi pour cet environnement virtuel.
Installez certains modules
pythonnécessaires à la compilation de la FAQ (dont bien sûrSphinx-doc) :python3 -m pip install -U pip python3 -m pip install \ Sphinx \ Pillow \ sphinx_comments \ sphinx_design \ sphinxext.opengraph \ myst_parser \ linkify-it-py \ sphinx_tippy \ sphinx_sitemap \ pydata_sphinx_theme \ sphinx_copybutton \ sphinx_togglebutton \ sphinx_examples \ sphinx_last_updated_by_git
Installez
pygments-acetexlexer(modulepythonenrichissant le surligneur syntaxiquePygments) :python3 -m pip install git+https://gitlab.gutenberg-asso.fr/dbitouze/pygments-acetexlexer.git@main
Dans le dossier de la FAQ (où vous devriez vous trouver avec l’environnement virtuel
.venvactif), lancez la compilation de cette dernière :make htmlPour cette première fois, la compilation sera complète et donc un peu longue.
Note
En principe, vous devriez obtenir le même effet avec la commande suivante :
sphinx-build -j auto source build/html -d build/doctrees
Mais il n’y a pas de raison de l’utiliser plutôt que
make html.Vous verrez éventuellement apparaître un certain nombre de warnings signalant, comme lors d’une compilation LaTeX, de potentiels problèmes, dont certains peuvent être ignorés.
Lorsque cette compilation est achevée, vous pouvez consulter dans un navigateur Web la FAQ construite localement sur votre machine. Il suffit pour ce faire de lancer la commande (ici pour le navigateur Firefox) :
firefox build/html/index.html &
puis de naviguer dans la FAQ comme vous le feriez en ligne.
Note
Sur macOS, utilisez
open build/html/index.html.
1.2. Faire des modifications et les intégrer au dépôt#
Il est très important de veiller à bien réactiver l’environnement virtuel
.venv avant toute tentative de compilation de la FAQ en local, si vous
avez depuis la dernière fois fermé votre session ou votre terminal pour
les commandes en ligne.
Une fois rendu à nouveau dans le dossier de la FAQ, lancez, si l’environnement virtuel n’est pas déjà actif, la commande :
source .venv/bin/activate
Puis, exécutez git pull pour intégrer les modifications distantes et
make html pour mettre à jour les fichiers html (ces
fichiers bien sûr ne sont pas intégrés au contrôle de version git, seuls
ceux du répertoire source, et quelques autres d’une nature technique, le
sont).
Vous pouvez alors commencer à apporter des modifications à un ou plusieurs
fichiers sources .md du dossier source. Pour vous entraîner « à blanc »,
vous pouvez modifier le fichier source/8_contribuer/bac-a-sable.md, si vous
craignez de casser quelque chose.
Testez vos modifications par make html. Seuls les fichiers html impactés
par les modifications seront reconstruits et le processus devrait a priori
être rapide.
Lorsque vos modifications vous conviennent, vous pouvez en faire un « commit »
avec les commandes usuelles du type git commit -a. Si au contraire vous
voulez vous en débarrasser faites git stash puis éventuellement git stash drop. Si vous avez déjà fait des commits en local et que leur organisation
ne convient pas vous pouvez exécuter git reset origin/main pour conserver
les fichiers modifiés mais annuler les commits associés. Ou git reset --hard origin/main pour tout oublier et annuler totalement vos modifications.
Une fois vos commits satisfaisants il suffira de git push pour les « pousser »
sur le dépôt de la FAQ. Vos modifications apparaîtront en ligne au plus tard
quelques minutes après.
Indication
Plus précisément, deux possibilités avec le git push :
la procédure aboutit,
ou le dépôt de la FAQ a été modifié entre-temps, et le « push » ne peut aboutir.
Dans ce dernier cas :
git fetchpour récupérer les modifications distantes dansorigin/main,puis
git rebase origin/mainpour que votre branchemainlocale soit un descendant de la branchemaindu dépôt.git pushpourra alors (enfin !) mettre à jour le dépôt avec vos propres modifications.
Dans certains cas l’étape git rebase après le git fetch aura donné lieu à
des conflits car des modifications distantes seront rentrées en collision avec
celles apportées par vos soins. La résolution de ces conflits est la routine
pour les utilisateurs expérimentés de git, mais il faut donc une certaine
expérience avec git pour fonctionner suivant ces mécanismes.
Les commandes comme git merge créent un historique plus embrouillé et moins
linéaire et il est donc toujours préférable de procéder par git rebase origin/main depuis votre branche main ayant des commits supplémentaires,
puis git push.
2. Méthode utilisant une image Docker#
À faire
Compléter la méthode utilisant une image Docker pour compiler la FAQ en local.