Dev cloud java : la tête dans les nuages

SOAT
SOATSOAT
Java la tête dans le nuage

         par Noël Bardelot
      Ingénieur chez So@t
Introduction

●   Qu'est-ce que le Cloud ?
●   Qu'est-ce que CloudBees ?
●   Ce qui sera abordé
●   Ce qui ne sera pas abordé (ce soir)
●   Les cinq « pourquoi »
●   Un voyage dans le nuage, pas à pas

                   Presentation by Noël Bardelot, So@t   2
Qu'est-ce que le Cloud ?

●   « La programmation dans le Cloud consiste à
    utiliser des ressources (matérielles et logicielles) qui
    sont fournies comme service à travers un réseau. »
    (traduction libre de Wikipedia)

●   Trois principales catégories de ressources :
     –   Infrastructure (IaaS): temps de calcul, mémoire, bande
         passante...
     –   Plateforme (PaaS): système, SGBD, conteneur J2E...
     –   Logiciel (SaaS): Google Docs, Tumblr...
●   Concepts : montée en charge, redondance, standards

                                      Presentation by Noël Bardelot, So@t   3
Qu'est-ce que CloudBees ?


●   Créé en 2010
●   Par Sacha Labourey, ancien directeur
    technique de JBoss
●   Vend un PaaS orienté Java
●   Devoxx France 2012


                   Presentation by Noël Bardelot, So@t   4
Ce qui sera abordé


●   CloudBees gratuit pour du logiciel libre
    –   Poste de développement Linux
    –   Une application Java SE développée sur Eclipse
    –   Git : dépôt de sources
    –   Maven : dépôts et constructions
    –   Jenkins : automatisation des constructions


                      Presentation by Noël Bardelot, So@t   5
Ce qui ne sera pas abordé


●   MySQL et le conteneur Web : revenez pour la
    prochaine soirée !
●   CloudBees pour J2E, qui est payant
●   Windows ou OS X
      ...mais grâce à Java vous vous sentirez comme chez vous

●   D'autres langages orientés Java (JRuby)


                           Presentation by Noël Bardelot, So@t   6
Cinq fois « pourquoi ? »

●   Posons nous la question cinq fois
    –   Pourquoi utiliser CloudBees? Parce qu'il rend la vie du
        développeur plus simple.
    –   Pourquoi ? On peut passer plus de temps à coder.
    –   Pourquoi ? CloudBees fournit des outils qui font beaucoup de
        choses fastidieuses à notre place.
    –   Pourquoi ? La plupart des choses tournent chez CloudBees, nous
        n'avons qu'à les configurer, ce qui est plus simple.
    –   Pourquoi ? Ce sont des outils standards, nous les connaissons
        déjà ! Nous les utilisons déjà tous les jours !


                            Presentation by Noël Bardelot, So@t          7
La pause XKCD
(du site xkcd.com de Randall Munroe)




         Presentation by Noël Bardelot, So@t   8
Pas à pas : préparation

1) Configurer le poste de développement
  •   JDK
  •   Eclipse
  •   DAVFS2
  •   Maven
  •   Git

2) Rejoindre la ruche CloudBees
  •   Créer un compte CloudBees
  •   Installer le SDK CloudBees
  •   Première visite du site

                                Presentation by Noël Bardelot, So@t   9
Pas à pas : Git (1)

●   Créer un nouveau dépôt Git dans CloudBees
●   Créer un couple de clefs (publique, privée) SSH
    ssh-keygen

●   Associer la clef publique au site CloudBees
       Help > Support > Account > SSH Keys
●   Cloner le dépôt Git dans l'espace de travail Eclipse
    git clone ssh://git@git.cloudbees.com/<projectid>/<repo>.git <repo>

●   Vérifier qu'on voit bien le dépôt à distance
    git remote show

                              Presentation by Noël Bardelot, So@t         10
Pas à pas : Git (2)

●   Paramétrer le fichier ~/.gitconfig
      [alias]
         graph = log --graph --full-history --all 
          --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"
      [user]
         email = user@mailserver.com
         name = John Doe
      [core]
         eol = crlf

●   Ce paramétrage peut aussi être fait avec
    la commande git config
                           Presentation by Noël Bardelot, So@t              11
Pas à pas : Git (3)

●   Créer un premier fichier nommé license.txt dans le
    répertoire du projet
    –   Vous pouvez utiliser par exemple la GPL v3: http://www.gnu.org/licenses/gpl-3.0.html

●   Pour débuter avec Git, afficher les commandes
        git
●   En cas de doute taper
        git <command> -h
            or
        git <command> --help

                                  Presentation by Noël Bardelot, So@t                          12
Pas à pas : Git (4)

●   Ajouter le fichier modifié au prochain commit
      git add license.txt
●   Exporter la variable EDITOR dans ~/.bashrc permet
    de changer l'éditeur pour les messages de commit
      export EDITOR=vim
●   Soumettre les changements à votre branche master
      git commit -v
