Projet

Général

Profil

Development #15562

Utiliser jenkins.sh et tox comme les autres projets

Ajouté par Frédéric Péters il y a environ 7 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
22 mars 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Une fois qu'une configuration stable et efficace d'exécution des tests sera obtenue dans les autres modules, l'adopter.


Fichiers


Demandes liées

Lié à w.c.s. - Development #27159: jenkins : jenkinsfile pour les buildsFermé09 octobre 2018

Actions
Lié à w.c.s. - Development #36419: ajout pour que tox.ini fonctionneRejeté24 septembre 2019

Actions
Dupliqué par w.c.s. - Development #21812: Utliser tox dans le job JenkinsRejeté13 février 2018

Actions

Révisions associées

Révision 564f96ab (diff)
Ajouté par Emmanuel Cazenave il y a plus de 4 ans

misc: PEP 440 compliant version number (#15562)

Révision d4600b28 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 4 ans

use tox to run tests (#15562)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a environ 7 ans

Le jenkins.sh c'est juste pour ne pas avoir de script dans la config de jenkins, on peut déjà l'ajouter sans passer à tox.

#2

Mis à jour par Frédéric Péters il y a environ 7 ans

De #15534 :

Tu penses vraiment qu'il y a un rapport avec tox [...]

Je pense vraiment important que l'environnement d'exécution des tests soit stable, qu'on n'ait pas aux mauvais moments à devoir corriger des problèmes de l'environnement plutôt que se préoccuper du logiciel. Très certainement un environnement stable peut être atteint avec tox, sa config permettrait même d'avoir à la fois un job "stable" tout en ayant sur le côté un job "aventureux", qui tirerait les dernières versions de n'importe quoi.

Dans un cas des 'erreurs pointés (je viens de regarder hobo, fargo était dans mon souvenir similaire), après des exécutions sans problème du pip de l'environnement même (et l'info "You are using pip version 7.1.2, however version 9.0.1 is available."), quand arrive une exécution dans l'environnement tox, bim, plantage. Que ça soit tox, une mise à jour d'autre chose, notre utilisation qui fait qu'on nettoie mal des trucs, il y a un truc à régler là-dedans avant d'y confier w.c.s.

Si on veut séparer jenkins.sh de l'adoption de tox, pas de problème pour moi pour avoir un ticket en plus.

#3

Mis à jour par Benjamin Dauvergne il y a environ 7 ans

En débuguant le job hobo, je pense que c'est la conjonction de deux choses:
  • ne pas utiliser le flag -r de tox qui force la recréation des environnements (on avait le même problème avec jenkins seul avant quand on ne cocher pas la case "Clear" dans le virtualenv builder).
  • avoir déplacé le toxworkdir dans /tmp, ce qui fait que même en supprimant le répertoire de travail (ce que j'ai fait sur fargo, qui n'avait justement pas de toxworkdir défini) ça ne corrigeait pas le problème

Donc je préconise simplement d'ajouter le flag -r à tous les appels à tox dans les jenkins.sh.

#4

Mis à jour par Frédéric Péters il y a environ 6 ans

#5

Mis à jour par Frédéric Péters il y a plus de 5 ans

#6

Mis à jour par Emmanuel Cazenave il y a plus de 5 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Emmanuel Cazenave
#7

Mis à jour par Frédéric Péters il y a plus de 4 ans

#8

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

J'ai donc repris les choses ici.

Il reste peu d'erreurs mais les résultats dont instables, pas les mêmes tests en erreur entre deux builds, et c'est idem en local (essayer tox -- tests/test_formdef.py::test_file_field_migration plusieurs fois d'affilée, puis pleurer). Tout à fait mystérieux pour l'instant.

#9

Mis à jour par Frédéric Péters il y a plus de 4 ans

tests.test_formdef_import.test_field_validation
tests.test_workflow_import.test_wscall_action

Les erreurs mentionnées ici manquent de contenu, faire -vv comme suggéré ?

tests.test_saml_auth.test_saml_login_page_several_idp[pickle]
tests.test_saml_auth.test_saml_login_page_several_idp[sql]

(je ne comprends pas trop, c'est comme si le setup_idp(4) avait juste configuré un seul IdP, et du coup un seul IdP redirect SAML plutôt que page intermédiaire.

#10

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

Frédéric Péters a écrit :

tests.test_formdef_import.test_field_validation
tests.test_workflow_import.test_wscall_action

Les erreurs mentionnées ici manquent de contenu, faire -vv comme suggéré ?

tests.test_saml_auth.test_saml_login_page_several_idp[pickle]
tests.test_saml_auth.test_saml_login_page_several_idp[sql]

(je ne comprends pas trop, c'est comme si le setup_idp(4) avait juste configuré un seul IdP, et du coup un seul IdP redirect SAML plutôt que page intermédiaire.

C'est le fonctionnement normal sur /login/ ça prend le premier IdP (au pif parce que le référentiel d'IdP est un dico), le test est juste non-déterministe car dépendant de hashseed dans tox, et donc un peu foireux.

C'est toujours #10477 il me semble, en attendant on peut fixer un hashseed si vous voulez (un qui passe).

PS:

# wcs/qommon/ident/idp.py
1058     def login(self):
1059         idps = get_cfg('idp', {})
1060 
1061         # there is only one visible IdP, perform login automatically on
1062         # this one.
1063         server = misc.get_lasso_server()
1064         for x in server.providerIds:
1065             key_provider_id = misc.get_provider_key(x)
1066             if not idps.get(key_provider_id, {}).get('hide', False):
1067                 saml = get_publisher().root_directory_class.saml
1068                 return saml.perform_login(x)

le commentaire ici est d'ailleurs faux, c'est pas "there is only one visible IdP" c'est "there is a least one visible IdP, take the first one".

#11

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

Benjamin Dauvergne a écrit :

C'est toujours #10477 il me semble, en attendant on peut fixer un hashseed si vous voulez (un qui passe).

C'est bien ça (mais du coup je ne comprends pas pourquoi je job actuel est stable). Et donc ici une proposition avec PYTHONHASHSEED=0 (30 min d'un script shell qui essayait des seed ne m'a pas permis d'en trouver une qui satisfasse tous les tests qui y sont sensibles). Ou alors je reprends #10477.

#12

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée

Emmanuel Cazenave a écrit :

Benjamin Dauvergne a écrit :

C'est toujours #10477 il me semble, en attendant on peut fixer un hashseed si vous voulez (un qui passe).

C'est bien ça (mais du coup je ne comprends pas pourquoi je job actuel est stable). Et donc ici une proposition avec PYTHONHASHSEED=0 (30 min d'un script shell qui essayait des seed ne m'a pas permis d'en trouver une qui satisfasse tous les tests qui y sont sensibles). Ou alors je reprends #10477.

Et bien parce que sans tox on utilise 0 comme tu le fais ici donc pas de sel ajouté du tout1, donc ok pour 0 faute de mieux.

1 https://docs.python.org/2/using/cmdline.html#envvar-PYTHONHASHSEED

#13

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit d4600b2816225ef5fe608f5052fb0ac20bd193d4
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Thu Sep 26 15:25:12 2019 +0200

    use tox to run tests (#15562)

commit 564f96ab82b40a04b109e53287ee2b550fa8ccb1
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Thu Sep 26 15:23:02 2019 +0200

    misc: PEP 440 compliant version number (#15562)
#14

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF