Projet

Général

Profil

Bug #25129

jenkins: erreur eobuilder sur calcul numéro de version

Ajouté par Emmanuel Cazenave il y a presque 6 ans. Mis à jour il y a presque 6 ans.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
09 juillet 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:

Description

Au moins la deuxième fois que j'observe cette erreur (qui disparaît toute seule sur le build d'après qui teste le même commit) :

https://jenkins2.entrouvert.org/job/authentic2/7/console

+ sudo -H -u eobuilder /usr/local/bin/eobuilder -d jessie authentic
HEAD est maintenant à fb42e8d8 api: fix message raised to unauthorized user trying to remove a role (#25096)
Déjà à jour.
+ Init EO Builder
CALL: git checkout --quiet master
CALL: git reset --hard origin/master
Depuis git+ssh://repos.entrouvert.org/authentic
 * [nouvelle branche]  wip/newpassword -> origin/wip/newpassword

+ Updating git repository and parsing configuration ...
CALL: git checkout --quiet master
CALL: git pull
CALL: git checkout --quiet master
+ Building from debian-jessie debian folder
CALL: git submodule init
CALL: git submodule update
Traceback (most recent call last):
  File "/usr/bin/eobuilder-ctl", line 467, in <module>
    main()
  File "/usr/bin/eobuilder-ctl", line 445, in main
    package = prepare_build(dist, project, options, new)
  File "/usr/bin/eobuilder-ctl", line 226, in prepare_build
    new_inc = int(last_debian_package_version.split('+')[1]) + 1
ValueError: invalid literal for int() with base 10: 'gfb42e8d8-1~eob80'
CALL: git stash --quiet

Historique

#1

Mis à jour par Benjamin Dauvergne il y a presque 6 ans

Hmm, essaye de déduire ce qu'était last_debian_package_versoin dans le build qui foire puis dans le suivant.

#3

Mis à jour par Benjamin Dauvergne il y a presque 6 ans

Je pense que je viens de comprendre un bout du problème, en début de script eobuilder-ctl (dans main()) on a :

     new = 1
     ...
        if not output("git fetch", True):
            new = 0
     ...
        package = prepare_build(dist, project, options, new)
...
def prepare_build(..., new):
...
    if last_version == project['version'] and new \
            and "~eob" in last_debian_package_version:
        new_inc = int(last_debian_package_version.split('+')[1]) + 1
        version_suffix = "%s~eob%s+%s" % (debian_revision_number,
                                          settings.DEBIAN_VERSIONS[dist],
                                          new_inc)
    else:
        version_suffix = "%s~eob%s+1" % (debian_revision_number,
                                         settings.DEBIAN_VERSIONS[dist])

Ce bout de code est sensé gérer le cas ou la version affichée par le paquet ne change pas mais la branche a changé (et donc dans ce cas on ajoute un versionning local au paquet debian), sauf qu'ici sur authentic2 et la plupart de nos autres projets ça n'arrive plus jamais puisque qu'on génère le numéro de version directement depuis l'identifiant du commit. Ce qui se passe c'est que la façon de détecter si la branche a changé est nulle, git fetch peut parfaitement retourner un contenu non-vide sans que master ait changé, genre on a poussé sur une nouvelle branche, un tag, whatever.

Donc en gros eobuilder n'est toujours pas compatible PEP440 (il faudrait faire .rsplit('+', 1) et pas juste .split('+') mais aussi on détecte des nouveautés là ou il n'y en a pas, il faudrait stocker le numéro de commit du dernier build et comparer ça avec le numéro actuel, je ne vois que ça.

Formats disponibles : Atom PDF