Development #23431
jenkins: pipeline
0%
Description
Cette fois ci c'est pas du bidon.
Le job est ici : https://jenkins.entrouvert.org/job/combo-pipeline/
Avec en plus par rapport à #23398, le rapport pylint.
Par rapport au futur ancien job de combo (j'espère):
- un effort d'intégration avec tox pour qu'il soit plus facile faire sur sa machine ce que fait jenkins. * un clean du workspace à chaque run (qui me semble plus sain)
Le job pouvant s'exécuter sur plusieurs branches en même temps,
tox fait sa vie dans /path/to/job/nomdelabranche/workspace/.tox
à la place de /tmp/tox-jenkins/combo
pour deux runs du job en parallèle ne se marchent pas sur les pieds.
Fichiers
Historique
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-create-jenkins-pipeline-job-23431.patch 0001-create-jenkins-pipeline-job-23431.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a presque 6 ans
Je préférerais que les variantes tox continuent à s'appeler django{18,111} plutôt que dj{18,111}.
Quid de Parametrized-pipelines suggéré par Benjamin, resterait-on encore sur bidon un peu, le temps d'assurer tout ce qu'on veut ?
Dans le Jenkinsfile il y a un mélange d'espaces et de tabulations, et parfois un espace et parfois pas devant une accolade.
@Library('eo-jenkins-lib@v0.2') import eo.Utils
Ça veut dire que quand on fait évoluer cet autre module on doit passer sur tous les Jenkinsfile ? Il y aurait moyen d'éviter ça (genre en ne mettant pas le numéro de version) ?
Comme les autres éléments (Checkout SCM, Post Actions) portent des majuscules, j'en mettrais aussi à "Packaging" et "Unit Tests".
L'info pylint c'est bien, le diff artisanal est joyeusement remplacé par une vue dédiée (https://jenkins.entrouvert.org/job/combo-pipeline/job/wip%2Fjenkinsfile-fred/2/warnings52Result/new/).
De la vue d'un job "normal", je peux cliquer sur le graphe coverage et arriver sur le détail pour le dernier build, c'est perdu ici; pareil pour le graphe des tests (mais celui-là je ne l'utilisais pas)
La parte de toxworkdir = {env:TMPDIR:/tmp}/tox-{env:USER}/combo/
m'ennuie terriblement, c'est vraiment utile pour moi de pouvoir dire à tox de travailler dans un répertoire donné (montage tmpfs). Le Jenkinsfile pourrait passer un TMPDIR différent, pour assurer le build parallèle ?
Mis à jour par Frédéric Péters il y a presque 6 ans
L'info pylint c'est bien, le diff artisanal est joyeusement remplacé par une vue dédiée (https://jenkins.entrouvert.org/job/combo-pipeline/job/wip%2Fjenkinsfile-fred/2/warnings52Result/new/).
Mais je vois qu'a totalement disparu une vue annotée des fichiers : https://jenkins.entrouvert.org/job/combo-pipeline/job/wip%2Fjenkinsfile-fred/2/warnings52Result/package.-45820021/file.-1881938097/ inexploitable vs https://jenkins.entrouvert.org/job/combo/violations/file/combo/data/models.py/
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Le déplacement du .tox hors du workspace avait un but (en dehors de passer par TMPFS), ça ralentit terriblement tous les trucs qui parsent les codes sources (coverage notamment) parce qu'ils vont dans les virtualenv créés dans .tox, on doit pouvoir l'exclure mais c'est plus simple de le mettre ailleurs.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-create-jenkins-pipeline-job-23431.patch 0001-create-jenkins-pipeline-job-23431.patch ajouté
- Statut changé de Nouveau à En cours
Voilà, avec un petit changement par rapport à #23398 dans le pattern du toxworkdir
, qui donne maintenant des /tmp/tox-jenkins/combo/wip/jenkinsfile
et /tmp/tox-jenkins/combo/master
dans jenkins.
Parce que dans l'ancien, la présence de '%2f' conduisait, par des chemins obscurs, à l'exécution du pylint système plutôt que le pylint du venv de tox.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Et bossant sur ce truc je me rends compte que notre jenkins est vraiment pas une bête de course (gros scoop).
Avec ici le tox qui met dans les 5min30 sur jenkins contre 3min30 chez moi (je n'ai pas de tmpfs sur /tmp).
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Je fouine sur les possibilités d'avoir une vue annotée par les warning d'un fichier source donné (demande de Fred) .... et je ne trouve rien.
Même pas possible demander à pylint de générer du html (feature deprecated puis removed en 1.8).
La vue suivante est quand même pas trop mal : https://jenkins.entrouvert.org/job/combo-pipeline/job/wip%252Fjenkinsfile/29/warnings52Result/
avec un clic en plus pour aller voir le code.
I gave it my best and I am game over.
Mis à jour par Frédéric Péters il y a presque 6 ans
Dans ma branche (jenkinsfilefred) j'avais aussi l'ajout dans tox.ini de psycopg2 (plus sûr du pourquoi mais j'ai du voir un job échouer ça, j'imagine), mais plus important et à discuter, je retirer le cleanWs(), qui complique l'analyse postmortem sur le serveur jenkins d'un job qui aurait foiré. (il y a peut-être moyen d'être plus subtil et de faire le cleanWs uniquement en cas de succès).
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-create-jenkins-pipeline-job-23431.patch 0001-create-jenkins-pipeline-job-23431.patch ajouté
- ajout de psycopg2 (qu'on aurait rajouté là de toute façon : #23467)
- cleanWS uniquement en cas de succès
Pour l'analyse post-mortem, on peut aussi archiver des fichiers (c'est une ligne à rajouter dans le Jenkinsfile), mais là comme ça je vois pas lesquels.
Mis à jour par Frédéric Péters il y a presque 6 ans
Je reste emmerdé par la situation de pylint mais tant pis, voyons à l'usage.
Encore un truc quand même, côté page d'accueil de jenkins la boulette du job n'a plus de couleur (vu que le job en reprend plusieurs), il y a moyen de changer ça ? (idéalement que la couleur corresponde au build de "master").
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
J'ai cherché, mais ça ne semble pas possible.
Une solution de contournement possible serait de créer un au autre job de type pipeline simple
(à différencier du type pipeline multibranch
) qui ne suit que la branche master, appelons le combo-pipeline-master
. Sur un job de ce type , la pilule est bien là.
Il utiliserait le même Jenkinsfile que combo-pipeline
. On a juste à modifier légèrement le Jenkinsfile pour faire en sorte que les paquets ne soient buildés que lorsque le Jenkinsfile est exécuté depuis combo-pipeline-master
.
En bonus on peut se créer une vue synthétique dans Jenkins où l'on regroupe les jobs normaux qui nous intéressent le plus et les jobs pipeline-*-master : https://jenkins.entrouvert.org/view/test-view-manu/
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
De mon coté j'ai une question pas forcément importante mais bon: en front-office sur jenkins on a un écran qui résume bien un build avec la liste exacte des tests qui ont échoué et le bon log pour chaque test, est-ce que ce serait possible d'avoir des mails de notification simplifiés sous cette-forme plutôt que le log complet du build ?
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
On utilise https://wiki.jenkins.io/display/JENKINS/Mailer qui n'offre pas cette possibilité non.
Mis à jour par Frédéric Péters il y a presque 6 ans
Je dirais qu'il faut y aller; déplacer/désactiver les jobs combo et combo-deb, créer un job combo pour la simple pipeline, et un combo-branches (?) pour la multi.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Statut changé de En cours à Résolu (à déployer)
commit 86457dba0381f9bbe6f29e7758cbceeaebc4cfb5 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Fri Jun 1 10:16:24 2018 +0200 create jenkins pipeline job (#23431)
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0002-change-build-package-condition-23431.patch 0002-change-build-package-condition-23431.patch ajouté
J'ai renommé les anciens jobs combo
et combo-deb
en combo-bck
et combo-deb-bck
, et désactivé toute forme de déclenchement automatique.
Nouveau job combo
(de type pipeline simple): ne suit que master, exécute les tests et build les paquets dans la foulée.
Nouveau job combo-wip
(de type pipeline multibranch): suit les branches wip/*, exécute les tests, ne build pas les paquets.
Et une review de dernière minute sur ce nouveau patch s'il vous plait, car l'exécution du jenkinsfile par deux jobs de type différents m'oblige
à changer la condition de build des paquets (la variable d'environnement BRANCH_NAME
n'existe pas dans un job pipeline simple, il faut utiliser GIT_BRANCH
à la place)
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
commit 5f2737919aaefd22042791ad8554f33f3d7f6e46 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Fri Jun 1 10:40:10 2018 +0200 change build package condition (#23431)
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Et tout semble fonctionner avec ce run https://jenkins.entrouvert.org/job/combo/8/ qui a envoyé combo 1.42.10.g5f27379-1~eob80+1 dans le répo eobuilder.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
create jenkins pipeline job (#23431)