Journal s/Hudson/Jenkins/g

Posté par (page perso) .
Tags : aucun
14
12
jan.
2011
Bonjour,

Hudson est un serveur d'intégration continue sous licence MIT/CC:BY-SA et écrit en java. Pour éviter les buzzwords, on va dire que c'est un ordonnanceur qui permet de lancer automatiquement des compilations/tests. Il permet aussi aux chefs de savoir si nous pauvres développeurs avons bien travaillé en regardant des icônes de soleils/nuages plutôt qu'en lisant les logs de gcc.
http://www.hudson-ci.org/

Il s'avère que Oracle, suite au rachat de Sun est maintenant propriétaire de la marque Hudson. Bien qu'aucune menace ne semble avoir été proféré, les leaders du projets sont inquiets des pressions que pourrait faire Oracle (chantage au droits d'utilisation du nom).
De ce fait ils envisagent très sérieusement de changer le nom pour : Jenkins.

Je vous laisse lire les détails sur le blog officiel :
http://www.hudson-labs.org/content/hudsons-future
  • # Bravo!

    Posté par (page perso) . Évalué à 10.


    Hudson est un serveur d'intégration continue sous licence MIT/CC:BY-SA et écrit en java. Pour éviter les buzzwords, on va dire que c'est un ordonnanceur qui permet de lancer automatiquement des compilations/tests. Il permet aussi aux chefs de savoir si nous pauvres développeurs avons bien travaillé en regardant des icônes de soleils/nuages plutôt qu'en lisant les logs de gcc.


    On voit rarement une explication aussi claire d'un truc java, félicitations! Tu veux pas nous expliquer Hibernate, Spring, JBoss, EJB, et les autres pendant que tu y es?
    • [^] # Re: Bravo!

      Posté par (page perso) . Évalué à 5.

      Non, j'ai pas la bandwidth, faut que j'aille faire un planning poker pour le story backlog du prochain sprint :)

      Plus sérieusement, si j'ai utilisé des mots simples, c'est sans doute que je suis étranger au monde java. Mon job, c'est plutôt du C bas niveau en compilation croisée. Chez nous Hudson sert à lancer des scripts shell qui font le boulot.

      Du coup JBoss, EJB et autres J2EE sont très mystérieux pour moi. Mais on peut parler de MAC, de PHY, de switch et de registres si tu veux ;)
    • [^] # Re: Bravo!

      Posté par (page perso) . Évalué à 3.

      JBoss: Serveur pour du java. Concurrent: Tomcat, Glassfish... ou pour d'autres language, Apache ou IIS

      Hibernate:

      wikipedia: "Hibernate apporte une solution aux problèmes d'adaptation entre le paradigme objet et les SGBD en remplaçant les accès à la base de données par des appels à des méthodes objet de haut niveau."

      En gros, tu fais:
      monUser.setNom("Penso");
      monUser.setPrenom("Fabien");
      monUser.setInscriptionDate(new Date());

      monUser.save();

      Et tout le coté SQL sera géré automatiquement, quelque soit la base(Oracle, Mysql, ...).

      Equivalent en Python: SQLAlchemy. Pour les autres language, je ne connais pas trop

      Spring (cool!) et son concurrent EJB (bcp moins cool)
      ca regroupe tellement de chose que j'aurai du mal a le faire en simple. A part sous le simple nom "framework"

      Par exemple, disons que si tu fais tes objets metiers, et a cote des services, Spring va se charger de faire la glue, entre les deux. Et va s'occuper du cycle de vie de tes objets (instanciation, destruction...). Etant basé sur l'injection de dépendance, tu auras moins de code a écrire, il sera + propre, + facilement modifiable en évitant le coté spaguetti.

      Et cadeau bonus pour la route
      Maven
      Si apt(-get) et configure+make avait eu une fille version Java, ça serait Maven:

      1) Le(s) serveur(s) maven vont stocker toute les bibliotheques possibles (comme un dépot Debian ou Redhat), en chaque version (mieux que Debian et Redhat)
      2) Le script de build va se contenter de décrire ce que tu a besoin en terme de lib, et comment du veux builder.
      Au moment du build, tout va se telecharger tout seul et se builder tout seul.
      • [^] # Re: Bravo!

        Posté par (page perso) . Évalué à 9.

        Maven
        [...]
        Au moment du build, tout va se telecharger tout seul


        Et quand on dit tout, c'est tout. Notamment tout le ternet, mais pas que.
        • [^] # Re: Bravo!

          Posté par . Évalué à 1.

          Ben oui, faut bien tirer le pom du ternet. Et sa signature.
          Plus les sources, tu vas bien debugger a un moment, non?

          If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.

      • [^] # Re: Bravo!

        Posté par . Évalué à 2.

        JBoss, Glassfish sont sur le même plan mais ce n'est absolument pas un concurent de tomcat, ni de jetty.
        La différence entre les deux c'est que l'un implémente toute la norme JEE et l'autre uniquement une partie (plus orienté web).

        Hibernate, moi j'aurais dis en 3 lettres ORM. Ca se trouve dans pleins de langages.

        Spring/EJB/OSGi, ce sont des framework qui permettent de développer des architectures à composants. Les composants sont comme des objets sauf qu'ils ont un cycle de vie particulier (qui change en fonction du type de composant).

        Maven, c'est comme make ou c'est make mais avec la gestion des dépendances. Il a une approche différente aussi (on décris le projet, on ne script pas vraiment).

        JEE (puisque j'en ai parlé plus haut), ensemble de standard Java (JSR) orienté vers la fourniture de services et le réseau (manière de faire du web, différents types de composants, etc. De plus il inclus tout les standards Java "classique" JSE que l'on apprends au début (swing, awt, etc).

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Bravo!

          Posté par (page perso) . Évalué à 2.

          Tu pinailles. Et c'est trop facile de pinailler sur une tentative de vulgarisation. ;)
          • [^] # Re: Bravo!

            Posté par . Évalué à 3.

            Il est toujours appréciable d'avoir plusieurs vulgarisations pour mieux comprendre. Histoire d'avoir deux point de vu.

            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

            • [^] # Re: Bravo!

              Posté par (page perso) . Évalué à 2.

              Merci pour tes explications! Je crois avoir bien compris, sauf pour Spring/EJB. "Composant", "Objet Métier", "Service" (dans ce contexte), et "Injection de dépendances", ça reste du chinois pour moi.

              Qu'est-ce que ça apporte en pratique?
              • [^] # Re: Bravo!

                Posté par . Évalué à 3.

                "Composant" c'est une objet tout simple avec des meta donnée en plus qui le rendent un peu plus sophistiqué.

                "Objet Métier" dans une application la partie métier et la partie qui implémente vraiment la logique "fonctionnelle" de ton application. Par exemple tu veux créer un jeu vidéo, tu va avoir une partie du logiciel qui va servir à gérer l'affichage et un partie qui va servir à implémenter les règles du jeu. Cette dernière c'est la partie "métier" de ton application.

                "Service" c'est les fonctionnalités que propose ton application quand celle-ci est fourni par réseau (je peux me planter aussi, hein)

                "Injection de dépendances" ça c'est une technique qui va permettre au serveur sur le quel ton application fonctionne. D'initialiser des attribut de tes classes de manière transparentes (enfin presque). Grosso modo si ton objet a besoin d'un logger tu peut déclarer un attribut :
                @Inject(require)
                private Logger log;
                (les noms sont bidons) et le système va se débrouiller pour qu'a l'instanciation de ton objet tu es un logger sans avoir d'autre chose à faire.

                Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

        • [^] # Re: Bravo!

          Posté par . Évalué à 4.

          >C'est comme make ou c'est make mais avec la gestion des dépendances.
          mais make c'est juste des dépendances et des commandes pour résoudre ces dépendance.

          *J'ai déjà bossé avec des fichiers Makefile bien écrit, c'est du bonheur.
          *J'ai déjà bossé avec des fichiers Makefile utilisant à fonds les règles implicite
          *J'ai déjà bossé avec des fichiers Makefile complètement illisible
          *Enfin, comme en perl, je suis tombé sur un Makefile bien écrit, lisible, et utilisant les règles implicite juste quant il faut; mais faut pas se leurrer, c'est loin d'être la norme

          Il ne faut pas décorner les boeufs avant d'avoir semé le vent

          • [^] # Re: Bravo!

            Posté par (page perso) . Évalué à 2.

            quand tu lance "./configure; make install", make ne va pas te telecharger via apt/yum/yast sur des depots distant tout ce qui te manque pour compiler / faire tes tests et installer ton soft. (meme si avec packageKit, ça sera bientot en partie possible je pense). Maven, lui, fait ça dans le monde Java. Et franchement, ça serait le reve que make le fasse dans le monde c/c++

            En plus les distrib ne gerent que quelques version de leurs lib. Un exemple, Opensuse, pour une 11.3, ne doit fournir que Qt4.5, 4.6 et 4.7 je pense. Maven lui te fournira quasiment chaque release d'Hibernate ou presque.

            Enfin ça, c'est un des trucs que gere Maven, ça fait bien d'autres choses... Le tout en évitant d'etre bloat en se basant entierement sur un systeme de plugin.
            • [^] # Re: Bravo!

              Posté par . Évalué à 1.

              > make ne va pas te telecharger via apt/yum/yast sur des depots distant tout ce qui te manque pour compiler
              ah pardon, tout dépend du makefile ^^ ou des conf foutu dans tes makefile de règle "implicite"; si tu met gcc en tant que dépendance, tu peux très bien avoir une règle qui s'en occupe, et variant selon debian ou mandriva (par contre faudrait être root, ou alors il y aura une demande de mot de passe);

              Par contre pour les version de lib ça c'est plus compliqué ^^, mais bon on peut très bien imaginer des règles qui vont faire tout ce qui faut pour télécharger sur le site de la lib, mais bon ça va vite devenir galère à maintenir :D

              > Le tout en évitant d'etre bloat en se basant entierement sur un systeme de plugin.
              On m'avait dit la même chose pour eclipse/vim/emacs :)


              (bon pour l'anecdote, j'ai déjà eu un make environnement qui faisait tout ce qu'il fallait, récupération des libs, compilation, modification du .bashrc, mais c'était spécifique à un projet, et la définition d'un makefile pour ce projet était d'une simplicité jamais égalée (en gros suffisait de donner le répertoire source et la liste de lib dont dépendait le projet) et le nom de l'exécutable ou lib si c'était une lib

              Il ne faut pas décorner les boeufs avant d'avoir semé le vent

              • [^] # Re: Bravo!

                Posté par . Évalué à 2.

                Le faire de manière totalement multiplateforme (disons autant que Java) et sans avoir à se fader tout le travail de chercher où installer la biblio sur le système et configurer ton environnement. Tout ce travail là a déjà était fait dans maven et il suffit de le réutiliser.

                Par exemple, moi pour travailler avec Java j'installe le JDK + Maven + un IDE, tout le reste se fait automatiquement avec Maven (y compris installation du serveur d'application).

                A oui chose qu'il est très compliqué de faire avec make : la mise à jour automatique des bibliothèque.

                Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Bravo!

                Posté par . Évalué à 2.

                Tu peux potentiellement faire ca avec make, mais bon courage pour implementer les dependances transitives.

                Genre ton projet dit juste "tires moi gecko" et make va tout seul voir qu'il faut tirer libxml, libpng, gtk et tout le tralala, le tout dans la bonne version, en tirant les dependances de libpng et libxml?

                Tu peux juste te contenter de dire a make "build moi une librairie/war/ear/whatever, les sources sont la, demerdes toi avec ca" ou "au fait, faut que tu deployes dans jetty aussi"?
                Il est aussi capable de te dire que machin conflicte avec truc parce que les versions de libfoo requises sont incompatibles?

                J'ai l'impression que ce que tu decris ressemble plus a ant, en gros un framework bas niveau ou il faut tout coder manuellement. J'ai goute au deux, je reviens plus a ant, clairement.

                C'est la ou maven est tres fort, tu lui dit "c'est un projet java, il me faut lib a et b" et il s'occupe de tout.
                Diaboliquement efficace dans une boite ou t'as un nombre consequent de projet avec des libs partagees: tout le monde est toujours sur la derniere version de chaque lib en permanence et n'a besoin de connaitre que ses dependances directes.

                C'est a double tranchant par contre, c'est notamment tres lent (eclipse/intellij arrive sont suffisament malin pour garder la compilation incrementale, mais en cli faut pas etre presse) et le fait de toujours tirer la derniere version disponible peut rendre les release managers chevres. Comme dit plus bas, au premier build, ca va telecharger la moitie d'internet.

                If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.

            • [^] # Re: Bravo!

              Posté par (page perso) . Évalué à 2.

              quand tu lance "./configure; make install", make ne va pas te telecharger via apt/yum/yast sur des depots distant tout ce qui te manque pour compiler / faire tes tests et installer ton soft.

              Tout ça, et bien plus encore, se fait très bien avec des Makefile : c'est d'ailleurs comme ça que fonctionne le système des ports de FreeBSD (et historiquement des autres BSD).
              • [^] # Re: Bravo!

                Posté par . Évalué à 3.

                Tu es obligé d'être administrateur et les scripts sont fait pour une plateforme (ou à la rigueur POSIX).

                Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

                • [^] # Re: Bravo!

                  Posté par (page perso) . Évalué à 2.

                  Le besoin d'être root, c'est par défaut pour télécharger les sources dans un répertoire protégé et pour installer sous un PREFIX tel que /usr/local, mais tout est configurable, et pour installer sous son $HOME en tant que simple utilisateur, ça se fait (astuce : $INSTALL_AS_USER).

                  Quant à POSIX, sans doute... mais il ne doit plus y avoir beaucoup de développeurs qui n'utilisent pas un système POSIX de nos jours !
                  • [^] # Re: Bravo!

                    Posté par . Évalué à 2.

                    Au boulot je suis sous Windows XP.....................

                    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

                    • [^] # Re: Bravo!

                      Posté par (page perso) . Évalué à -2.

                      Bah change de boulot.
                      • [^] # Re: Bravo!

                        Posté par . Évalué à 4.

                        Non j'ai besoin de manger et besoin d'avoir mon année (je suis en alternance). Mais merci de me donner des conseils aussi éclairés et intelligent.

                        Garde tes œillères, c'est bien d'être un pur, mais tout le monde n'a pas forcément la possibilité de le faire.

                        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

                        • [^] # Re: Bravo!

                          Posté par (page perso) . Évalué à -1.

                          s/possibilité/volonté/

                          Garde tes œillères en pensant que c'est en acceptant le premier job alimentaire venu que ça sera le pied. T'as vu ça marche aussi :-D

                          Remarque tu seras bien en SSII.
                          • [^] # Re: Bravo!

                            Posté par . Évalué à 4.

                            Je n'ai pas à me justifier devant qui que ce soit, mais je suis content de mon travail. Oui mon sujet d'alternance est intéressant. Si pour que tu sois content de ton travail tu ne t'intéresse qu'au système d'exploitation utilisé bien à toi, c'est pas mon cas (et puis je pousse et j'utilise des technologies libres).

                            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

                            • [^] # Re: Bravo!

                              Posté par (page perso) . Évalué à -1.

                              Au boulot je suis sous Windows XP.....................

                              je suis content de mon travail

                              Bah de quoi tu te plains alors ?
                              • [^] # Re: Bravo!

                                Posté par . Évalué à 2.

                                Je me pleins pas je dis qu'il existe des développeurs qui n'utilisent un système POSIX. La multitude de point et juste là parce que je savais qu'il y allez en avoir au moins un pour me faire une remarque.

                                Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

                          • [^] # Re: Bravo!

                            Posté par (page perso) . Évalué à 2.

                            s/possibilité/volonté/

                            Mais oui c'est bien connu, ce monde est rempli de poste vacant dans le libre et pour le libre... c'est honteux quand même tout ces gens qui refusent un poste dans le libre et vont travailler pour faire du proprio.... et dire qu'il suffirait qu'ils travaillent pas pour pas travailler.
            • [^] # Re: Bravo!

              Posté par . Évalué à 2.

              ./configure; make install
              putain je l'avais laissé passé celle là!!!

              ./configure && make install !!!
              ça permet
              1) 1 seul ctrl-C si on veut interrompre au début
              2) si y a des truc qui manquent on plantent, ne pas lancer le make qui va inévitablement masquer ce qui manque

              Il ne faut pas décorner les boeufs avant d'avoir semé le vent

          • [^] # Re: Bravo!

            Posté par . Évalué à 2.

            Tu parle à un convaincu Make est très puissant, mais là je parlais d'installation de dépendance. Pour avoir essayé, avec Java il vaut mieux éviter Make et prendre un builder en Java (Maven, Ant, Ivy, Buildr,...) car tu perds énormément en performance en devant relancer à chaque fois une jvm. Bon maven c'est pas fait pour être plus rapide.

            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

      • [^] # Re: Bravo!

        Posté par (page perso) . Évalué à 2.

        Cool. Maintenant tu peux m'expliquer Drools ?

        pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # Slogan

    Posté par (page perso) . Évalué à 10.

    Oracle, le tueur de logiciel libre.

    Un logiciel libre vous embête? Appelez Oracle, en moins de 3 mois le logiciel a changé de nom et a forké, comme ça vous êtes tranquille.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Slogan

      Posté par . Évalué à 7.

      Toi t'es comme une technologie Sun open source ! T'as pas d'avenir !

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

      • [^] # Re: Slogan

        Posté par . Évalué à 2.

        Sauf si tu changes de nom.

        Au fait, MySQL s'appellera comment dorénavant ?

        Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

        • [^] # Re: Slogan

          Posté par (page perso) . Évalué à 2.

          MariaDB?

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: Slogan

          Posté par . Évalué à 2.

          • [^] # Re: Slogan

            Posté par . Évalué à 1.

            la réponse est : un énième nom à la con!
            • [^] # Re: Slogan

              Posté par (page perso) . Évalué à 1.

              Ah non, c'est le nom d'une de ses filles

              C'est tjr dans la même logique. Mais bon maintenant il ne peut plus forker a moins de faire un autre enfant
              • [^] # Re: Slogan

                Posté par . Évalué à 3.

                Sa fille s'appelle MariaDB ? La pauvre…

                Ça me fait penser à http://xkcd.com/327/

                Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

                • [^] # Re: Slogan

                  Posté par (page perso) . Évalué à 4.

                  Non, elle s'appelle Maria et l'autre s'appelle My.

                  « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # Fonctionnalités...

    Posté par . Évalué à 5.

    Il permet aussi aux chefs de savoir si nous pauvres développeurs avons bien travaillé en regardant des icônes de soleils/nuages plutôt qu'en lisant les logs de gcc.

    Il permet surtout de pouvoir lire un Chuck Norris Fact du programmeur à chaque compilation. Peut-être même est-ce sa principale utilité.
    • [^] # Re: Fonctionnalités...

      Posté par . Évalué à 10.

      En fait, la fonctionnalité ce n'est pas d'ajouter une fortune depuis une liste de Chuck Norris fact.
      Il s'est avéré que la simple fonction d'affichage en Java du Chuck Norris fact a fait que le reste du logiciel s'est développé tout seul.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.