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à
History
Updated by Frédéric Péters 3 months ago
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.)
Updated by Emmanuel Cazenave 3 months ago
- Assignee set to 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.
Updated by Robot Gitea 3 months ago
- Status changed from Nouveau to 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
Updated by Frédéric Péters 3 months ago
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)
Updated by Benjamin Dauvergne 3 months ago
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}"""
Updated by Emmanuel Cazenave 3 months ago
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/
Updated by Emmanuel Cazenave 3 months ago
- Status changed from Solution proposée to 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.
Updated by Benjamin Dauvergne 3 months ago
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 :/
Updated by Robot Gitea 3 months ago
- Status changed from En cours to Solution proposée
- Assignee changed from Emmanuel Cazenave to 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
Updated by Benjamin Dauvergne 3 months ago
- Assignee changed from Benjamin Dauvergne to Emmanuel Cazenave
Updated by Frédéric Péters 3 months ago
- Status changed from Solution proposée to En cours
Pas claire l'intention de la PR fermée ?
Updated by Robot Gitea 3 months ago
- Status changed from Solution proposée to Solution validée
Agate Berriot (aberriot) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 3 months ago
- Status changed from Solution validée to 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
Updated by Transition automatique 3 months ago
- Status changed from Résolu (à déployer) to Solution déployée