Bug #74787
Conflit sur les bases de données dans le build
0%
Description
https://jenkins.entrouvert.org/job/passerelle/3504/testReport/
psycopg2.errors.DuplicateDatabase: ERREUR: la base de données « passerelle-test-_gw3 » existe déjà
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ un an
Oui c'est le build de test "s" https://jenkins.entrouvert.org/job/s/ ("passerelle-73760") qui tourne en parallèle sur main et plouf, puisque :
'NAME': ('passerelle-test-%s' % os.environ.get("BRANCH_NAME", "").replace('/', '-'))[:58],
Quantité d'options ici. (ajouter un numéro random, ou utiliser une autre variable d'environnement, type BUILD_TAG, virer le job, etc.)
Mis à jour par Emmanuel Cazenave il y a environ un an
- Assigné à mis à Emmanuel Cazenave
Frédéric Péters a écrit :
Oui c'est le build de test "s" https://jenkins.entrouvert.org/job/s/ ("passerelle-73760") qui tourne en parallèle sur main et plouf, puisque :
Ce job ne tourne pas sur main.
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de Nouveau à En cours
Emmanuel Cazenave (ecazenave) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/passerelle/pulls/113
- Titre : WIP: tests: use BUILD_TAG in database name (#74787)
- Modifications : https://git.entrouvert.org/entrouvert/passerelle/pulls/113/files
Mis à jour par Frédéric Péters il y a environ un an
Ok une précédente occurence j'ai souvenir que c'était le cas; mais si ce n'est pas ce job c'est un autre qui était sur main à ce moment-là. Et je vois maintenant que le build pointé date du 20 février, c'est exactement celui pour lequel j'avais regardé, et qui avait donné https://git.entrouvert.org/entrouvert/bidon/commit/234a4dcec747a871384b5476f76d00abd48b12e0 (laissé de côté parce que migration gitea)
Mis à jour par Benjamin Dauvergne il y a environ un an
Sinon utiliser pg_virtualenv permet de ne pas se soucier du nom de la base ainsi que d'activer des options qui accélèrent un peu les tests, comme fsync=off.
authentic$ git grep fsync Jenkinsfile:PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox run --recreate ${env.TOXARGS}"""
Mis à jour par Emmanuel Cazenave il y a environ un an
Frédéric Péters a écrit :
https://git.entrouvert.org/entrouvert/bidon/commit/234a4dcec747a871384b5476f76d00abd48b12e0 (laissé de côté parce que migration gitea)
Je suis partis sur la même chose avant de voir ton message. Ça marche sur un job jenkins normal mais ça foire dans un job gitea sur les chemins tox :
No such file or directory: '/tmp/tox-jenkins/passerelle/jenkins-gitea-passerelle-wip/74787-build-tag-4/py3-django32-xmlschema14-codestyle-coverage/lib/python3.9/site-packages/xmlschema/schemas/XSD_1.0/XMLSchema.xsd'
Avec sur le système de fichier un /tmp/tox-jenkins/passerelle/jenkins-gitea-passerelle-wip%2F74787-build-tag-4
.
Et tu as a du tomber sur un truc similaire sur le nom de la DB puisque tu fais 'NAME': ('bidon-test-%s' % os.environ.get("BUILD_TAG", "").replace('%2', '-').removeprefix('jenkins-'))[:63],
, qu'il faudrait adapter d'une façon ou d'une autre pour le chemin tox.
Mais je trouve que ça devient vraiment lourdingue et chiant, alors je suis parti sur l'utilisation d'un numéro random, c'est plus simple et ça marche sur les jobs standards/gitea avec sur les noms de db des :
passerelle-test-18174_gw0 passerelle-test-18174_gw1 passerelle-test-18174_gw2 passerelle-test-18174_gw3 passerelle-test-18174_gw4 passerelle-test-18174_gw5
Avec un chemin tox : /tmp/tox-jenkins/passerelle/18174/
Mis à jour par Emmanuel Cazenave il y a environ un an
- Statut changé de Solution proposée à En cours
Benjamin Dauvergne a écrit :
Sinon utiliser pg_virtualenv
J'ai failli me laisser séduire, mais pas encore chaud bouillant, peut-être à cause de la ligne cabalistique que ça rajoute dans le Jenkinsfile.
Mis à jour par Benjamin Dauvergne il y a environ un an
Emmanuel Cazenave a écrit :
Benjamin Dauvergne a écrit :
Sinon utiliser pg_virtualenv
J'ai failli me laisser séduire, mais pas encore chaud bouillant, peut-être à cause de la ligne cabalistique que ça rajoute dans le Jenkinsfile.
La partie PG_PORT n'est pas nécessairement compliqué, je n'avais pas cherché bien loin à l'époque mais on peut filter bêtement le chemin d'une socket unix, donc
PGPORT=${env.TMPDIR)/postgres.sock pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox run --recreate ${env.TOXARGS}
PS: Ça me marche pas :/
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de En cours à Solution proposée
- Assigné à changé de Emmanuel Cazenave à Benjamin Dauvergne
Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/passerelle/pulls/116
- Titre : Test de pgvirtualenv sur passerelle
- Modifications : https://git.entrouvert.org/entrouvert/passerelle/pulls/116/files
Mis à jour par Benjamin Dauvergne il y a environ un an
- Assigné à changé de Benjamin Dauvergne à Emmanuel Cazenave
Mis à jour par Frédéric Péters il y a environ un an
- Statut changé de Solution proposée à En cours
Pas claire l'intention de la PR fermée ?
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de Solution proposée à Solution validée
Agate Berriot (aberriot) a approuvé une pull request sur Gitea concernant cette demande :
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de Solution validée à Résolu (à déployer)
Emmanuel Cazenave (ecazenave) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/passerelle/pulls/113
- Titre : tests: use BUILD_TAG in database name (#74787)
- Modifications : https://git.entrouvert.org/entrouvert/passerelle/pulls/113/files
Mis à jour par Transition automatique il y a environ un an
- Statut changé de Résolu (à déployer) à Solution déployée
tests: use a random number in database name and tox environment path (#74787)