i18n: check messages are translated and compile successfully in CI (#71227) #5

Closed
aberriot wants to merge 2 commits from wip/71227-ci-translations into main
Owner

tox -e i18n pour lancer le check.

A discuter ensemble sur à quel moment on l'applique (sur les PR, sur main, uniquement sur les tags, etc.)

Discuté lundi : on teste quelque temps sur chrono sur les PR et on généralise / adapte si ça pose problème.

`tox -e i18n` pour lancer le check. ~~A discuter ensemble sur à quel moment on l'applique (sur les PR, sur main, uniquement sur les tags, etc.)~~ Discuté lundi : on teste quelque temps sur chrono sur les PR et on généralise / adapte si ça pose problème.
Author
Owner

Build qui tourne sur Jenkins :

[1260515] /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5$ /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5/check-missing-translations.sh
processing locale fr
All messages are translated
Compiling messages…
processing file django.po in /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5/chrono/locale/fr/LC_MESSAGES
All messages are translated and compile successfully!

Je relance un build avec des trads manquantes / fuzzy exprès

[Build qui tourne sur Jenkins](https://jenkins.entrouvert.org/job/gitea-wip/job/chrono/job/PR-5/1/console) : ``` [1260515] /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5$ /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5/check-missing-translations.sh processing locale fr All messages are translated Compiling messages… processing file django.po in /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5/chrono/locale/fr/LC_MESSAGES All messages are translated and compile successfully! ``` Je relance un build avec des trads manquantes / fuzzy exprès
Author
Owner

Build avec des traductions manquantes

[1268979] /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5$ /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5/check-missing-translations.sh
processing locale fr
Some messages are not translated
Untranslated:
# Chrono French Translation. # Copyright (C) 2016 Entr'ouvert # This file is distributed under the same license as the Chrono package. # Frederic Peters <fpeters@entrouvert.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: chrono 0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-11-10 16:26+0100\n" "PO-Revision-Date: 2022-10-31 17:43+0100\n" "Last-Translator: Frederic Peters <fpeters@entrouvert.com>\n" "Language: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: chrono/agendas/templates/workalendar_locale.html msgid "I am a missing translation" msgstr ""
Fuzzy:
# Chrono French Translation. # Copyright (C) 2016 Entr'ouvert # This file is distributed under the same license as the Chrono package. # Frederic Peters <fpeters@entrouvert.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: chrono 0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-11-10 16:26+0100\n" "PO-Revision-Date: 2022-10-31 17:43+0100\n" "Last-Translator: Frederic Peters <fpeters@entrouvert.com>\n" "Language: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: chrono/agendas/models.py #, fuzzy #| msgid "Events" msgid "Evenst" msgstr "Événements"
ERROR: InvocationError for command /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5/check-missing-translations.sh (exited with code 1)
[Build avec des traductions manquantes](https://jenkins.entrouvert.org/job/gitea-wip/job/chrono/job/PR-5/2/console) ``` [1268979] /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5$ /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5/check-missing-translations.sh processing locale fr Some messages are not translated Untranslated: # Chrono French Translation. # Copyright (C) 2016 Entr'ouvert # This file is distributed under the same license as the Chrono package. # Frederic Peters <fpeters@entrouvert.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: chrono 0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-11-10 16:26+0100\n" "PO-Revision-Date: 2022-10-31 17:43+0100\n" "Last-Translator: Frederic Peters <fpeters@entrouvert.com>\n" "Language: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: chrono/agendas/templates/workalendar_locale.html msgid "I am a missing translation" msgstr "" Fuzzy: # Chrono French Translation. # Copyright (C) 2016 Entr'ouvert # This file is distributed under the same license as the Chrono package. # Frederic Peters <fpeters@entrouvert.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: chrono 0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-11-10 16:26+0100\n" "PO-Revision-Date: 2022-10-31 17:43+0100\n" "Last-Translator: Frederic Peters <fpeters@entrouvert.com>\n" "Language: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: chrono/agendas/models.py #, fuzzy #| msgid "Events" msgid "Evenst" msgstr "Événements" ERROR: InvocationError for command /var/lib/jenkins/workspace/gitea-wip_chrono_PR-5/check-missing-translations.sh (exited with code 1) ```
aberriot force-pushed wip/71227-ci-translations from 5e219f330b to 3627325e0b 2022-11-16 10:47:30 +01:00 Compare
Author
Owner

Prêt pour la relecture, si quelqu'un se sent :)

Prêt pour la relecture, si quelqu'un se sent :)
Owner

Je pense que ce serait plus sympa d'avoir des vrais sauts de ligne plutôt que des \n, non ?

Je pense que ce serait plus sympa d'avoir des vrais sauts de ligne plutôt que des \n, non ?
aberriot force-pushed wip/71227-ci-translations from 3627325e0b to d5f2cd01bd 2022-11-21 14:14:37 +01:00 Compare
aberriot force-pushed wip/71227-ci-translations from d5f2cd01bd to 0b14926d98 2022-11-21 14:15:31 +01:00 Compare
aberriot force-pushed wip/71227-ci-translations from 0b14926d98 to ecb6a87b12 2022-11-21 14:28:00 +01:00 Compare
Author
Owner

Je pense que ce serait plus sympa d'avoir des vrais sauts de ligne plutôt que des \n, non ?

Corrigé, ça donne ça maintenant : https://jenkins.entrouvert.org/job/gitea-wip/job/chrono/job/PR-5/7/execution/node/14/log/

Some messages are not translated
Untranslated:
# Chrono French Translation.
# Copyright (C) 2016 Entr'ouvert
# This file is distributed under the same license as the Chrono package.
# Frederic Peters <fpeters@entrouvert.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: chrono 0
"
"Report-Msgid-Bugs-To: 
"
"POT-Creation-Date: 2022-11-21 14:27+0100
"
"PO-Revision-Date: 2022-11-15 15:10+0100
"
"Last-Translator: Frederic Peters <fpeters@entrouvert.com>
"
"Language: French
"
"MIME-Version: 1.0
"
"Content-Type: text/plain; charset=UTF-8
"
"Content-Transfer-Encoding: 8bit
"
"Plural-Forms: nplurals=2; plural=(n > 1);
"

#: chrono/api/views.py
msgid "can not set check fields for non events agenda"
msgstr ""
Fuzzy:
# Chrono French Translation.
# Copyright (C) 2016 Entr'ouvert
# This file is distributed under the same license as the Chrono package.
# Frederic Peters <fpeters@entrouvert.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: chrono 0
"
"Report-Msgid-Bugs-To: 
"
"POT-Creation-Date: 2022-11-21 14:27+0100
"
"PO-Revision-Date: 2022-11-15 15:10+0100
"
"Last-Translator: Frederic Peters <fpeters@entrouvert.com>
"
"Language: French
"
"MIME-Version: 1.0
"
"Content-Type: text/plain; charset=UTF-8
"
"Content-Transfer-Encoding: 8bit
"
"Plural-Forms: nplurals=2; plural=(n > 1);
"

#: chrono/manager/templates/chrono/manager_agenda_duplicate_form.html
#, fuzzy
#| msgid "Duplicate Agenda"
msgid "Duplicateuiuieee Agenda"
msgstr "Duplication de l’agenda"

#: chrono/manager/templates/chrono/manager_agenda_duplicate_form.html
#, fuzzy
#| msgid "Duplicate Agenda"
msgid "Duplicate Agendaeeee"
msgstr "Duplication de l’agenda"

(aucune idée de pourquoi les sauts de lines supplémentaires avant les quotes, mais au moins maintenant on a bien un truc par ligne et on peut voir les chaines non traduites ou fuzzy dans le détail)

> Je pense que ce serait plus sympa d'avoir des vrais sauts de ligne plutôt que des \n, non ? Corrigé, ça donne ça maintenant : https://jenkins.entrouvert.org/job/gitea-wip/job/chrono/job/PR-5/7/execution/node/14/log/ ``` Some messages are not translated Untranslated: # Chrono French Translation. # Copyright (C) 2016 Entr'ouvert # This file is distributed under the same license as the Chrono package. # Frederic Peters <fpeters@entrouvert.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: chrono 0 " "Report-Msgid-Bugs-To: " "POT-Creation-Date: 2022-11-21 14:27+0100 " "PO-Revision-Date: 2022-11-15 15:10+0100 " "Last-Translator: Frederic Peters <fpeters@entrouvert.com> " "Language: French " "MIME-Version: 1.0 " "Content-Type: text/plain; charset=UTF-8 " "Content-Transfer-Encoding: 8bit " "Plural-Forms: nplurals=2; plural=(n > 1); " #: chrono/api/views.py msgid "can not set check fields for non events agenda" msgstr "" Fuzzy: # Chrono French Translation. # Copyright (C) 2016 Entr'ouvert # This file is distributed under the same license as the Chrono package. # Frederic Peters <fpeters@entrouvert.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: chrono 0 " "Report-Msgid-Bugs-To: " "POT-Creation-Date: 2022-11-21 14:27+0100 " "PO-Revision-Date: 2022-11-15 15:10+0100 " "Last-Translator: Frederic Peters <fpeters@entrouvert.com> " "Language: French " "MIME-Version: 1.0 " "Content-Type: text/plain; charset=UTF-8 " "Content-Transfer-Encoding: 8bit " "Plural-Forms: nplurals=2; plural=(n > 1); " #: chrono/manager/templates/chrono/manager_agenda_duplicate_form.html #, fuzzy #| msgid "Duplicate Agenda" msgid "Duplicateuiuieee Agenda" msgstr "Duplication de l’agenda" #: chrono/manager/templates/chrono/manager_agenda_duplicate_form.html #, fuzzy #| msgid "Duplicate Agenda" msgid "Duplicate Agendaeeee" msgstr "Duplication de l’agenda" ``` (aucune idée de pourquoi les sauts de lines supplémentaires avant les quotes, mais au moins maintenant on a bien un truc par ligne et on peut voir les chaines non traduites ou fuzzy dans le détail)
aberriot force-pushed wip/71227-ci-translations from ecb6a87b12 to 679c6cce71 2022-11-21 14:54:18 +01:00 Compare
Author
Owner

Après un rebase sur main, on a le check qui plante sur cette chaine qui n'est effectivement pas traduite:

#: chrono/api/views.py
msgid "can not set check fields for non events agenda"
msgstr ""
Fuzzy:

Tous les autres checks passent, je propose de merger et de traduire séparément.

Après un rebase sur main, on a le check qui plante sur cette chaine qui n'est effectivement pas traduite: ``` #: chrono/api/views.py msgid "can not set check fields for non events agenda" msgstr "" Fuzzy: ``` Tous les autres checks passent, je propose de merger et de traduire séparément.
Owner

Pour discuter un peu du fonctionnement, je proposerais que ça ne fasse pas échouer les branches wip/, dans l'idée qu'en phase de développement, on a envie de pouvoir pousser une branche tôt, et qu'à ce moment on est concentré sur le code et les tests, qu'être interrompu par jenkins en erreur disant qu'il faut déjà se préoccuper des traductions, ça va casser trop régulièrement la concentration.

Évidemment ça suppose ensuite qu'une fois envoyé dans la branche principale, on envoie également les traductions, et si on oublie, que le job jenkins échoue, on les ajoute tout de suite. J'ai conscience d'un peu me tirer une balle dans le pied en misant uniquement sur ça, mais il y aura bien quelqu'un/e pour voir l'erreur (vs actuellement juste une préoccupation avant de tagguer), et je pense que le gain serait donc déjà là.

Pour discuter un peu du fonctionnement, je proposerais que ça ne fasse pas échouer les branches wip/, dans l'idée qu'en phase de développement, on a envie de pouvoir pousser une branche tôt, et qu'à ce moment on est concentré sur le code et les tests, qu'être interrompu par jenkins en erreur disant qu'il faut déjà se préoccuper des traductions, ça va casser trop régulièrement la concentration. Évidemment ça suppose ensuite qu'une fois envoyé dans la branche principale, on envoie également les traductions, et si on oublie, que le job jenkins échoue, on les ajoute tout de suite. J'ai conscience d'un peu me tirer une balle dans le pied en misant uniquement sur ça, mais il y aura bien quelqu'un/e pour voir l'erreur (vs actuellement juste une préoccupation avant de tagguer), et je pense que le gain serait donc déjà là.
aberriot force-pushed wip/71227-ci-translations from c77649acdf to 512010265f 2022-11-23 09:14:30 +01:00 Compare
Author
Owner

Activé uniquement sur main, est-ce que c'est bon pour toi @fpeters ?

Activé uniquement sur main, est-ce que c'est bon pour toi @fpeters ?
Owner

Évidemment ça suppose ensuite qu'une fois envoyé dans la branche principale, on envoie également les traductions, et si on oublie, que le job jenkins échoue, on les ajoute tout de suite.

C'est un sacré pari, ça suppose que le petit choc électrique d'avoir fait planter le build principal instaure vite le réflexe pavlovien de faire ses trads avant de pousser.

Si ça n'arrive pas il faudra revenir en arrière, je ne pense pas qu'on veuille d'un monde où les builds soient régulièrement en erreur (ce qui diminuera aussi l'attention collective qui y est apportée).

D'ailleurs pour avoir plus de chances que le pari soit validé il faudrait ajouter un truc à jenkins pour que la personne qui a fait planter le build principal soit notifiée (actuellement c'est une info qu'il faut souvent pointer via jabber).

Alternativement il me semble que ça existe les hooks git côté serveur pour refuser un push, on ne pourrait pas simplement refuser le push sur main si les trads ne sont pas là ? (makemessages prend trois plombes mais ça vaut peut-être le coup de regarder ce qui prend tant de temps et avoir une commande custom plus rapide)

> Évidemment ça suppose ensuite qu'une fois envoyé dans la branche principale, on envoie également les traductions, et si on oublie, que le job jenkins échoue, on les ajoute tout de suite. C'est un sacré pari, ça suppose que le petit choc électrique d'avoir fait planter le build principal instaure vite le réflexe pavlovien de faire ses trads avant de pousser. Si ça n'arrive pas il faudra revenir en arrière, je ne pense pas qu'on veuille d'un monde où les builds soient régulièrement en erreur (ce qui diminuera aussi l'attention collective qui y est apportée). D'ailleurs pour avoir plus de chances que le pari soit validé il faudrait ajouter un truc à jenkins pour que la personne qui a fait planter le build principal soit notifiée (actuellement c'est une info qu'il faut souvent pointer via jabber). Alternativement il me semble que ça existe les hooks git côté serveur pour refuser un push, on ne pourrait pas simplement refuser le push sur main si les trads ne sont pas là ? (makemessages prend trois plombes mais ça vaut peut-être le coup de regarder ce qui prend tant de temps et avoir une commande custom plus rapide)
Author
Owner

Alternativement il me semble que ça existe les hooks git côté serveur pour refuser un push, on ne pourrait pas simplement refuser le push sur main si les trads ne sont pas là ? (makemessages prend trois plombes mais ça vaut peut-être le coup de regarder ce qui prend tant de temps et avoir une commande custom plus rapide)

Quel est l'avantage d'avoir un hook serveur qui refuse les build par rapport à un check en CI ? Le résultat sera le même, on ne pourra pas merger sur main, mais au moins dans Jenkins on a les logs, on peut afficher des choses, etc.

> Alternativement il me semble que ça existe les hooks git côté serveur pour refuser un push, on ne pourrait pas simplement refuser le push sur main si les trads ne sont pas là ? (makemessages prend trois plombes mais ça vaut peut-être le coup de regarder ce qui prend tant de temps et avoir une commande custom plus rapide) Quel est l'avantage d'avoir un hook serveur qui refuse les build par rapport à un check en CI ? Le résultat sera le même, on ne pourra pas merger sur main, mais au moins dans Jenkins on a les logs, on peut afficher des choses, etc.
Owner

qui refuse les build

Le hook ce serait un truc qui refuse l'envoi (git push retourne une erreur « fais tes trads et reviens me voir ensuite »). Ça serait mieux à tout point de vue il me semble, avec l'énorme désavantage d'avoir un git push plus long (en l'état actuel la seconde que prend makemessages parait excessive, sans parler de la nécessité du venv qui peut également être un point bloquant).

> qui refuse les build Le hook ce serait un truc qui refuse l'envoi (git push retourne une erreur « fais tes trads et reviens me voir ensuite »). Ça serait mieux à tout point de vue il me semble, avec l'énorme désavantage d'avoir un git push plus long (en l'état actuel la seconde que prend makemessages parait excessive, sans parler de la nécessité du venv qui peut également être un point bloquant).
Author
Owner

Ça serait mieux à tout point de vue il me semble

@vdeniaud je ne comprends pas en quoi c'est mieux que de le faire dans jenkins lors d'une PR. Sur Jenkins lors d'une PR (ou même simplement sur main), on a :

  • un message d'erreur clair
  • les autres tests qui se jouent
  • des logs
  • la possibilité d'ignorer si on est pressé et de merger la PR quand même
  • c'est rapide car quand on tox, on a déjà un environnement provisionné avec toutes les dépendances django, le tox -e i18n est extrèmement rapide
  • on sait au moment de merger si le build est passé que c'est tout bon

Sur un hook de commit côté serveur :

  • on est limité par la sortie Git en console pour l'affichage, autant dire que ça sera moche
  • on ne peut pas bypass la protection même en cas d'urgence
  • c'est bien plus lent car il faut provisionner un environnement django complet pour simplement pouvoir lancer le makemessages/compilemessages
  • il faut maintenir cet environnement, distinct du jenkins, qui va forcément casser. Et il faut faire ça pour tous les projets. Avec des scripts ad-hocs.
  • On ne peut pas savoir à l'avance si un push va passer ou pas (puisque la vérification se fait au dernier moment, lors de la réception du push côté serveur).
  • on risque de penser avoir poussé un truc alors qu'en fait ça aura été refusé

Plus généralement, dans un workflow à base de pull request où les merges sont effectués via l'interface Gitea (je sais que tu ne fais pas ça@vdeniaud, mais la plupart d'entre nous oui), il n'y plus que rarement de push sur main en CLI.