●   Publier les changements sur le dépôt CloudBees
      git push origin master

                      Presentation by Noël Bardelot, So@t   13
La pause XKCD
(du site xkcd.com de Randall Munroe)




         Presentation by Noël Bardelot, So@t   14
Pas à pas : Maven (1)

●   Configurer /etc/fstab pour utiliser DAV
       https://repository-<projectid>.forge.cloudbees.com/snapshot/ /mnt/cloudbees/snapshot davfs
       rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0

       https://repository-<projectid>.forge.cloudbees.com/release/ /mnt/cloudbees/release davfs
       rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0

       https://repository-<projectid>.forge.cloudbees.com/private/ /mnt/cloudbees/private davfs
       rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0

       https://repository-<projectid>.forge.cloudbees.com/backup/ /mnt/cloudbees/backup davfs
       rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0


●   Configurer /etc/davfs2/davfs2.conf
       use_locks 0
       ask_auth 1
       if_match_bug 1
       ignore_home kernoops

●   Ajouter l'utilisateur au groupe davfs2
       sudo usermod -aG davfs2 <user>


                                           Presentation by Noël Bardelot, So@t                      15
Pas à pas : Maven (2)

●   Déclarer les serveurs dans ~/.m2/settings.xml
    <servers>
        <server>
        <id>cloudbees-snapshot</id>
        <username>userid</username>
        <password>password</password>
        </server>
        <server>
        <id>cloudbees-release</id>
        <username>userid</username>
        <password>password</password>
        </server>
    </servers>

●   Les serveurs pourront être reliés par leur ID dans le
    fichier pom.xml de chaque projet
●   Attention userid n'est pas l'adresse e-mail !
                               Presentation by Noël Bardelot, So@t   16
Pas à pas : Maven (3)

●   Une clef maîtresse pour chiffrer les autres
       mvn --encrypt-master-password S3cr3t_p4ssPhr4se
●   Créer le fichier ~/.m2/settings-security.xml pour la stocker
       <settingsSecurity>
           <master>{encrypted master password}</master>
       </settingsSecurity>
●   Utiliser la clef maîtresse pour créer d'autres clefs
       mvn --encrypt-password cloudbeespassword
●   Utiliser ~/.m2/settings.xml pour les stocker
       <password>{encrypted password}</password>



                           Presentation by Noël Bardelot, So@t     17
Pas à pas : Maven (4)

●   Créer l'arborescence, et la donner au groupe
      /mnt/cloudbees:
      drwxr-xr-x 2 root   davfs2   4096   nov.      3   00:43     backup
      drwxr-xr-x 2 root   davfs2   4096   nov.      3   00:43     private
      drwxr-xr-x 2 root   davfs2   4096   nov.      3   00:43     release
      drwxr-xr-x 2 root   davfs2   4096   nov.      3   00:43     snapshot
●   Monter le dépôt privé avec DAV
      sudo mount /mnt/cloudbees/private
●   Y déposer les fichiers de configuration Maven
      sudo cp ~/.m2/settings.xml /mnt/cloudbees/private
      sudo cp ~/.m2/settings-security.xml /mnt/cloudbees/private
●   Ils sont désormais utilisables depuis Jenkins

                            Presentation by Noël Bardelot, So@t              18
Pas à pas : Maven (5)

●   Configurer le déploiement vers CloudBees
    dans le fichier pom.xml
    <distributionManagement>
        <repository>
             <id>cloudbees-release</id>
             <name>Cloudbees Releases</name>
             <url>dav:https://repository-<projectid>.forge.cloudbees.com/release</url>
        </repository>
        <snapshotRepository>
             <id>cloudbees-snapshot</id>
             <name>Cloudbees Snapshots</name>
             <url>dav:https://repository-<projectid>.forge.cloudbees.com/snapshot</url>
        </snapshotRepository>
    </distributionManagement>




                               Presentation by Noël Bardelot, So@t                        19
Pas à pas : Maven (6)

●   Il faut également une extension configurée pour utiliser DAV,
    celle-ci étant conseillée par CloudBees
      <build>
          <extensions>
              <extension>
                  <groupId>org.apache.maven.wagon</groupId>
                  <artifactId>wagon-webdav-jackrabbit</artifactId>
                  <version>2.2</version>
              </extension>
          </extensions>
      </build>
●   Vous pouvez maintenant déployer votre projet depuis le
    poste de développement vers CloudBees avec l'habituel
      mvn deploy



                            Presentation by Noël Bardelot, So@t      20
La pause XKCD
(du site xkcd.com de Randall Munroe)




         Presentation by Noël Bardelot, So@t   21
Pas à pas : Eclipse (1)
●   Utilisez l'extension m2e pour créer un fichier
    pom.xml




●   … ou importez un fichier pom.xml existant
●   Dans tous les cas n'oubliez pas d'adapter votre fichier
    pom.xml de la manière décrite dans la partie
    « Maven » de la présentation !

                    Presentation by Noël Bardelot, So@t       22
