Migration de la CI #1

Closed
opened 2022-11-17 16:28:07 +00:00 by jeanas · 17 comments
Collaborator

On avait une CI sur GitHub. @mdk, tu as commencé à regarder si c'était facile de porter ça sur Gitea ?

On avait une CI sur GitHub. @mdk, tu as commencé à regarder si c'était facile de porter ça sur Gitea ?
Owner

Non je n'ai pas commencé à regarder.

Il existe une collection d'outils de CI utilisable par gitea ici :

=> https://gitea.com/gitea/awesome-gitea#user-content-devops

Je ne suis pas convaincu que ce soit bien : l'action Github lançait, entre autre, des sphinx build très consommateurs de resources (CPU et réseau) à chaque petite modification sur une PR.

Je n'ai rien contre la CI, mais j'ai quelque chose contre l'utilisation déraisonnée des resources.

Non je n'ai pas commencé à regarder. Il existe une collection d'outils de CI utilisable par gitea ici : => https://gitea.com/gitea/awesome-gitea#user-content-devops Je ne suis pas convaincu que ce soit bien : l'action Github lançait, entre autre, des `sphinx build` très consommateurs de resources (CPU et réseau) à chaque petite modification sur une PR. Je n'ai rien contre la CI, mais j'ai quelque chose contre l'utilisation déraisonnée des resources.
Author
Collaborator

D'un côté, c'est vrai, d'un autre côté, il faut s'avouer qu'on est une goutte d'eau dans la mer à côté d'autres CI bien plus consommatrices.

Quoi qu'il en soit, ce serait bien d'avoir au moins pospell, sphinx-lint et powrap, qui sont rapides.

D'un côté, c'est vrai, d'un autre côté, il faut s'avouer qu'on est une goutte d'eau dans la mer à côté d'autres CI bien plus consommatrices. Quoi qu'il en soit, ce serait bien d'avoir au moins pospell, sphinx-lint et powrap, qui sont rapides.
Author
Collaborator

Un truc qui serait bien, ce serait d'avoir le sphinx-build qui tourne, mais seulement au moment de fusionner la PR (pour éviter les erreurs triviales qui cassent la prod, mais en compromis pour ne pas lancer trop de builds non plus).

Un truc qui serait bien, ce serait d'avoir le sphinx-build qui tourne, mais seulement au moment de fusionner la PR (pour éviter les erreurs triviales qui cassent la prod, mais en compromis pour ne pas lancer trop de builds non plus).
Owner

il faut s'avouer qu'on est une goutte d'eau dans la mer

Tout à fait d'accord, mais ça ne justifie pas une utilisation déraisonnée des resources.

> il faut s'avouer qu'on est une goutte d'eau dans la mer Tout à fait d'accord, mais ça ne justifie pas une utilisation déraisonnée des resources.
Collaborator

@mdk on peut demander à sphinx de build juste des fichiers de doc qu'on lui passerait (ceux qui auraient changé par ex), et pas tout le projet ?

@mdk on peut demander à sphinx de build juste des fichiers de doc qu'on lui passerait (ceux qui auraient changé par ex), et pas tout le projet ?
Owner

J'en doute, il ne pourrai pas repérer de liens cassés s'il n'a pas le reste du projet.

J'en doute, il ne pourrai pas repérer de liens cassés s'il n'a pas le reste du projet.
Author
Collaborator

https://www.sphinx-doc.org/en/master/man/sphinx-build.html#description

“By default, everything that is outdated is built. Output only for selected files can be built by specifying individual filenames.”

https://www.sphinx-doc.org/en/master/man/sphinx-build.html#description “By default, everything that is outdated is built. Output only for selected files can be built by specifying individual filenames.”
Collaborator

on va sûrement pas retrouver un service de CI avec un free-tiers comme Github Actions. Entretemps, on risque de casser la doc python fr, non ?

on va sûrement pas retrouver un service de CI avec un free-tiers comme Github Actions. Entretemps, on risque de casser la doc python fr, non ?
Owner

https://woodpecker.afpy.org/AFPy/python-docs-fr/build/17/3

Il reste un peu de boulot :D

Attention je déplace la machine, il peut y avoir des surprises jusqu'à ~13h aujourd'hui.

https://woodpecker.afpy.org/AFPy/python-docs-fr/build/17/3 Il reste un peu de boulot :D Attention je déplace la machine, il peut y avoir des surprises jusqu'à ~13h aujourd'hui.
Owner

Il y a du mieux à chaque build a priori :)
Merci @mdk !

Il y a du mieux à chaque build a priori :) Merci @mdk !
Owner