Le main de gitea est par définition à jour quand on clique sur merge. Un tel hook viendrait donc interrompre le merge de la pull request avec un message d'erreur, au dernier moment. Autant l'avoir dans le build jenkins, pour un résultat identique mais à la fois plus maintenable et plus lisible.

Pour discuter un peu du fonctionnement, je proposerais que ça ne fasse pas échouer les branches wip/, dans l'idée qu'en phase de développement, on a envie de pouvoir pousser une branche tôt, et qu'à ce moment on est concentré sur le code et les tests, qu'être interrompu par jenkins en erreur disant qu'il faut déjà se préoccuper des traductions, ça va casser trop régulièrement la concentration.

@fpeters je ne comprends pas cet argument. Si tu pousse une branche, les tests vont tourner, ça cassera, mais ça ne t'empèche pas d'avancer sur ton travail, c'est simplement un rappel qu'il y aura des choses à finir avant le merge. Un peu comme quand tu travaille sur une feature et que tu pousse en pensant avoir résolu le bug et que ça casse les tests ailleurs, ça aide à se rendre compte qu'il y a un pépin.

L'idée était d'éviter du travail en downstream à la personne qui va faire une release d'une brique. Évidemment, on est face à un compromis. Est-ce que la concentration/le temps de la personne qui bosse sur sa branche est plus importante que la concentration/le temps de la personne qui fait la release ? Pour moi, la personne qui fait la release est probablement plus stressée et doit gérer plus de choses que la personne qui fait un dev en amont et ça a donc du sens de déplacer une partie de la charge mentale au moment du dev.

La proposition ne semble pas faire consensus, ni sur le moment adéquat pour appliquer la vérification (PR, main), ni sur la façon d'appliquer la vérification (Jenkins/CI, hook git). J'ai passé suffisamment de temps là dessus, j'arrête. Si quelqu'un souhaite reprendre le lead sur ce sujet, le code reste dispo ici :)

> Ça serait mieux à tout point de vue il me semble @vdeniaud je ne comprends pas en quoi c'est mieux que de le faire dans jenkins lors d'une PR. Sur Jenkins lors d'une PR (ou même simplement sur main), on a : - un message d'erreur clair - les autres tests qui se jouent - des logs - la possibilité d'ignorer si on est pressé et de merger la PR quand même - c'est rapide car quand on tox, on a déjà un environnement provisionné avec toutes les dépendances django, le `tox -e i18n` est extrèmement rapide - on sait au moment de merger si le build est passé que c'est tout bon Sur un hook de commit côté serveur : - on est limité par la sortie Git en console pour l'affichage, autant dire que ça sera moche - on ne peut pas bypass la protection même en cas d'urgence - c'est bien plus lent car il faut provisionner un environnement django complet pour simplement pouvoir lancer le makemessages/compilemessages - il faut maintenir cet environnement, distinct du jenkins, qui va forcément casser. Et il faut faire ça pour tous les projets. Avec des scripts ad-hocs. - On ne peut pas savoir à l'avance si un push va passer ou pas (puisque la vérification se fait au dernier moment, lors de la réception du push côté serveur). - on risque de penser avoir poussé un truc alors qu'en fait ça aura été refusé Plus généralement, dans un workflow à base de pull request où les merges sont effectués via l'interface Gitea (je sais que tu ne fais pas ça@vdeniaud, mais la plupart d'entre nous oui), il n'y plus que rarement de push sur main en CLI. Le main de gitea est par définition à jour quand on clique sur merge. Un tel hook viendrait donc interrompre le merge de la pull request avec un message d'erreur, au dernier moment. Autant l'avoir dans le build jenkins, pour un résultat identique mais à la fois plus maintenable et plus lisible. > Pour discuter un peu du fonctionnement, je proposerais que ça ne fasse pas échouer les branches wip/, dans l'idée qu'en phase de développement, on a envie de pouvoir pousser une branche tôt, et qu'à ce moment on est concentré sur le code et les tests, qu'être interrompu par jenkins en erreur disant qu'il faut déjà se préoccuper des traductions, ça va casser trop régulièrement la concentration. @fpeters je ne comprends pas cet argument. Si tu pousse une branche, les tests vont tourner, ça cassera, mais ça ne t'empèche pas d'avancer sur ton travail, c'est simplement un rappel qu'il y aura des choses à finir avant le merge. Un peu comme quand tu travaille sur une feature et que tu pousse en pensant avoir résolu le bug et que ça casse les tests ailleurs, ça aide à se rendre compte qu'il y a un pépin. L'idée était d'éviter du travail en downstream à la personne qui va faire une release d'une brique. Évidemment, on est face à un compromis. Est-ce que la concentration/le temps de la personne qui bosse sur sa branche est plus importante que la concentration/le temps de la personne qui fait la release ? Pour moi, la personne qui fait la release est probablement plus stressée et doit gérer plus de choses que la personne qui fait un dev en amont et ça a donc du sens de déplacer une partie de la charge mentale au moment du dev. La proposition ne semble pas faire consensus, ni sur le moment adéquat pour appliquer la vérification (PR, main), ni sur la façon d'appliquer la vérification (Jenkins/CI, hook git). J'ai passé suffisamment de temps là dessus, j'arrête. Si quelqu'un souhaite reprendre le lead sur ce sujet, le code reste dispo ici :)
aberriot closed this pull request 2022-11-23 15:03:30 +01:00
Owner