Pas à pas : Eclipse (2)

●   Ajouter le support CloudBees au projet Eclipse
    –   Faire un clic droit sur le projet
    –   CloudBees > Add CloudBees Support
●   Plusieurs options disponibles
    –   New Jenkins Job
    –   Run Local
    –   Deploy to RUN@Cloud
    –   Remove CloudBees Support
                        Presentation by Noël Bardelot, So@t   23
Pas à pas : Eclipse (3)
●   Créer un programme Java




                 Presentation by Noël Bardelot, So@t   24
Pas à pas : Eclipse (4)
●   Créer un test avec JUnit que Maven lancera




                  Presentation by Noël Bardelot, So@t   25
Pas à pas : Eclipse (5)
●   Ajouter les dépendances du projet dans le fichier pom.xml
      <dependencies>
          <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.10</version>
          </dependency>
          <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.6.6</version>
          </dependency>
          <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.6.6</version>
          </dependency>
          <dependency>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
          <version>1.7</version>
          </dependency>
      </dependencies>




                                  Presentation by Noël Bardelot, So@t   26
Pas à pas : Eclipse (6)
●   Ajouter une configuration log4j.xml dans les
    deux répertoires de ressources
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
    <log4j:configuration>
            <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
                <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern"
                           value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
                </layout>
            </appender>
        <root>
            <priority value="debug"></priority>
            <appender-ref ref="stdout" />
        </root>
    </log4j:configuration>



                            Presentation by Noël Bardelot, So@t                 27
Pas à pas : Eclipse (7)


●   Il reste une alerte à la compilation du JAR
      [WARNING] Using platform encoding (UTF-8 actually) to copy filtered
      resources, i.e. build is platform dependent!

●   Corriger ce problème dans le fichier pom.xml
      <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>




                          Presentation by Noël Bardelot, So@t                  28
Pas à pas : Eclipse (8)
●   Afficher les changements de notre dépôt Git local
      git status

●   Ajouter les fichiers/répertoires modifiés à la
    prochaine révision
      git add <list of directories and files>

●   Créer la nouvelle révision sur le dépôt local
      git commit -v

●   Pousser les révisions locales vers la branche origin
    dans le dépôt CloudBees
      git push origin master



                               Presentation by Noël Bardelot, So@t   29
Pas à pas : Eclipse (9)
●   Nettoyer et compiler
       mvn clean compile

●   Déployer sur le dépôt Maven local
       mvn install

●   Et si tout va bien, déployer pour la première fois sur
    le dépôt Maven chez CloudBees
       mvn deploy
●   Vérifier les traces : s'il n'y a pas d'erreur les artéfacts se trouvent
    dans le dépôt Maven snapshot chez CloudBees, ce que vous
    pouvez voir ou bien depuis le site, ou bien depuis votre montage
    DAV


                            Presentation by Noël Bardelot, So@t               30
La pause XKCD
(du site xkcd.com de Randall Munroe)




         Presentation by Noël Bardelot, So@t   31
Pas à pas : Jenkins (1)

●   Pour compiler/déployer depuis le poste de travail quand
    Jenkins peut le faire pour nous ?
●   Création d'un job Jenkins
    –   Aller sur la page Jenkins depuis le lien 'Builds' dans CloudBees
    –   Créer un nouveau job
    –   Choisir Free-style project et l'appeler <repo> origin HEAD
●   Comme le temps c'est de l'argent également dans le Cloud,
    faites attention à configurer vos jobs pour n'utiliser que ce
    dont vous avez réellement besoin



                             Presentation by Noël Bardelot, So@t           32
Pas à pas : Jenkins (2)
●   Rappelez-vous des fichiers settings.xml et
    settings-security.xml que vous aviez copé dans le
    dépôt Maven privé
●   Disponible par le chemin /private depuis Jenkins
●   Pour déployer depuis Jenkins il faut configurer son
    utilisation de Maven pour qu'il le sache
    –   Cliquer sur Jenkins administration puis System configuration
    –   Trouver la propriété nommée MAVEN_OPTS global
    –   Lui donner la valeur suivante
        -Dsettings.security=/private/<projectid>/settings-security.xml




                                   Presentation by Noël Bardelot, So@t   33
Pas à pas : Jenkins (3)

●   Retourner au job, et cliquer configure
●   Configurer le dépôt Git
    –   Repository URL:
        ssh://git@git.cloudbees.com/<projectid>/<repo>.git

    –   Branches to build: origin/HEAD
●   Dans la section Build
    –   Add a high level maven goal
    –   Set the goal:
        deploy -s /private/<projectid>/settings.xml

                            Presentation by Noël Bardelot, So@t   34