Hey ça commence à marcher comme il faut, qui veut review #118 ?

Hey ça commence à marcher comme il faut, qui veut review https://git.afpy.org/AFPy/python-docs-fr/pulls/118 ?
Owner

“By default, everything that is outdated is built. Output only for selected files can be built by specifying individual filenames.”

Oui, s'il a son "cache" sous la main, d'un build précédent, sur la branche 3.11, c'est super spécifique comme condition. Et il n'y a pas de cache (du tout) dans Woodpecker CI ☹ (oui c'est moche pour la bande passante de PyPI).

> “By default, everything that is outdated is built. Output only for selected files can be built by specifying individual filenames.” Oui, s'il a son "cache" sous la main, d'un build précédent, sur la branche 3.11, c'est super spécifique comme condition. Et il n'y a pas de cache (du tout) dans Woodpecker CI ☹ (oui c'est moche pour la bande passante de PyPI).
Author
Collaborator

Non non :

~/repos/python-docs-fr/venv/cpython/Doc $ git clean -xdf; time sphinx-build -jauto . build/html
Suppression de build/
Suppression de tools/extensions/__pycache__/
Sphinx v6.2.0+/b7345ad06 en cours d'exécution
Création du répertoire de sortie... fait
Construction en cours [mo] : cibles périmées pour les fichiers po 0
Écriture... 
Construction [html] : cibles périmées pour les fichiers sources 482
Mise à jour de l'environnement : [nouvelle configuration] 482 ajouté(s), 0 modifié(s), 0 supprimé(s)
Lecture des sources... [100%] whatsnew/changelog .. whatsnew/index                                                                     
Recherche des fichiers périmés... aucun résultat
Environnement de sérialisation... fait
Vérification de la cohérence... fait
Document en préparation... fait
/home/jean/repos/python-docs-fr/venv/cpython/Doc/library/multiprocessing.rst:457: WARNING: Analyse lexicale de literal_bloc impossible en "python3". Mise en évidence annulée.
Écriture... [100%] whatsnew/3.10 .. whatsnew/index                                                                                     
Génération des index... genindex py-modindex fait
Écriture des pages additionnelles... download index search opensearch fait
Copie des images... [100%] using/win_installer.png                                                                                     
Copie des fichiers téléchargeables... [100%] includes/tzinfo_examples.py                                                               
Copie des fichiers statiques... fait
Copie des fichiers complémentaires... fait
Export de l'index de recherche en English (code: en)... fait
Export de l'inventaire des objets... fait
Writing glossary.json
La compilation a réussi, 1 avertissement.

Les pages HTML sont dans build/html.

real	1m41,328s
user	3m41,513s
sys	0m8,377s
~/repos/python-docs-fr/venv/cpython/Doc $ git clean -xdf; time sphinx-build -jauto . build/html library/os.rst
Suppression de build/
Suppression de tools/extensions/__pycache__/
Sphinx v6.2.0+/b7345ad06 en cours d'exécution
Création du répertoire de sortie... fait
Construction en cours [mo] : cibles spécifiées pour les fichiers po 0
Écriture... 
Construction [html] : 1 fichiers source saisis en ligne de commande
Mise à jour de l'environnement : [nouvelle configuration] 482 ajouté(s), 0 modifié(s), 0 supprimé(s)
Lecture des sources... [100%] whatsnew/changelog .. whatsnew/index                                                                     
Recherche des fichiers périmés... aucun résultat
Environnement de sérialisation... fait
Vérification de la cohérence... fait
Document en préparation... WARNING: L'index de recherche n'a pas pu être chargé, mais tous les documents ne seront pas construits: l'index sera incomplet.
fait
Écriture... [100%] library/os                                                                                                          
Génération des index... genindex py-modindex fait
Écriture des pages additionnelles... download index search opensearch fait
Copie des fichiers téléchargeables... [100%] includes/tzinfo_examples.py                                                               
Copie des fichiers statiques... fait
Copie des fichiers complémentaires... fait
Export de l'index de recherche en English (code: en)... fait
Export de l'inventaire des objets... fait
La compilation a réussi, 1 avertissement.

Les pages HTML sont dans build/html.

real	0m49,240s
user	2m42,424s
sys	0m5,297s

Quand on fait ça, il lit tous les fichiers .rst, mais n'écrit que certains fichiers .html. Ça ne rend pas le temps linéaire en fonction du nombre de documents, il y a quand même un temps fixé pour lire tous les documents, mais malgré tout, il y a un gain.

Non non : ``` ~/repos/python-docs-fr/venv/cpython/Doc $ git clean -xdf; time sphinx-build -jauto . build/html Suppression de build/ Suppression de tools/extensions/__pycache__/ Sphinx v6.2.0+/b7345ad06 en cours d'exécution Création du répertoire de sortie... fait Construction en cours [mo] : cibles périmées pour les fichiers po 0 Écriture... Construction [html] : cibles périmées pour les fichiers sources 482 Mise à jour de l'environnement : [nouvelle configuration] 482 ajouté(s), 0 modifié(s), 0 supprimé(s) Lecture des sources... [100%] whatsnew/changelog .. whatsnew/index Recherche des fichiers périmés... aucun résultat Environnement de sérialisation... fait Vérification de la cohérence... fait Document en préparation... fait /home/jean/repos/python-docs-fr/venv/cpython/Doc/library/multiprocessing.rst:457: WARNING: Analyse lexicale de literal_bloc impossible en "python3". Mise en évidence annulée. Écriture... [100%] whatsnew/3.10 .. whatsnew/index Génération des index... genindex py-modindex fait Écriture des pages additionnelles... download index search opensearch fait Copie des images... [100%] using/win_installer.png Copie des fichiers téléchargeables... [100%] includes/tzinfo_examples.py Copie des fichiers statiques... fait Copie des fichiers complémentaires... fait Export de l'index de recherche en English (code: en)... fait Export de l'inventaire des objets... fait Writing glossary.json La compilation a réussi, 1 avertissement. Les pages HTML sont dans build/html. real 1m41,328s user 3m41,513s sys 0m8,377s ~/repos/python-docs-fr/venv/cpython/Doc $ git clean -xdf; time sphinx-build -jauto . build/html library/os.rst Suppression de build/ Suppression de tools/extensions/__pycache__/ Sphinx v6.2.0+/b7345ad06 en cours d'exécution Création du répertoire de sortie... fait Construction en cours [mo] : cibles spécifiées pour les fichiers po 0 Écriture... Construction [html] : 1 fichiers source saisis en ligne de commande Mise à jour de l'environnement : [nouvelle configuration] 482 ajouté(s), 0 modifié(s), 0 supprimé(s) Lecture des sources... [100%] whatsnew/changelog .. whatsnew/index Recherche des fichiers périmés... aucun résultat Environnement de sérialisation... fait Vérification de la cohérence... fait Document en préparation... WARNING: L'index de recherche n'a pas pu être chargé, mais tous les documents ne seront pas construits: l'index sera incomplet. fait Écriture... [100%] library/os Génération des index... genindex py-modindex fait Écriture des pages additionnelles... download index search opensearch fait Copie des fichiers téléchargeables... [100%] includes/tzinfo_examples.py Copie des fichiers statiques... fait Copie des fichiers complémentaires... fait Export de l'index de recherche en English (code: en)... fait Export de l'inventaire des objets... fait La compilation a réussi, 1 avertissement. Les pages HTML sont dans build/html. real 0m49,240s user 2m42,424s sys 0m5,297s ``` Quand on fait ça, il lit tous les fichiers .rst, mais n'écrit que certains fichiers .html. Ça ne rend pas le temps linéaire en fonction du nombre de documents, il y a quand même un temps fixé pour lire tous les documents, mais malgré tout, il y a un gain.
Owner

Oh intéressant, il faudra tester (mais dans une PR à part, j'aimerai déjà merger #118).

Oh intéressant, il faudra tester (mais dans une PR à part, j'aimerai déjà merger https://git.afpy.org/AFPy/python-docs-fr/pulls/118).
Owner

Pas sûr d'avoir envie d'aller plus loin dans la CI pour le moment : si on lance un build sphinx ça nécessite de cloner cpython à chaque fois, je trouve ça un peu bourrin.

Mais on a une CI qui marche \o/ je ferme l'issue.

Pas sûr d'avoir envie d'aller plus loin dans la CI pour le moment : si on lance un build sphinx ça nécessite de cloner cpython à chaque fois, je trouve ça un peu bourrin. Mais on a une CI qui marche \o/ je ferme l'issue.
mdk closed this issue 2023-04-03 21:14:38 +00:00
Collaborator

C'est très très bien comme ça !
Merci

C'est très très bien comme ça ! Merci
Author
Collaborator

On pourrait faire un clone partiel. Mais la CI actuelle me va, on verra aussi à l'usage.

On pourrait faire un clone partiel. Mais la CI actuelle me va, on verra aussi à l'usage.
Sign in to join this conversation.
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: AFPy/python-docs-fr#1
No description provided.