@vdeniaud je ne comprends pas en quoi c'est mieux que de le faire dans jenkins lors d'une PR.

Je ne me suis pas positionné là dessus, je réagissais bien à « jenkins que sur main ».

  • la possibilité d'ignorer si on est pressé et de merger la PR quand même

Mon idée c'est vraiment de tout faire pour éviter de casser main, je suis peut-être trop tatillon.

  • on est limité par la sortie Git en console pour l'affichage, autant dire que ça sera moche

Yep mais comme on va lancer soit même makemessages derrière on aura vite les infos.

  • on ne peut pas bypass la protection même en cas d'urgence

Je pense qu'on peut (utile notamment si le hook disfonctionnait).

  • c'est bien plus lent car il faut provisionner un environnement django complet pour simplement pouvoir lancer le makemessages/compilemessages
  • il faut maintenir cet environnement, distinct du jenkins, qui va forcément casser. Et il faut faire ça pour tous les projets. Avec des scripts ad-hocs.

C'est peut-être techniquement impossible, je l'ai écrit plusieurs fois. Reste que dans une version bête ça reviendrait à installer django sur le serveur git, lancer django-admin makemessages sur le projet avec les options qu'on a normalement dans notre makemessages custom, et voilà (pas de venv et script d'une ligne).

Ça peut être combiné avec jenkins dans l'idée que peut-être la simplicité du hook lui ferait rater des trucs.

  • on risque de penser avoir poussé un truc alors qu'en fait ça aura été refusé

