Dev cloud java : la tête dans les nuages
Upcoming SlideShare
Loading in...5
×
 

Dev cloud java : la tête dans les nuages

on

  • 745 views

Si vous voulez en savoir un peu plus sur Cloudbees, notre nouveau partenaire technique, nous vous invitons à découvrir la présentation de Noel Bardelot. ...

Si vous voulez en savoir un peu plus sur Cloudbees, notre nouveau partenaire technique, nous vous invitons à découvrir la présentation de Noel Bardelot.

Noel nous a préparé une démonstration sur la manière d'aborder le développement Java dans le Cloud via la solution DEV@Cloud de CloudBees.

A cette occasion vous apprendrez à créer un projet pas à pas, outil par outil et à reproduire à volonté.

Pas de pré-requis particulier pour cette vidéo tout public.

Statistics

Views

Total Views
745
Views on SlideShare
624
Embed Views
121

Actions

Likes
1
Downloads
7
Comments
0

2 Embeds 121

http://www.soat.fr 119
http://www-rec.soat.fr 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Dev cloud java : la tête dans les nuages Dev cloud java : la tête dans les nuages Presentation Transcript

  • Java la tête dans le nuage par Noël Bardelot Ingénieur chez So@t
  • Introduction● Quest-ce que le Cloud ?● Quest-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
  • Quest-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
  • Quest-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● Dautres 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 quil 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 navons 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éparation1) Configurer le poste de développement • JDK • Eclipse • DAVFS2 • Maven • Git2) 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 lespace de travail Eclipse git clone ssh://git@git.cloudbees.com/<projectid>/<repo>.git <repo>● Vérifier quon 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 lutilisateur 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 nest pas ladresse 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 dautres 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 larborescence, 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 lhabituel 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 lextension m2e pour créer un fichier pom.xml● … ou importez un fichier pom.xml existant● Dans tous les cas noubliez pas dadapter 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 : sil ny a pas derreur 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 dun job Jenkins – Aller sur la page Jenkins depuis le lien Builds dans CloudBees – Créer un nouveau job – Choisir Free-style project et lappeler <repo> origin HEAD● Comme le temps cest de largent également dans le Cloud, faites attention à configurer vos jobs pour nutiliser 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 quil 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 sattarder – Manual builds – Garbage your old artifacts (since its a snapshot job) – Allow parrallel builds – Publish Javadoc and/or JUnit reports● Jenkins est fourni chez CloudBees avec une poignée dextensions, et vous pouvez en installer dautres● Si votre objectif est un projet Web sous TomCat ou un projet J2E noubliez 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-NDVous êtes libre de reproduire distribuer et communiquer la présentation, en lattribuant à 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