Pas à pas : Jenkins (4)
●   Les autres options sur lesquelles s'attarder
    –   Manual builds
    –   Garbage your old artifacts (since it's a snapshot job)
    –   Allow parrallel builds
    –   Publish Javadoc and/or JUnit reports
●   Jenkins est fourni chez CloudBees avec une poignée
    d'extensions, et vous pouvez en installer d'autres
●   Si votre objectif est un projet Web sous TomCat ou un
    projet J2E n'oubliez pas que Jenkins peut effectuer le
    déploiement automatique sur le conteneur

                            Presentation by Noël Bardelot, So@t   35
Place aux questions




    Presentation by Noël Bardelot, So@t   36
Licence
    Cette présentation est publiée sous la licence Creative
                     Common BY-NC-ND

Vous êtes libre de reproduire distribuer et communiquer la présentation, en l'attribuant à
            son auteur, sans la dériver ni en faire une utilisation commerciale.


                   Pour lire la licence complète :
      http://creativecommons.org/licenses/by-nc-nd/2.0/fr/




                               Presentation by Noël Bardelot, So@t                       37
1 sur 37

Recommandé

Julien Maitrehenry - Docker, ça mange quoi au printemps par
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsWeb à Québec
1.7K vues100 diapositives
NightClazz Docker Découverte par
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte Zenika
1.8K vues47 diapositives
Support formation vidéo : Construire et administrer vos conteneurs avec Docker par
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSmartnSkilled
379 vues144 diapositives
Docker nice meetup #1 construire, déployer et exécuter vos applications, ... par
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...adri1s
2.1K vues32 diapositives
Livre blanc docker par
Livre blanc docker Livre blanc docker
Livre blanc docker JEAN-GUILLAUME DUJARDIN
1.5K vues19 diapositives
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ? par
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?Membré Guillaume
992 vues31 diapositives

Contenu connexe

Tendances

Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu par
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuAhmed Archive
3.6K vues80 diapositives
Docker Tours Meetup #1 - Introduction à Docker par
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
3.5K vues41 diapositives
Squid squid guard par
Squid squid guardSquid squid guard
Squid squid guardFanoela Rajaonarivelo
1K vues47 diapositives
Oxalide Workshop #4 - Docker, des tours dans le petit bassin par
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
883 vues58 diapositives
Docker@linuq par
Docker@linuqDocker@linuq
Docker@linuqSylvain Boily
888 vues19 diapositives
Présentation Docker par
Présentation DockerPrésentation Docker
Présentation DockerColin LEVERGER
7.5K vues28 diapositives

Tendances(20)

Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu par Ahmed Archive
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Ahmed Archive3.6K vues
Docker Tours Meetup #1 - Introduction à Docker par Thibaut Marmin
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
Thibaut Marmin3.5K vues
Oxalide Workshop #4 - Docker, des tours dans le petit bassin par Ludovic Piot
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot883 vues
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016 par Fabien Arcellier
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Fabien Arcellier1.4K vues
Alter Way's digitalks - Docker : des conteneurs pour tout faire ? par ALTER WAY
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
ALTER WAY791 vues
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans... par Aurelien Navarre
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Aurelien Navarre1.1K vues
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel... par OpenNebula Project
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
OpenNebula Project2.1K vues
Introduction à Docker et utilisation en production /Digital apéro Besançon [1... par Silicon Comté
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Silicon Comté1.6K vues
Varnish & blue/green deployments par Oxalide
Varnish & blue/green deploymentsVarnish & blue/green deployments
Varnish & blue/green deployments
Oxalide1.9K vues
Présentation de nagios par ilyassin
Présentation de nagiosPrésentation de nagios
Présentation de nagios
ilyassin3.6K vues

En vedette

2. wco intro wco par
2. wco intro wco2. wco intro wco
2. wco intro wcosugogo
457 vues13 diapositives
4. wco instruments safe rkc par
4. wco instruments safe rkc4. wco instruments safe rkc
4. wco instruments safe rkcsugogo
780 vues18 diapositives
apple par
appleapple
appleRonaldo Espinal Duran
150 vues7 diapositives
Apres leplat analyse_activite par
Apres leplat analyse_activiteApres leplat analyse_activite
Apres leplat analyse_activiteRose Cavalcante
534 vues26 diapositives
5. wco dm introduction and background par
5. wco dm introduction and background5. wco dm introduction and background
5. wco dm introduction and backgroundsugogo
677 vues27 diapositives
Expert Folder soldes Janvier 2014 FR par
Expert Folder soldes Janvier 2014 FRExpert Folder soldes Janvier 2014 FR
Expert Folder soldes Janvier 2014 FRExpert
603 vues8 diapositives

En vedette(20)

2. wco intro wco par sugogo
2. wco intro wco2. wco intro wco
2. wco intro wco
sugogo457 vues
4. wco instruments safe rkc par sugogo
4. wco instruments safe rkc4. wco instruments safe rkc
4. wco instruments safe rkc
sugogo780 vues
5. wco dm introduction and background par sugogo
5. wco dm introduction and background5. wco dm introduction and background
5. wco dm introduction and background
sugogo677 vues
Expert Folder soldes Janvier 2014 FR par Expert
Expert Folder soldes Janvier 2014 FRExpert Folder soldes Janvier 2014 FR
Expert Folder soldes Janvier 2014 FR
Expert603 vues
10 gn cand cbm par sugogo
10 gn cand cbm10 gn cand cbm
10 gn cand cbm
sugogo820 vues
Promoción de la inversión privada en carreteras par Alcides Velazco
Promoción de la inversión privada en carreterasPromoción de la inversión privada en carreteras
Promoción de la inversión privada en carreteras
Alcides Velazco1.1K vues
7. information modelling par sugogo
7. information modelling7. information modelling
7. information modelling
sugogo950 vues
French Right of REVOLUTION & Political CORRUPTION par VogelDenise
French   Right of REVOLUTION & Political CORRUPTIONFrench   Right of REVOLUTION & Political CORRUPTION
French Right of REVOLUTION & Political CORRUPTION
VogelDenise560 vues
French 2A Review Beginning par morochex
French 2A Review BeginningFrench 2A Review Beginning
French 2A Review Beginning
morochex643 vues
title par mdou68
titletitle
title
mdou68213 vues
Présentation SIFE cycle de visite 1 (2012) par kaoutara007
Présentation SIFE cycle de visite 1 (2012)Présentation SIFE cycle de visite 1 (2012)
Présentation SIFE cycle de visite 1 (2012)
kaoutara007336 vues
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7 par Solutions IT et Business
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7
IM France - Avantages d'une mise à niveau vers info sphere datastage 8.7
Le rapport de l'Afsca par lesoirbe
Le rapport de l'AfscaLe rapport de l'Afsca
Le rapport de l'Afsca
lesoirbe3K vues

Similaire à Dev cloud java : la tête dans les nuages

Oxalide Workshop #4 - Docker, des tours dans le petit bassin par
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
2.6K vues58 diapositives
Virt lightning-montreal-linux-meetup-2020-02 par
Virt lightning-montreal-linux-meetup-2020-02Virt lightning-montreal-linux-meetup-2020-02
Virt lightning-montreal-linux-meetup-2020-02Gonéri Le Bouder
42 vues38 diapositives
DevOps avec Ansible et Docker par
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
21.3K vues37 diapositives
Infrastructure as code drupal par
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupalChristophe Villeneuve
512 vues47 diapositives
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ... par
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Pierre Ternon
4.4K vues34 diapositives
Alphorm.com Formation Nagios et Cacti : Installation et Administration par
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm
47.1K vues236 diapositives

Similaire à Dev cloud java : la tête dans les nuages(20)

Oxalide Workshop #4 - Docker, des tours dans le petit bassin par Oxalide
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide2.6K vues
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ... par Pierre Ternon
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Pierre Ternon4.4K vues
Alphorm.com Formation Nagios et Cacti : Installation et Administration par Alphorm
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm47.1K vues
OpenShift en production - Akram Ben Assi & Eloïse Faure par Paris Container Day
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
Play framework - Human Talks Grenoble - 12.02.2013 par Xavier NOPRE
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
Xavier NOPRE1.3K vues
Spring Boot & Containers - Do's & Don'ts par Julien Wittouck
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
Julien Wittouck200 vues
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY... par AZUG FR
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
AZUG FR118 vues
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter... par XavierPestel
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
XavierPestel803 vues
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue par Stéphane HULARD
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
Stéphane HULARD4.1K vues
Kubernetes University - Cap sur l'orchestration par Wescale
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
Wescale39 vues

Plus de SOAT

Back from Microsoft //Build 2018 par
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018SOAT
429 vues64 diapositives
L'entreprise libérée par
L'entreprise libéréeL'entreprise libérée
L'entreprise libéréeSOAT
931 vues54 diapositives
Amélioration continue, c'est l'affaire de tous ! par
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !SOAT
1.5K vues50 diapositives
JAVA 8 : Migration et enjeux stratégiques en entreprise par
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseSOAT
677 vues111 diapositives
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES par
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
8.5K vues99 diapositives
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand par
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-DurandSOAT
1.5K vues16 diapositives

Plus de SOAT(20)

Back from Microsoft //Build 2018 par SOAT
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018
SOAT429 vues
L'entreprise libérée par SOAT
L'entreprise libéréeL'entreprise libérée
L'entreprise libérée
SOAT931 vues
Amélioration continue, c'est l'affaire de tous ! par SOAT
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !
SOAT1.5K vues
JAVA 8 : Migration et enjeux stratégiques en entreprise par SOAT
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entreprise
SOAT677 vues
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES par SOAT
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
SOAT8.5K vues
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand par SOAT
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
SOAT1.5K vues
1/3 : introduction to CDI - Antoine Sabot-Durand par SOAT
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand
SOAT1.3K vues
2/3 : CDI advanced - Antoine Sabot-Durand par SOAT
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand
SOAT1.2K vues
Angular JS - Paterne Gaye-Guingnido par SOAT
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
SOAT2K vues
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot par SOAT
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
SOAT2.4K vues
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014 par SOAT
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
SOAT2.6K vues
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ... par SOAT
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
SOAT1.6K vues
Nio sur Netty par Mouhcine Moulou - 3 avril 2014 par SOAT
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
SOAT1.3K vues
20140123 java8 lambdas_jose-paumard-soat par SOAT
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat
SOAT1.1K vues
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ... par SOAT
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
SOAT6.9K vues
Amazon Web Service par Bertrand Lehurt - 11 mars 2014 par SOAT
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
SOAT1.6K vues
ASP.Net Web API - Léonard Labat (18 février 2014) par SOAT
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)
SOAT3.4K vues
Xamarin et le développement natif d’applications Android, iOS et Windows en C# par SOAT
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
SOAT9.8K vues
A la découverte du Responsive Web Design par Mathieu Parisot - Soat par SOAT
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
SOAT2.3K vues
MongoDB : la base NoSQL qui réinvente la gestion de données par SOAT
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
SOAT5.8K vues

Dev cloud java : la tête dans les nuages

  • 1. Java la tête dans le nuage par Noël Bardelot Ingénieur chez So@t
  • 2. Introduction ● Qu'est-ce que le Cloud ? ● Qu'est-ce que CloudBees ? ● Ce qui sera abordé ● Ce qui ne sera pas abordé (ce soir) ● Les cinq « pourquoi » ● Un voyage dans le nuage, pas à pas Presentation by Noël Bardelot, So@t 2
  • 3. Qu'est-ce que le Cloud ? ● « La programmation dans le Cloud consiste à utiliser des ressources (matérielles et logicielles) qui sont fournies comme service à travers un réseau. » (traduction libre de Wikipedia) ● Trois principales catégories de ressources : – Infrastructure (IaaS): temps de calcul, mémoire, bande passante... – Plateforme (PaaS): système, SGBD, conteneur J2E... – Logiciel (SaaS): Google Docs, Tumblr... ● Concepts : montée en charge, redondance, standards Presentation by Noël Bardelot, So@t 3
  • 4. Qu'est-ce que CloudBees ? ● Créé en 2010 ● Par Sacha Labourey, ancien directeur technique de JBoss ● Vend un PaaS orienté Java ● Devoxx France 2012 Presentation by Noël Bardelot, So@t 4
  • 5. Ce qui sera abordé ● CloudBees gratuit pour du logiciel libre – Poste de développement Linux – Une application Java SE développée sur Eclipse – Git : dépôt de sources – Maven : dépôts et constructions – Jenkins : automatisation des constructions Presentation by Noël Bardelot, So@t 5
  • 6. Ce qui ne sera pas abordé ● MySQL et le conteneur Web : revenez pour la prochaine soirée ! ● CloudBees pour J2E, qui est payant ● Windows ou OS X ...mais grâce à Java vous vous sentirez comme chez vous ● D'autres langages orientés Java (JRuby) Presentation by Noël Bardelot, So@t 6
  • 7. Cinq fois « pourquoi ? » ● Posons nous la question cinq fois – Pourquoi utiliser CloudBees? Parce qu'il rend la vie du développeur plus simple. – Pourquoi ? On peut passer plus de temps à coder. – Pourquoi ? CloudBees fournit des outils qui font beaucoup de choses fastidieuses à notre place. – Pourquoi ? La plupart des choses tournent chez CloudBees, nous n'avons qu'à les configurer, ce qui est plus simple. – Pourquoi ? Ce sont des outils standards, nous les connaissons déjà ! Nous les utilisons déjà tous les jours ! Presentation by Noël Bardelot, So@t 7
  • 8. La pause XKCD (du site xkcd.com de Randall Munroe) Presentation by Noël Bardelot, So@t 8
  • 9. Pas à pas : préparation 1) Configurer le poste de développement • JDK • Eclipse • DAVFS2 • Maven • Git 2) Rejoindre la ruche CloudBees • Créer un compte CloudBees • Installer le SDK CloudBees • Première visite du site Presentation by Noël Bardelot, So@t 9
  • 10. Pas à pas : Git (1) ● Créer un nouveau dépôt Git dans CloudBees ● Créer un couple de clefs (publique, privée) SSH ssh-keygen ● Associer la clef publique au site CloudBees Help > Support > Account > SSH Keys ● Cloner le dépôt Git dans l'espace de travail Eclipse git clone ssh://git@git.cloudbees.com/<projectid>/<repo>.git <repo> ● Vérifier qu'on voit bien le dépôt à distance git remote show Presentation by Noël Bardelot, So@t 10
  • 11. Pas à pas : Git (2) ● Paramétrer le fichier ~/.gitconfig [alias] graph = log --graph --full-history --all --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s" [user] email = user@mailserver.com name = John Doe [core] eol = crlf ● Ce paramétrage peut aussi être fait avec la commande git config Presentation by Noël Bardelot, So@t 11
  • 12. Pas à pas : Git (3) ● Créer un premier fichier nommé license.txt dans le répertoire du projet – Vous pouvez utiliser par exemple la GPL v3: http://www.gnu.org/licenses/gpl-3.0.html ● Pour débuter avec Git, afficher les commandes git ● En cas de doute taper git <command> -h or git <command> --help Presentation by Noël Bardelot, So@t 12
  • 13. Pas à pas : Git (4) ● Ajouter le fichier modifié au prochain commit git add license.txt ● Exporter la variable EDITOR dans ~/.bashrc permet de changer l'éditeur pour les messages de commit export EDITOR=vim ● Soumettre les changements à votre branche master git commit -v ● Publier les changements sur le dépôt CloudBees git push origin master Presentation by Noël Bardelot, So@t 13
  • 14. La pause XKCD (du site xkcd.com de Randall Munroe) Presentation by Noël Bardelot, So@t 14
  • 15. Pas à pas : Maven (1) ● Configurer /etc/fstab pour utiliser DAV https://repository-<projectid>.forge.cloudbees.com/snapshot/ /mnt/cloudbees/snapshot davfs rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0 https://repository-<projectid>.forge.cloudbees.com/release/ /mnt/cloudbees/release davfs rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0 https://repository-<projectid>.forge.cloudbees.com/private/ /mnt/cloudbees/private davfs rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0 https://repository-<projectid>.forge.cloudbees.com/backup/ /mnt/cloudbees/backup davfs rw,user,noauto,conf=/etc/davfs2/davfs2.conf,uid=$UID 0 0 ● Configurer /etc/davfs2/davfs2.conf use_locks 0 ask_auth 1 if_match_bug 1 ignore_home kernoops ● Ajouter l'utilisateur au groupe davfs2 sudo usermod -aG davfs2 <user> Presentation by Noël Bardelot, So@t 15
  • 16. Pas à pas : Maven (2) ● Déclarer les serveurs dans ~/.m2/settings.xml <servers> <server> <id>cloudbees-snapshot</id> <username>userid</username> <password>password</password> </server> <server> <id>cloudbees-release</id> <username>userid</username> <password>password</password> </server> </servers> ● Les serveurs pourront être reliés par leur ID dans le fichier pom.xml de chaque projet ● Attention userid n'est pas l'adresse e-mail ! Presentation by Noël Bardelot, So@t 16
  • 17. Pas à pas : Maven (3) ● Une clef maîtresse pour chiffrer les autres mvn --encrypt-master-password S3cr3t_p4ssPhr4se ● Créer le fichier ~/.m2/settings-security.xml pour la stocker <settingsSecurity> <master>{encrypted master password}</master> </settingsSecurity> ● Utiliser la clef maîtresse pour créer d'autres clefs mvn --encrypt-password cloudbeespassword ● Utiliser ~/.m2/settings.xml pour les stocker <password>{encrypted password}</password> Presentation by Noël Bardelot, So@t 17
  • 18. Pas à pas : Maven (4) ● Créer l'arborescence, et la donner au groupe /mnt/cloudbees: drwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 backup drwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 private drwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 release drwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 snapshot ● Monter le dépôt privé avec DAV sudo mount /mnt/cloudbees/private ● Y déposer les fichiers de configuration Maven sudo cp ~/.m2/settings.xml /mnt/cloudbees/private sudo cp ~/.m2/settings-security.xml /mnt/cloudbees/private ● Ils sont désormais utilisables depuis Jenkins Presentation by Noël Bardelot, So@t 18
  • 19. Pas à pas : Maven (5) ● Configurer le déploiement vers CloudBees dans le fichier pom.xml <distributionManagement> <repository> <id>cloudbees-release</id> <name>Cloudbees Releases</name> <url>dav:https://repository-<projectid>.forge.cloudbees.com/release</url> </repository> <snapshotRepository> <id>cloudbees-snapshot</id> <name>Cloudbees Snapshots</name> <url>dav:https://repository-<projectid>.forge.cloudbees.com/snapshot</url> </snapshotRepository> </distributionManagement> Presentation by Noël Bardelot, So@t 19
  • 20. Pas à pas : Maven (6) ● Il faut également une extension configurée pour utiliser DAV, celle-ci étant conseillée par CloudBees <build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-webdav-jackrabbit</artifactId> <version>2.2</version> </extension> </extensions> </build> ● Vous pouvez maintenant déployer votre projet depuis le poste de développement vers CloudBees avec l'habituel mvn deploy Presentation by Noël Bardelot, So@t 20
  • 21. La pause XKCD (du site xkcd.com de Randall Munroe) Presentation by Noël Bardelot, So@t 21
  • 22. Pas à pas : Eclipse (1) ● Utilisez l'extension m2e pour créer un fichier pom.xml ● … ou importez un fichier pom.xml existant ● Dans tous les cas n'oubliez pas d'adapter votre fichier pom.xml de la manière décrite dans la partie « Maven » de la présentation ! Presentation by Noël Bardelot, So@t 22
  • 23. Pas à pas : Eclipse (2) ● Ajouter le support CloudBees au projet Eclipse – Faire un clic droit sur le projet – CloudBees > Add CloudBees Support ● Plusieurs options disponibles – New Jenkins Job – Run Local – Deploy to RUN@Cloud – Remove CloudBees Support Presentation by Noël Bardelot, So@t 23
  • 24. Pas à pas : Eclipse (3) ● Créer un programme Java Presentation by Noël Bardelot, So@t 24
  • 25. Pas à pas : Eclipse (4) ● Créer un test avec JUnit que Maven lancera Presentation by Noël Bardelot, So@t 25
  • 26. Pas à pas : Eclipse (5) ● Ajouter les dépendances du projet dans le fichier pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.7</version> </dependency> </dependencies> Presentation by Noël Bardelot, So@t 26
  • 27. Pas à pas : Eclipse (6) ● Ajouter une configuration log4j.xml dans les deux répertoires de ressources <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > <log4j:configuration> <appender name="stdout" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" /> </layout> </appender> <root> <priority value="debug"></priority> <appender-ref ref="stdout" /> </root> </log4j:configuration> Presentation by Noël Bardelot, So@t 27
  • 28. Pas à pas : Eclipse (7) ● Il reste une alerte à la compilation du JAR [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! ● Corriger ce problème dans le fichier pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> Presentation by Noël Bardelot, So@t 28
  • 29. Pas à pas : Eclipse (8) ● Afficher les changements de notre dépôt Git local git status ● Ajouter les fichiers/répertoires modifiés à la prochaine révision git add <list of directories and files> ● Créer la nouvelle révision sur le dépôt local git commit -v ● Pousser les révisions locales vers la branche origin dans le dépôt CloudBees git push origin master Presentation by Noël Bardelot, So@t 29
  • 30. Pas à pas : Eclipse (9) ● Nettoyer et compiler mvn clean compile ● Déployer sur le dépôt Maven local mvn install ● Et si tout va bien, déployer pour la première fois sur le dépôt Maven chez CloudBees mvn deploy ● Vérifier les traces : s'il n'y a pas d'erreur les artéfacts se trouvent dans le dépôt Maven snapshot chez CloudBees, ce que vous pouvez voir ou bien depuis le site, ou bien depuis votre montage DAV Presentation by Noël Bardelot, So@t 30
  • 31. La pause XKCD (du site xkcd.com de Randall Munroe) Presentation by Noël Bardelot, So@t 31
  • 32. Pas à pas : Jenkins (1) ● Pour compiler/déployer depuis le poste de travail quand Jenkins peut le faire pour nous ? ● Création d'un job Jenkins – Aller sur la page Jenkins depuis le lien 'Builds' dans CloudBees – Créer un nouveau job – Choisir Free-style project et l'appeler <repo> origin HEAD ● Comme le temps c'est de l'argent également dans le Cloud, faites attention à configurer vos jobs pour n'utiliser que ce dont vous avez réellement besoin Presentation by Noël Bardelot, So@t 32
  • 33. Pas à pas : Jenkins (2) ● Rappelez-vous des fichiers settings.xml et settings-security.xml que vous aviez copé dans le dépôt Maven privé ● Disponible par le chemin /private depuis Jenkins ● Pour déployer depuis Jenkins il faut configurer son utilisation de Maven pour qu'il le sache – Cliquer sur Jenkins administration puis System configuration – Trouver la propriété nommée MAVEN_OPTS global – Lui donner la valeur suivante -Dsettings.security=/private/<projectid>/settings-security.xml Presentation by Noël Bardelot, So@t 33
  • 34. Pas à pas : Jenkins (3) ● Retourner au job, et cliquer configure ● Configurer le dépôt Git – Repository URL: ssh://git@git.cloudbees.com/<projectid>/<repo>.git – Branches to build: origin/HEAD ● Dans la section Build – Add a high level maven goal – Set the goal: deploy -s /private/<projectid>/settings.xml Presentation by Noël Bardelot, So@t 34
  • 35. Pas à pas : Jenkins (4) ● Les autres options sur lesquelles s'attarder – Manual builds – Garbage your old artifacts (since it's a snapshot job) – Allow parrallel builds – Publish Javadoc and/or JUnit reports ● Jenkins est fourni chez CloudBees avec une poignée d'extensions, et vous pouvez en installer d'autres ● Si votre objectif est un projet Web sous TomCat ou un projet J2E n'oubliez pas que Jenkins peut effectuer le déploiement automatique sur le conteneur Presentation by Noël Bardelot, So@t 35
  • 36. Place aux questions Presentation by Noël Bardelot, So@t 36
  • 37. Licence Cette présentation est publiée sous la licence Creative Common BY-NC-ND Vous êtes libre de reproduire distribuer et communiquer la présentation, en l'attribuant à son auteur, sans la dériver ni en faire une utilisation commerciale. Pour lire la licence complète : http://creativecommons.org/licenses/by-nc-nd/2.0/fr/ Presentation by Noël Bardelot, So@t 37