Doubt it, alors que rater la notif qu'on vient de péter le build principal ça arrive tout le temps.

En parlant de notif, la solution git hook évite à tout le monde de se prendre une notif/cliquer dessus/voir qu'il s'agit des trads quand quelqu'un oublie de faire ses trads. Faire les choses en amont, dès que possible, semble plus efficace.

Plus généralement, dans un workflow à base de pull request où les merges sont effectués via l'interface Gitea (je sais que tu ne fais pas ça@vdeniaud, mais la plupart d'entre nous oui), il n'y plus que rarement de push sur main en CLI.

Ouch j'avais tout à fait zapper ça, avec un peu de chance gitea affiche un message intelligible (gitlab le fait).

> @vdeniaud je ne comprends pas en quoi c'est mieux que de le faire dans jenkins lors d'une PR. Je ne me suis pas positionné là dessus, je réagissais bien à « jenkins que sur main ». > - la possibilité d'ignorer si on est pressé et de merger la PR quand même Mon idée c'est vraiment de tout faire pour éviter de casser main, je suis peut-être trop tatillon. > - on est limité par la sortie Git en console pour l'affichage, autant dire que ça sera moche Yep mais comme on va lancer soit même makemessages derrière on aura vite les infos. > - on ne peut pas bypass la protection même en cas d'urgence Je pense qu'on peut (utile notamment si le hook disfonctionnait). > - c'est bien plus lent car il faut provisionner un environnement django complet pour simplement pouvoir lancer le makemessages/compilemessages > - il faut maintenir cet environnement, distinct du jenkins, qui va forcément casser. Et il faut faire ça pour tous les projets. Avec des scripts ad-hocs. C'est peut-être techniquement impossible, je l'ai écrit plusieurs fois. Reste que dans une version bête ça reviendrait à installer django sur le serveur git, lancer django-admin makemessages sur le projet avec les options qu'on a normalement dans notre makemessages custom, et voilà (pas de venv et script d'une ligne). Ça peut être combiné avec jenkins dans l'idée que peut-être la simplicité du hook lui ferait rater des trucs. > - on risque de penser avoir poussé un truc alors qu'en fait ça aura été refusé Doubt it, alors que rater la notif qu'on vient de péter le build principal ça arrive tout le temps. En parlant de notif, la solution git hook évite à tout le monde de se prendre une notif/cliquer dessus/voir qu'il s'agit des trads quand quelqu'un oublie de faire ses trads. Faire les choses en amont, dès que possible, semble plus efficace. > Plus généralement, dans un workflow à base de pull request où les merges sont effectués via l'interface Gitea (je sais que tu ne fais pas ça@vdeniaud, mais la plupart d'entre nous oui), il n'y plus que rarement de push sur main en CLI. Ouch j'avais tout à fait zapper ça, avec un peu de chance gitea affiche un message intelligible (gitlab le fait).
Owner

La proposition ne semble pas faire consensus, ni sur le moment adéquat pour appliquer la vérification (PR, main), ni sur la façon d'appliquer la vérification (Jenkins/CI, hook git). J'ai passé suffisamment de temps là dessus, j'arrête. Si quelqu'un souhaite reprendre le lead sur ce sujet, le code reste dispo ici :)

Oui en fait en partie j'en suis venu à me dire que ça ne faisait pas partie des bouts qui pouvaient se corriger par la technique, au mieux ça déplace le problème; si l'attention n'est pas là pour faire la traduction, l'attention sera-t-elle là pour corriger un build en erreur, ou sera-ce toujours pour les mêmes personnes, qui plutôt qu'avoir l'attention portée sur la traduction au moment du tag auront désormais à intervenir pour réparer le build à tout moment ?

Bref, vaiment désolé pour le temps que tu as passé là-dessus :/

> La proposition ne semble pas faire consensus, ni sur le moment adéquat pour appliquer la vérification (PR, main), ni sur la façon d'appliquer la vérification (Jenkins/CI, hook git). J'ai passé suffisamment de temps là dessus, j'arrête. Si quelqu'un souhaite reprendre le lead sur ce sujet, le code reste dispo ici :) Oui en fait en partie j'en suis venu à me dire que ça ne faisait pas partie des bouts qui pouvaient se corriger par la technique, au mieux ça déplace le problème; si l'attention n'est pas là pour faire la traduction, l'attention sera-t-elle là pour corriger un build en erreur, ou sera-ce toujours pour les mêmes personnes, qui plutôt qu'avoir l'attention portée sur la traduction au moment du tag auront désormais à intervenir pour réparer le build à tout moment ? Bref, vaiment désolé pour le temps que tu as passé là-dessus :/
Some checks reported errors
gitea-wip/chrono/pipeline/pr-main This commit looks good
gitea-wip/chrono/pipeline/head There was a failure building this commit
gitea/chrono/pipeline/head Something is wrong with the build of this commit

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
4 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: entrouvert/chrono#5
No description provided.