Contribuer à cette documentation
Vous pouvez contribuer à la documentation des tutos de l’atelier SI, soit parce que vous animez un atelier et présentez des outils, soit parce que vous souhaitez partager des infos sans pouvoir faire une présentation. Ces explications vous indiquent la démarche à suivre pour contribuer :
Poser une question
Pour poser une question, rendez-vous sur la page GitHub du du projet tutos_atelier_si
et poser votre question dans une nouvelle Issue
Récupération des fichiers
Les fichiers sont sur le gitHub de RNF, dans un repositorie publique. Vous pouvez cloner le repo sur votre PC avec les outils git :
cd /mon/dossier/cible
git clone https://github.com/RNF-SI/tutos_atelier_si.git
Mettre en place l’environnement virtuel
Vous devez ensuite créer l’environnement virtuel. Commencez par installer python et venv si vous ne les avez pas déjà :
sudo apt install build-essential python3 python3-pip python3-venv
Ensuite créez votre environnement virtuel dans le dossier tutos_atelier_si
cd tutos_atelier_si
python3 -m venv venv
Enfin, entrez dans votre environnement virtuel et installez les paquets nécessaires :
source venv/bin/activate
pip install -r requirements.txt
Vous pouvez utiliser deactivate
pour quitter l’environnement virtuel, mais veillez bien à être dedans lorsque vous lancerez les commandes de sphinx.
Contribuer au projet
Créer une nouvelle branche
La branche main est protégée en écriture, vous ne pourrez pas directement pusher vos modifications dessus. Vous devez donc, dans un premier temps, créer votre propre branche de travail :
git checkout manouvellebrancheVous pouvez bien sûr le faire directement depuis votre éditeur de code en clic bouton s’il le permet (comme vscode par exemple).
Une fois dans votre branche, vous pouvez effectuer les modifications que vous souhaitez.
Créer un nouveau tuto
Si vous souhaitez créer un nouveau tuto, ajouter un fichier .rst dans le dossier source (montuto.rst).
Vous devez ensuite l’ajouter au fichier index.rst pour qu’il soit référencé dans l’arboressance :
.. toctree:: contribuer montutoL’arboressance reprendra les titres et sous-titres de votre fichier (vous verrez juste après comment créer des titres et sous-titres dans votre fichier).
Génération des fichiers HTML
Dès que vous ajoutez du contenu (voir section suivante), et si vous voulez voir à quoi ça ressemble, lancez la commande de compilation de sphinx :
make html
Ensuite, lancez simplement le fichier
index.html
dans votre navigateur préféré, et admirez votre travail.
Automatique Génération des fichiers HTML
Vous pouvez également faire en sorte que le code HTML soit automatiquement régénéré, chaque fois que vous enregistrez une modification.Cela vous permet de garder le projet ouvert dans votre navigateur et d’afficher les modifications immédiatement.make livehtml
Les pages HTML générées seront par défaut généré sur l’adresse http://127.0.0.1:8000.
Enregistrer / Partager le nouveau tuto
Pensez à faire régulièrement des commit de votre travail, soit en clic bouton avec votre éditeur, soit avec la commande suivante :
git commit -m 'message du commit'Une fois votre travail terminé, vous pouvez le push sur le github :
git pull git pushIl faudra ensuite aller sur GitHub pour faire une pull-request, afin que j’ajoute votre contribution au contenu global. Encore une fois, certains éditeurs comme VScode permettent de faire des pullrequest directement depuis l’outil.
reStructuredText
Le contenu de cette section est entièrement copié de cette page du blog de FLOZz, qui a décrit à la perfection la manière d’écrire du contenu en reStructuredText. N’hésitez pas à aller visiter son blog !
La syntaxe utilisée pour rédiger une documentation avec Sphinx s’appelle reStructuredText. Si vous êtes habitués au Markdown, vous verrez que cette syntaxe est beaucoup plus complète, mieux normalisée, mais aussi plus stricte.
Je pourrais vous écrire un article complet sur le reStructuredText tellement la syntaxe est complète. Mais comme ce n’est pas le sujet principal de cet article, je vous montre rapidement les principaux formatages, sans vous expliquer toutes les subtilités.
Voici quelques formatages inline :
Voici du texte en *italique*, en **gras**, et voici du ``code inline``.
Pour faire des liens, c’est aussi assez simple (notez bien l’espace avant le « < », il est très important) :
Pour faire un lien inline c'est simple :
lien vers le `blog de FLOZz <https://blog.flozz.fr/>`_
Voici comment on fait des paragraphes en reStructuredText :
Ceci est un paragraphe. Je peux retourner à la ligne, je
serais toujours dans le même paragraphe.
Pour écrire un second paragraphe, il suffit de le séparer
du premier par une ligne vide.
Pour organiser son contenu, il peut être utile d’utiliser des titres. En reStructuredText, il suffit de souligner une ligne pour faire un titre :
Titre principal
===============
Titre de niveau 2
-----------------
Titre de niveau 3
~~~~~~~~~~~~~~~~~
Un autre titre de niveau 2
--------------------------
Ici je vous ai mis ma façon de faire (qui est relativement répendue) mais vous pouvez utiliser pas mal de caractères différents pour souligner vos titres (=-~_#^+<>:” »…), le parseur se débrouillera pour déterminer le niveau du titre en fonction de l’ordre d’apparition des symboles ; le tout c’est de rester cohérent.
Besoin d’une liste à puce ou ordonnée ?
Liste à puce :
* Ceci est une liste
* un autre élément
* un dernier élément
Liste ordonnée :
1. Un
2. Deux
3. Trois
Une autre liste ordonnée :
#. Un
#. Deux
#. Trois
Résultat :
Liste à puce :
Ceci est une liste
un autre élément
un dernier élément
Liste ordonnée :
Un
Deux
Trois
Une autre liste ordonnée :
Un
Deux
Trois
Dans une documentation on a souvent besoin d’écrire du code :
Voici comment faire un bloc que code simple ::
Ceci est un bloc de code. Il est créé grâce aux doubles deux-points.
On peut également placer les doubles deux-points seuls si on ne veut pas
terminer sa phrase par ce symbole.
::
Voici un autre bloc de code...
Et c'est pas fini ! On peut aussi définir un bloc de code avec une syntaxe
plus explicite, grâce à laquelle on peut indiquer à Sphinx dans quel
langage il est rédigé, ce qui lui permettra d'activer la coloration
syntaxique :
.. code-block:: python
#!/usr/bin/env python
print("Ceci est un bloc de code Python\n")
Si vous voulez mettre en évidence des notes, des avertissements ou des choses importantes, c’est également possible :
.. NOTE::
Ceci est une note.
.. WARNING::
Ceci est un avertissement !
.. IMPORTANT::
Ceci est important !
Résultat :
Note
Ceci est une note.
Avertissement
Ceci est un avertissement !
Important
Ceci est important !
Il est également possible d’ajouter des images (après l’avoir déposée dans le dossier _static) :
Voici une image :
.. figure:: ./_static/image.png
Voici un autre image avec quelques paramètres en plus :
.. figure:: ./_static/image.png
:alt: Texte alternatif
:target: http://blog.flozz.fr/
:width: 400px
:align: center
Texte affiché sous l'image
Et pour les plus fifou d’entre vous, il est également possible de faire des tableaux, avec des cellules fusionnées et tout ! Et pour faire ça, il suffit simplement de dessiner le tableau tel qu’on veut le voir s’afficher :
+-----------+-----------+-----------+
| Heading 1 | Heading 2 | Heading 3 |
+===========+===========+===========+
| Hello | World | |
+-----------+-----------+-----------+
| foo | |
+-----------+ bar |
| baz | |
+-----------+-----------------------+
Résultat :
Heading 1 |
Heading 2 |
Heading 3 |
---|---|---|
Hello |
World |
|
foo |
bar |
|
baz |
Sachez qu’en plus des éléments de syntaxe standards de reStructuredText, Sphinx rajoute de nombreux éléments supplémentaires pour les besoins de la documentation.
On a pu voir par exemple toctree un peu plus tôt, mais il y a également des syntaxes pour effectuer des références entre des éléments de la doc, des syntaxes pour documenter des classes, des fonctions,…
Je vous en dis pas plus pour cette fois-ci, et allez voir la documentation de Sphinx pour en apprendre davantage.