dev cloud java : la tête dans les nuages
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/36.jpg)
Presentation by Noël Bardelot, So@t 36
Place aux questions
![Page 37: Dev cloud java : la tête dans les nuages](https://reader033.vdocuments.site/reader033/viewer/2022052619/556a430ed8b42a4a1e8b4bae/html5/thumbnails/37.jpg)
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/