dev cloud java : la tête dans les nuages

37
Java la tête dans le nuage par Noël Bardelot Ingénieur chez So@t

Upload: soat

Post on 31-May-2015

689 views

Category:

Technology


3 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: Dev cloud java : la tête dans les nuages

Java la tête dans le nuage

par Noël BardelotIngénieur chez So@t

Page 2: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, 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

Page 3: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 4: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 5: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 6: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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)

Page 7: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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 !

Page 8: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 8

La pause XKCD(du site xkcd.com de Randall Munroe)

Page 9: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 10: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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 Eclipsegit clone ssh://[email protected]/<projectid>/<repo>.git <repo>

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

Page 11: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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 = [email protected]

name = John Doe

[core]

eol = crlf

● Ce paramétrage peut aussi être fait avecla commande git config

Page 12: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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 commandesgit

● En cas de doute tapergit <command> -h

or

git <command> --help

Page 13: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 13

Pas à pas : Git (4)

● Ajouter le fichier modifié au prochain commitgit 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 mastergit commit -v

● Publier les changements sur le dépôt CloudBeesgit push origin master

Page 14: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 14

La pause XKCD(du site xkcd.com de Randall Munroe)

Page 15: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 15

Pas à pas : Maven (1)

● Configurer /etc/fstab pour utiliser DAVhttps://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.confuse_locks 0ask_auth 1if_match_bug 1ignore_home kernoops

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

Page 16: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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 !

Page 17: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 17

Pas à pas : Maven (3)

● Une clef maîtresse pour chiffrer les autresmvn --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 clefsmvn --encrypt-password cloudbeespassword

● Utiliser ~/.m2/settings.xml pour les stocker<password>{encrypted password}</password>

Page 18: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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 backupdrwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 privatedrwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 releasedrwxr-xr-x 2 root davfs2 4096 nov. 3 00:43 snapshot

● Monter le dépôt privé avec DAVsudo mount /mnt/cloudbees/private

● Y déposer les fichiers de configuration Mavensudo cp ~/.m2/settings.xml /mnt/cloudbees/privatesudo cp ~/.m2/settings-security.xml /mnt/cloudbees/private

● Ils sont désormais utilisables depuis Jenkins

Page 19: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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>

Page 20: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 21: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 21

La pause XKCD(du site xkcd.com de Randall Munroe)

Page 22: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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 !

Page 23: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 24: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 24

Pas à pas : Eclipse (3)

● Créer un programme Java

Page 25: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 25

Pas à pas : Eclipse (4)

● Créer un test avec JUnit que Maven lancera

Page 26: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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>

Page 27: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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>

Page 28: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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>

Page 29: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 29

Pas à pas : Eclipse (8)

● Afficher les changements de notre dépôt Git localgit 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 localgit commit -v

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

git push origin master

Page 30: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 30

Pas à pas : Eclipse (9)

● Nettoyer et compilermvn clean compile

● Déployer sur le dépôt Maven localmvn 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

Page 31: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 31

La pause XKCD(du site xkcd.com de Randall Munroe)

Page 32: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 33: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 34: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 34

Pas à pas : Jenkins (3)

● Retourner au job, et cliquer configure● Configurer le dépôt Git

– Repository URL:ssh://[email protected]/<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

Page 35: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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

Page 36: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 36

Place aux questions

Page 37: Dev cloud java : la tête dans les nuages

Presentation by Noël Bardelot, So@t 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/