Build des releases duniter dans Docker

Si j’ai bien compris, le problème est que les binaires ont été compilés avec la version 3.4.21 de la lib gcc. Est-ce qu’il faut que la compilation soit faite avec un niveau inférieur ? Ou est-ce qu’il faut suggérer aux personnes rencontrant le même problème de mettre à jour leur lib gcc ? Quel est l’âge de la 3.4.21 ?

@elois, peux-tu regarder quelle version est sur ta machine ?

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIB

S’il faut une version inférieur, il faudra baser l’image Docker sur une version plus ancienne d’Ubuntu ou Debian.

 $ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIB
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.18
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

Effectivement je crois me souvenir que la VM qui build les .deb est une ubuntu 14.04 mais je ne suis pas sur

EDIT : je confirme c’est une ubuntu trusty : Files · 1.6 · nodes / typescript / duniter · GitLab

@sveyret j’ai downgrader le runner avec ubuntu trusty, je vais tester la CI avec ça :wink:

Oui, pour une plus large compatibilité, il me semble qu’il faut une glibc la plus ancienne possible ! (Mais ça ne garantit pas un fonctionnement à tout les coups)

EDIT : sur Mastodon, aeris avait recommandé un système de build dédié à debian. J’ai oublié le nom…

1 Like

@sveyret bon j’ai toujours le même problème avec un build sous ubuntu trusty, le problème viens bien de docker je pense, j’ai trouver une piste ici, qu’en pense tu ?

EDIT : Le fichier .dockerignore c’est au niveau de l’image docker ou du dépot duniter qu’il faut le déclarer ?

Apparemment, c’est à côté du Dockerfile… Mais c’est assez étonnant, car il n’y a pas de node_modules à ce niveau là.

Es-tu sûr que ce n’est pas gitlab qui a rechargé l’ancienne image Docker basée sur Ubuntu 16.04 ?

Il y en a peut-etre un qui se créer lors de la construction de l’image, vu qu’on installe du yarn du nvm et compagnie, je fais un test si ça se trouve ça fonctionnera :wink:

J’ai supprimer l’ancien runner et en ai créer un nouveau avec les memes tag AVANT de pusher sur le dépot duniter donc je ne vois pas comment se serait possible.
J’ai également supprimer l’ancienne image sur le serveur redshift donc ça aurait planté, sauf si gitlab garde l’entièreté de l’image en cache mais je n’y crois pas.

Le runner doit faire un docker pull pour vérifier s’il n’y a pas une image Docker plus récente. Ce qu’il faut, c’est surtout s’assurer que l’image basée sur la version 16.04 a bien été supprimée sur docker-hub et sur le dépôt local.

Sur le dépot local oui sur docker hub non, ok je la supprime du docker hub et je retry :slight_smile:

@sveyret tu a raison :

Using Docker executor with image duniter/release-builder:v1.0.0 …

gitlab ci s’obstine a utiliser l’ancienne version de l’image, j’ai du la supprmier juste après le lancement du job, maintenant si je retry ça échoue

EDIT : bon j’ai supprimer et récréer le runner 2 fois rien a faire gitlab s’obstine a conserver une ancienne image il doit y avoir un système de cache a vider quelque part …

EDIT2: il n’y a aucun cache, c’est dans le fichier gitlab-ci que le builder tag est explicité et doit etre donc mis à jours, je n’avais pas vu !

1 Like

@sveyret ça marche !!! Je laisse tourner un noeud quelques heures pour voir ce que ça donne !

Les autres,n’hésitez pas a tester les paquets deb chez vous : https://git.duniter.org/nodes/typescript/duniter/-/jobs/1145/artifacts/download

Il suffit de télécharger et décompresser l’archive zip puis d’installer le paquet deb de votre choix (server ou desktop) :wink:

EDIT : Ça semble bien fonctionner cette release, mon noeud de test a remonter ses 7000 blocs de retard sans sync !!! (pas mis en marche depuis avant les fêtes).

1 Like

@sveyret @cgeek Je me suis permis de réorganiser tout çà et d’intégrer les méthodes de @florck pour la publication des releases, il ne reste plus qu’a tester en pushant un tag bidon. Je vais attendre l’aval de @sveyret avant de tester ça.

@sveyret j’ai renommer les job de build en release et j’ai créer un nouveau job build qui s’assure simplement que duniter transpile correctement. Aussi j’ai placer les tests en amont de sorte qui si les tests ne passent pas alors les releases ne sont pas buildés, ça évitera de faire suer le serveur de CI a chaque commit pendant la dev d’une feature (il suffira au dev de casser un test puis de le réparer lorsqu’il décidera que c’est le moment de tester un paquets deb).

1 Like

J’ai fait de nombreux tests en manuel et sur une installation gitlab personnelle, donc je suis assez rassuré de ce côté là. Ma seule inquiétude était au niveau des binaires générés que tu as testé de ton côté. Donc pour moi, tu peux fusionner les ressources dans la branche 1.6 et créer un tag de test.

Merci pour ton aide ! :slight_smile:

1 Like

Je pense faire l’inverse, pusher un tag bidon et si tout fonctionne bien merger après, car la partie déploiement des releases par tag n’a jamais été testée, j’ai juste copier les script de @florck et il y a peut etre des choses a ajuster :wink:

1 Like

@elois, j’ai vu que tu avais créé un tag pour tester, mais la création de paquets Debian exige que le numéro de version commence par un chiffre. C’est pour cela que ça a échoué. Du coup, je pense que v1.6-TEST pourrait fonctionner.

Placer des tests en amont pour ne pas builder en cas d’échec, oui ça me semble bien.

Par contre casser exprès un test pour éviter que des livrables soient buildés, je pense qu’il vaudrait mieux faire autrement. Il me semble d’ailleurs qu’on peut déclencher manuellement un build ciblé si l’on veut, ça ne te dit rien ? Ce qui permettrait de dire manuellement à GitLab “génère des livrables” sans spécialement faire de tag.

En effet je viens de trouver ça dans la doc : https://docs.gitlab.com/ee/ci/environments.html#manually-deploying-to-environments

je vais passer les job de release en manuel :wink:

2 Likes

Ça sent bon la release pour la 1.6 tout ça ! :smiley:

3 Likes

Mieux vaut tard que jamais :sweat_smile:

1 Like

je suis en train de triturer la CI pour tester le job de déploiement des releases, ne vousn inquiétez pas je remet tout en place après :wink: