SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
NightClazz Découverte
BuildTools &
Continuous Delivery
#nightclazz
2
Quelques mots sur nous
●
Grégory Boissinot (@gboissinot)
– Continuous Integration, Continuous Delivery and Jenkins Addict
– Zenika Paris CTO
●
Maxence Labusquière
– Etudiant en dernière année à l'ESIEA
– Stagiaire DevOps
●
Khaled Souf
– Consultant et Formateur Zenika
– Grosse expérience en Intégration Continue
●
Nassima Armouche
– Consultante et Formatrice Zenika
– Experte en Usine Logicielle
●
Julien Aubin
– Consultant Zenika
– Sa dernière mission: DevOps
3
Le programme
1) Problématique et enjeux de la construction logicielle, de l’intégration continue et du continuous
delivery
2) Focus sur les outils de build dans le monde Java et les outils de l’intégration continue
– Présentation des différents outils et critères de choix
– Serveur d'intégration continue Jenkins et Repository manager, etc
– Le mécanisme de livraison logicielle puis déclination avec Maven et Gradle
– Workshop : Faire une release avec Git & Maven
3) Le déploiement applicatif
– Problématiques et enjeux
– Présentation des principaux outils du marché : avantages, inconvénients
– Workshop avec le produit Thoughtworks GO
4
Plan
1) Problématique et enjeux de la construction logicielle, de l’intégration continue et du
continuous delivery
2) Focus sur les outils de build dans le monde Java et les outils de l’intégration continue
– Présentation des différents outils et critères de choix
– Serveur d'intégration continue Jenkins et Repository manager, etc
– Le mécanisme de livraison logicielle et déclination avec Maven et Gradle
– Workshop : Faire une release avec Git/Maven/Jenkins
3) Le déploiement applicatif
– Problématiques et enjeux
– Présentation des principaux outils du marché : avantages, inconvénients
– Workshop avec le produit Thoughtworks GO
5
L'idéal : Livrer fréquemment
Feedback
Develop
Test
Deploy
Monitor
Cycle de livraison
avec un retour rapide des utilisateurs
Dev
Ops
→ Réduction du Time-to-
Market
→ Réduction du coût de
correction des erreurs
6
La livraison logicielle
(Release)
●
Avoir un processus répétable et fiable pour la livraison logicielle
– Automatiser un maximum d'éléments
– Intervention humaine pour des fonctions à hautes valeurs ajoutés
●
Test, validation et promotion (manuelle)
DEPLOY
INSTALL
RELEASE
BUILD
UNIT TESTS
TEST
VALIDATION
Processus identifié (traçabilité) et reproductible (fiabilité) Visibilité
&
Feedback
Vérification
Ensemble des étapes d'une livraison logicielle
7
Continuous Integration
(CI)
●
Méthodologie agile consistant à construire et à tester le logiciel à chaque
changement de de code source
SCM
Source code
Build scripts
BUILD
Compile
Unit Tests
Code analysis
Assemble
(package + installer)
Artifact
Repository
Binaries
Unit Test Reports
BuildContext
Metadata
OBJECTIF:
Garder le code source propre (clean) en détectant les erreurs de
développement au plus tôt
Créer une livraison logicielle éligible (release candidate)
8
Continuous Delivery / Continuous Deployment
(CD)
●
Focaliser sur la mise à disposition et le déploiement d'un ensemble de
changements métier sur un ou plusieurs environnements
SCM
Deployment Scripts
Configuration Data
Artifact
Repository
Binaries
Artifact
Repository
Test results
metadata
DEPLOY & TEST
Configure Environment
(Provisioning)
Deploy
Test
Validate
Orchestration et gestion d'un
ensemble d'étapes
OBJECTIF:
Livrer plus rapidement de petites itérations à l'utilisateur
(extension du CI)
9
Continuous Delivery et Fonctionnalités métiers
Flux constant de nouvelles fonctionnalités dans un environnement cible
Une livraison logicielle toujours prête à être utilisée par les
utilisateurs et contraintes uniquement par les besoins métiers
(non pas par les contraintes opérationnelles)
User
Equipe
Logicielle
10
Continuous Delivery
Exemple de Pipelining
START
TOMCAT
Provisining
Tomcat
ACCEPTANCE
TEST
VALIDATION
INJECT
TEST DATA
Constitution d'un workflow : ensemble d'étapes
Possibilité de paralléliser certaines étapes
Objectifs: Cartographie, Visibilité, Reprise sur erreur
Exemple de Pipeline du test d'une application Web sous Tomcat
PERFORMANCE
TEST
STOP
TOMCAT
EXPLORATING
TEST
Etape
Manuelle
11
Déploiement & Environnement Applicatif
TEST PRODUCTION
Automated Lifecycle
Automated
Provisioning
Plusieurs environnements possibles
Infrastructure Physique, Virtuelle ou Cloud
Chaque environnement doit être le plus proche de la production
(Gestion des configurations par environnement)
Le provisioning doit améliorer la fiabilité du déploiement
12
Configuration d'environnement
●
Configuration à la main
– Adapté à chaque besoin
– Mais problématique de passage à l'échelle
●
Duplication
– Notion d'environnement identique
– Gain de temps à partir du deuxième déploiement
– Problème de gestion des changements et de l'adaptation des
paramètres
●
Gestion Centrale
– Contrôle centralisé avec partage du savoir
– Notion de vérification des promesses
– Attention à la complexité de certaines opérations et prendre en compte
la montée en comnpétences des ops
13
Le mouvement DevOps
Culture
Automatisation
Mesure
Collaboration
14
S'engager dans le Continuous Delivery ?
Les questions à se poser (1/2)
●
Avez-vous pensé aux impacts organisationnels?
– Avez-vous une équipe dédiée pour ce besoin?
– Avez-vous inclus les équipes métier et marketing?
– Est-ce que vos produits peuvent être dans un état livrable après l'ajout
de fonctionnalités?
– Quel est le délai entre une livraison logicielle d'une fonctionnalité et
son usage par les utilisateurs?
– Qui est responsable du support en production?
●
En cas de problème en production, combien de temps faut-il pour revenir
à un état stable?
●
Avez-vous identifié le coût technique d'un “déploiement push button”
depuis une version pour un environnement ciblé?
15
S'engager dans le Continuous Delivery ?
Les questions à se poser (2/2)
●
D'où viennent les initiatives du Continuous Delivery?
– Développeurs, QA/Testeurs, Métier, Managers, Ops, Autres
●
Quel est votre niveau de maturité sur les outils de développement et
d'intégration et vos équipes?
– Outil de gestion de configuration logicielle (Git, Svn, etc)
– Outil d'issue tracking (Jira, Mantis, Bugzilla, etc)
– Serveur d'intégration continue (Jenkins, etc)
– Système de gestion d'artefacts (Nexus, Artifactory, etc)
– Système de monitoring (Nagios, Nunin etc)
– Gestion de configuration d'infrastructure (CFEngine, Puppet, etc)
– Est-ce que tous vos changements (Environnement, Infrastructure,
définition de système) sont dans un système de contrôle de version?
16
Plan
1) Problématique et enjeux de la construction logicielle, de l’intégration continue et du
continuous delivery
2) Focus sur les outils de build dans le monde Java et les outils de l’intégration continue
– Présentation des différents outils et critères de choix
– Serveur d'intégration continue Jenkins et Repository manager, etc
– Le mécanisme de livraison logicielle et déclination avec Maven et Gradle
– Workshop : Faire une release avec Git/Maven/Jenkins
3) Le déploiement applicatif
– Problématiques et enjeux
– Présentation des principaux outils du marché : avantages, inconvénients
– Workshop avec le produit Thoughtworks GO
17
L'étape du build
dans la livraison logicielle
PackageBinariesSource
Unit Test
Analysis
Model
DEPLOY
INSTALL
LIVRAISON
TEST
VALIDATION
Build
Generate
Packaging
Quality
BUILD
UNIT TEST
18
Java Build Tools
19
Java Build Tools – Critères de choix
1) Le besoin réel des équipes projet
– Portée du processus (Build, Packaging, Déploiement, etc)
– Intégration dans les IDE
– Connaissance et apprentissage
– Communauté et évolution
2) Personnalisation des comportements d'intégration
– Flexibilité de paramétrage (Filtre de propriétés, etc)
– Gestion de dépendances
– Ajout de comportements (listener/hooks, etc)
– Modification d'extensions existantes
20
ANT in Action
<project name="MyProject" basedir=".">
<description>simple example build file</description>
<property name="src" location="src"/>
<property name="build" location="build"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init" description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
</project>
21
Apache Maven in Action
<project>
<groupId>com.zenika</groupId>
<artifactId>maven-versionresolver</artifactId>
<version>1.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven-versionresolver</name>
<description>Maven Version Resolver</description>
<scm />
<developers />
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>${mongo-java-driver.version}</version>
</dependency>
</dependencies>
</project>
→Un outil de build (builder)
→Un système de gestion
de dépendances
→Une métadonnée d'usage
22
Gradle in Action
subprojects {
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
repositories {
mavenCentral()
maven {
url "http://dl.bintray.com/synchrotron-soleil-ica/ci-artifacts"
}
}
}
project(':libmongo-pomgenerator') {
dependencies {
compile project(':libmongo-domainobjects')
compile project(':libmongo-utilities')
compile "org.slf4j:slf4j-log4j12:1.7.5"
compile "org.slf4j:jul-to-slf4j:1.7.5"
}
}
23
Choix des outils de build
BuildTools Avantages Inconvénients
→ Très grande flexibilité (Très bas
niveau et donc facilité d'intégration)
→ Très performant
→ Flexibilité de définition et de
résolution de dépendances avec Ivy
→ Très bonnes intégration de ANT
dans les IDE
→ A cheval entre script et description
de langage
→ Verbeux
→ Glue d'intégration entre ANT et Ivy
à faire manuellement
→ Une approche Convention over
Configuration
→ Sa simplicité d'usage pour des
projets standards Java et JEE
→ Son adoption en masse et comme
standard de métadonnée pour les
repository de librairies OSS
→ Son manque d'approche “brique
Lego”
→ Mélange des informations de
projet et des informations de build
→ Non distinction entre descripteur
de build et descripteur d'utilisation
→ Langage de build (API de build)
→ Les conventions de Maven et à la
demande
→ Délégation aux tâches ANT
→ Peut compléter une infra Ant/Ivy et
Maven
→ DSL Groovy (Discutable)
→ Axe d'amélioration dans
l'intégration dans les IDE
24
Packaging de l'application
●
Utiliser un format de package standard
– “OS Native Package” : RPM, DEB, MSI, etc
– Format Zip : ZIP, TAR, etc
●
Intégration des différents composants binaires et des resources pou
son environnement cible
●
Il doit être possible de surcharger les fichiers de configuration par
défaut
25
Serveur d'intégration continue
& Jenkins
●
Fonctionnalités majeures
– Surveillance de l'environnement d'infrastructure pour
déclencher un build (polling & trigger)
– Préparation de l'environnement de build
– Lancer les commandes d'exécution
– Mettre à disposition un ensemble de rapports
●
Jenkins
– Devenu le standard de facto
– > 800 plugins
26
Artifact Repository Manager
●
Fonctionnalités majeures
– Stockage des binaires (mécanisme de sépération de repository)
– Proxy vers des repository public
– Fonctionnalité de recherche
– Tâches d'administration (purge, etc)
●
De nombreux outils
– 3 principaux
– Majoritairement Maven-centric
(au moins initialement orienté Metadata Maven)
27
Release Maven
●
Le plugin maven-release plugin
– Bonnes pratiques et mise à jour du gestionnaire de sources via le
plugin scm
●
En deux étapes via les goals :
– release:prepare
– release:perform
●
Possibilité de s'arrêter à une phase du cycle de construction via l'option
“goals”
●
Intégration avec jenkins via le plugin M2Release
●
Release impossible si un plugin ou une dépendance utilisé(e) est en
version SNAPSHOT
28
Release Maven in Action
<build>
<plugins>
...
<plugin>
<artifactId>maven-release-plugin</artifactId>
</plugin>
...
</plugins>
</build>
mvn release:prepare release:perform -Dgoals=install -B
29
Release Gradle
●
Il existe plusieurs façons pour réaliser une release Gradle
– À partir de plugins tels que “gradle-release”
●
Fonctionnement similaire à “maven release”
●
Détection automatique du SCM utilisé
●
Possibilité d'utiliser des dépendances en snapshot
– À partir de scripts gradle
●
Créer ses propres “task” de release
– Task de vérification des versions des dépendances
Example : pas de dépendance en snapshot
●
Utilisation du plugin maven pour déployer l'artifact
●
Intégration avec Jenkins via le plugin gradle
30
Release Gradle in Action
apply from: "https://launchpad.net/gradle-release/trunk/1.0/+download/apply.groovy"
subprojects {
apply plugin: 'java'
...
Version = '1.0'
release {
project.setProperty("gradle.release.useAutomaticVersion", "true");
}
–---------------------------------------------------------------------------------------------------------------------------
apply plugin: 'release'
buildscript {
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/groups/public"}
}
dependencies {
classpath 'com.github.townsfolk:gradle-release:1.2'
}
}
31
TRAVAUX
PRATIQUES
32
Plan
1) Problématique et enjeux de la construction logicielle, de l’intégration continue et du
continuous delivery
2) Focus sur les outils de build dans le monde Java et les outils de l’intégration continue
– Présentation des différents outils et critères de choix
– Serveur d'intégration continue Jenkins et Repository manager, etc
– Le mécanisme de livraison logicielle et déclination avec Maven et Gradle
– Workshop : Faire une release avec Git/Maven/Jenkins
3) Le déploiement applicatif
– Problématiques et enjeux
– Présentation des principaux outils du marché : avantages, inconvénients
– Workshop avec le produit Thoughtworks GO
33
PAUSE
34
Le besoin d'un outil
pour le déploiement applicatif
●
Eviter les sources d'erreurs de déploiement manuel
●
Réduire les éléments chronophage
●
Assure la conformité de l'environnement cible suite aux prérequis
●
Besoin de scalabilité
●
Traçabilité totale des processus
●
Cartographie de l'état des applications dans les différents environnements et de
l'avancement des processus
35
Les différents outils d'orchestration
et de déploiement
●
Outils orientés “Déploiement applicatif”
– Octopus Deploy
https://octopusdeploy.com
– XLDeploy
http://www.xebialabs.com/products/xl-deploy
●
Outils orientés “Orchestration”
– Jenkins et son ensemble de plugins (solution artisanale)
– BuildMaster
http://inedo.com/buildmaster
– MaestroDev
http://www.maestrodev.com
– Go ThoughtWorks http://www.thoughtworks.com/products/go-continuous-delivery
●
D'autres outils (non testés)
– LiveRebel - http://zeroturnaround.com/software/liverebel/
– CA Lisa Release Automation -http://www.ca.com/us/products/detail/ca-lisa-release-automation.aspx
– Electric Cloud Delivery Solution - http://www.electric-cloud.com/solutions/continuous-delivery.php
– RapidDeploy - http://www.midvision.com/products/rapiddeploy/
– etc
36
Octopus
●
Déploiement automatique pour .NET
●
Déploiement focus
– Pas uniquement pipeline
●
Notion de projet/processus et d'étapes (step)
●
Notion avancée dans la gestion d'environnements
●
Cible NuGet feed
●
Propose une solution de packaging enrichi (OctoPack)
●
Démonstration en ligne : https://demo.octopusdeploy.com/
●
Une boite noire efficace mais intrusive
37
Octopus en images
38
XLDeploy
●
Déploiement focus (Possibilité de pipeline)
●
Implémentation du UDM
●
Gestion automatisée du SQL
●
Multi-platforme
●
Gère la configuration par des dictionnaires
●
Utilise un format de package propriétaire (.dar)
●
Fait un différentiel pour optimiser le déploiement
●
CLI & GUI
●
Retour des logs au serveur
●
Outil “intelligent” qui impose ses méthodes
39
XLDeploy en image
40
Jenkins et son écosystème de plugins
> Build Pipeline Plugin
41
Jenkins et son écosystème de plugins
> Delivery Pipeline Plugin
43
MaestroDev
●
Pardes experts Maven
●
Vocabulaire : projet, composition, tâche
●
Intégration avec de nombreux outils
●
Propose une bibliothèques de tâches
●
Sortie console
●
Mécanisme de plugins
●
Console centralisée pour lancer les différents outils nécessaires aux
process
44
MaestroDev en Image
45
Go
●
Produit édité par Thougthworks
●
Origine CruiseControl
●
Bientôt en OSS (Apache v2.0)
●
Agnostique aux outils
●
Vocabulaire: Pipeline, Stage, Job et Tâche
●
Définition d'environnement et de materials
●
Tout est configuration XML
●
Notion de templates
●
Intégration avec les différents bug trackers
●
Gestion de configuration sous Git
●
Mécanisme de plugins
●
Un orchestrateur proposant un canevas afin de forcer les bonnes pratiques
46
GO / Images
47
Les problèmes des produits actuels
●
De nombreux outils de déploiement et de release automation
– Peu d'OSS
– Souvent inadaptés ou peu extensibles
●
“Builder”
– Aucune gestion de libellés en dehors du pattern de version
– Non séparation entre les données de build et de gestion de projets
– Non distinction entre descripteur de build et descripteur de consommation
●
“Artifact Repository Manager”
– Pas de stockage agnostique au métadonnées des builders (Maven, Ivy, NuGet, RPM, etc)
●
“Release and Deployment Automation”
– Pas de brique d'intégration avec les outils actuels mais un outil de plus (ne facilite pas la
collaboration entre les équipes)
48
Notre vision
●
Le besoin d'une plateforme collaborative d'outils et de processus
– Simple d'usage
– Extensible (à base de points d'extension)
– Mécanisme de cartographie, de visibilité et de feedback
●
Avoir des outils de livraison (au sens de déploiement) non intrusifs
– Par exemple: mise à jour des BD doit rester hautement maîtrisée
●
Pouvoir maîtriser avec finesse les rollbacks et les livraisons incrémentales
●
Intégration et ajout de fonctionnalités aux outils existants (Builders, DM, CI Servers) pour les nouveaux
besoins
– Release management
– Provisioning automation
– Deployment automation
– Project management & Workflows
49
Pragmatic Continuous Delivery Tooling Kit
Derived
Object
Repository
API
Release ManagementDependency Manager
Build Automation
CI
Maven Ivy Custom ... Jenkins ...
Provising Automation
CFEngine ...
Deployment
Automation
Pipelining & UI
UI Building CLI
Notification
Mechanisms
Template
Engine
...
Binaries Metadata
Workflow
Dev Ops
50
Travaux Pratiques
avec GO

Contenu connexe

Tendances

L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013Stephane Manciot
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOpsJeoffrey Bauvin
 
DODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusDODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusMartin Deslongchamps
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
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 ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?Membré Guillaume
 
Intégration continue
Intégration continueIntégration continue
Intégration continueJohan Moreau
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
 
CloudExpo Europe 2017 - DevOps entre client et fournisseur
CloudExpo Europe 2017 - DevOps entre client et fournisseurCloudExpo Europe 2017 - DevOps entre client et fournisseur
CloudExpo Europe 2017 - DevOps entre client et fournisseurLudovic Piot
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Cédric Leblond
 
Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Jasmine Conseil
 

Tendances (20)

L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOps
 
DODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusDODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez Croesus
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
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 ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
SDN OpenDaylight
SDN OpenDaylightSDN OpenDaylight
SDN OpenDaylight
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
CloudExpo Europe 2017 - DevOps entre client et fournisseur
CloudExpo Europe 2017 - DevOps entre client et fournisseurCloudExpo Europe 2017 - DevOps entre client et fournisseur
CloudExpo Europe 2017 - DevOps entre client et fournisseur
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 
Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017
 

En vedette

Il était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticIl était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticJoris Calabrese
 
The missing piece : when Docker networking and services finally unleashes so...
 The missing piece : when Docker networking and services finally unleashes so... The missing piece : when Docker networking and services finally unleashes so...
The missing piece : when Docker networking and services finally unleashes so...Adrien Blind
 
Azure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAzure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAymeric Weinbach
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesAdrien Siffermann
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continueAymeric Weinbach
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery DistilledMatt Callanan
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Deploying and Scaling a Rails Application with Docker and Friends
Deploying and Scaling a Rails Application with Docker and FriendsDeploying and Scaling a Rails Application with Docker and Friends
Deploying and Scaling a Rails Application with Docker and FriendsInvisiblelines
 
Continuous Deployment with Bamboo and Deployit
Continuous Deployment with Bamboo and DeployitContinuous Deployment with Bamboo and Deployit
Continuous Deployment with Bamboo and DeployitXebiaLabs
 
Ideal Deployment In .NET World
Ideal Deployment In .NET WorldIdeal Deployment In .NET World
Ideal Deployment In .NET WorldDima Pasko
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
OPEX Week Europe 140316
OPEX Week Europe 140316OPEX Week Europe 140316
OPEX Week Europe 140316Zoe Gammie
 
The age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster managementThe age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster managementNicola Paolucci
 
Octo talk : docker multi-host networking
Octo talk : docker multi-host networking Octo talk : docker multi-host networking
Octo talk : docker multi-host networking Hervé Leclerc
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryMike McGarr
 
Docker Networking & Swarm Mode Introduction
Docker Networking & Swarm Mode IntroductionDocker Networking & Swarm Mode Introduction
Docker Networking & Swarm Mode IntroductionPhi Huynh
 
Docker Swarm Introduction
Docker Swarm IntroductionDocker Swarm Introduction
Docker Swarm Introductionrajdeep
 
Introction to docker swarm
Introction to docker swarmIntroction to docker swarm
Introction to docker swarmHsi-Kai Wang
 
Elassandra: Elasticsearch as a Cassandra Secondary Index (Rémi Trouville, Vin...
Elassandra: Elasticsearch as a Cassandra Secondary Index (Rémi Trouville, Vin...Elassandra: Elasticsearch as a Cassandra Secondary Index (Rémi Trouville, Vin...
Elassandra: Elasticsearch as a Cassandra Secondary Index (Rémi Trouville, Vin...DataStax
 

En vedette (20)

Il était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticIl était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez Meetic
 
The missing piece : when Docker networking and services finally unleashes so...
 The missing piece : when Docker networking and services finally unleashes so... The missing piece : when Docker networking and services finally unleashes so...
The missing piece : when Docker networking and services finally unleashes so...
 
Azure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAzure camp 26 septembre tips and tools
Azure camp 26 septembre tips and tools
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team Services
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continue
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Deploying and Scaling a Rails Application with Docker and Friends
Deploying and Scaling a Rails Application with Docker and FriendsDeploying and Scaling a Rails Application with Docker and Friends
Deploying and Scaling a Rails Application with Docker and Friends
 
Continuous Deployment with Bamboo and Deployit
Continuous Deployment with Bamboo and DeployitContinuous Deployment with Bamboo and Deployit
Continuous Deployment with Bamboo and Deployit
 
Ideal Deployment In .NET World
Ideal Deployment In .NET WorldIdeal Deployment In .NET World
Ideal Deployment In .NET World
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
OPEX Week Europe 140316
OPEX Week Europe 140316OPEX Week Europe 140316
OPEX Week Europe 140316
 
The age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster managementThe age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster management
 
Docker Datacenter - CaaS
Docker Datacenter - CaaSDocker Datacenter - CaaS
Docker Datacenter - CaaS
 
Octo talk : docker multi-host networking
Octo talk : docker multi-host networking Octo talk : docker multi-host networking
Octo talk : docker multi-host networking
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Docker Networking & Swarm Mode Introduction
Docker Networking & Swarm Mode IntroductionDocker Networking & Swarm Mode Introduction
Docker Networking & Swarm Mode Introduction
 
Docker Swarm Introduction
Docker Swarm IntroductionDocker Swarm Introduction
Docker Swarm Introduction
 
Introction to docker swarm
Introction to docker swarmIntroction to docker swarm
Introction to docker swarm
 
Elassandra: Elasticsearch as a Cassandra Secondary Index (Rémi Trouville, Vin...
Elassandra: Elasticsearch as a Cassandra Secondary Index (Rémi Trouville, Vin...Elassandra: Elasticsearch as a Cassandra Secondary Index (Rémi Trouville, Vin...
Elassandra: Elasticsearch as a Cassandra Secondary Index (Rémi Trouville, Vin...
 

Similaire à NightClazz Build Tools & Continuous Delivery

Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015Julien Vq
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...Sid Ahmed Benkraoua
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimLaurent Broudoux
 
Patterns Agiles avec Visual Studio 2012 et TFS 2012
Patterns Agiles avec Visual Studio 2012 et TFS 2012Patterns Agiles avec Visual Studio 2012 et TFS 2012
Patterns Agiles avec Visual Studio 2012 et TFS 2012Microsoft
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
RA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxRA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxtestuser715939
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Publicis Sapient Engineering
 
Formation devops par la pratique
Formation devops par la pratiqueFormation devops par la pratique
Formation devops par la pratiqueKhaled Ben Driss
 
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxPrésentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxZALIMAZA
 
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Samuel Metias
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptxLatifaBen6
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptxboulonvert
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Erradi Mohamed
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outilsAgile Tour 2009 Québec
 
Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)Laurent PY
 
Présentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxPrésentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxZALIMAZA
 

Similaire à NightClazz Build Tools & Continuous Delivery (20)

Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
 
Mohamed.marouan
Mohamed.marouanMohamed.marouan
Mohamed.marouan
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Patterns Agiles avec Visual Studio 2012 et TFS 2012
Patterns Agiles avec Visual Studio 2012 et TFS 2012Patterns Agiles avec Visual Studio 2012 et TFS 2012
Patterns Agiles avec Visual Studio 2012 et TFS 2012
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
RA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxRA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptx
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
 
Formation devops par la pratique
Formation devops par la pratiqueFormation devops par la pratique
Formation devops par la pratique
 
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxPrésentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptx
 
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptx
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)
 
Methodologie projet
Methodologie projet Methodologie projet
Methodologie projet
 
Présentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxPrésentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptx
 

Plus de Zenika

Datascience & IoT
Datascience & IoTDatascience & IoT
Datascience & IoTZenika
 
Matinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilitéMatinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilitéZenika
 
Agile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UXAgile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UXZenika
 
Agile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio DigitalAgile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio DigitalZenika
 
Agile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation AgileAgile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation AgileZenika
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalitéZenika
 
Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.Zenika
 
Matinale React
Matinale ReactMatinale React
Matinale ReactZenika
 
NigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et ZeppelinNigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et ZeppelinZenika
 
NightClazz Spark / Machine Learning
NightClazz Spark / Machine LearningNightClazz Spark / Machine Learning
NightClazz Spark / Machine LearningZenika
 
HTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréHTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréZenika
 
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...Zenika
 
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud VillenaveAgile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud VillenaveZenika
 
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleAgile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleZenika
 
Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?Zenika
 
Conference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieConference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieZenika
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte Zenika
 
Matinale DevOps / Docker
Matinale DevOps / DockerMatinale DevOps / Docker
Matinale DevOps / DockerZenika
 
NightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteNightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteZenika
 

Plus de Zenika (20)

Datascience & IoT
Datascience & IoTDatascience & IoT
Datascience & IoT
 
Matinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilitéMatinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilité
 
Agile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UXAgile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UX
 
Agile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio DigitalAgile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio Digital
 
Agile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation AgileAgile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation Agile
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.
 
Matinale React
Matinale ReactMatinale React
Matinale React
 
NigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et ZeppelinNigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
 
NightClazz Spark / Machine Learning
NightClazz Spark / Machine LearningNightClazz Spark / Machine Learning
NightClazz Spark / Machine Learning
 
HTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréHTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien Landuré
 
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
 
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud VillenaveAgile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
 
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleAgile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
 
Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?
 
Conference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieConference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partie
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
 
Matinale DevOps / Docker
Matinale DevOps / DockerMatinale DevOps / Docker
Matinale DevOps / Docker
 
NightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteNightClazz Java 8 Decouverte
NightClazz Java 8 Decouverte
 

NightClazz Build Tools & Continuous Delivery

  • 2. 2 Quelques mots sur nous ● Grégory Boissinot (@gboissinot) – Continuous Integration, Continuous Delivery and Jenkins Addict – Zenika Paris CTO ● Maxence Labusquière – Etudiant en dernière année à l'ESIEA – Stagiaire DevOps ● Khaled Souf – Consultant et Formateur Zenika – Grosse expérience en Intégration Continue ● Nassima Armouche – Consultante et Formatrice Zenika – Experte en Usine Logicielle ● Julien Aubin – Consultant Zenika – Sa dernière mission: DevOps
  • 3. 3 Le programme 1) Problématique et enjeux de la construction logicielle, de l’intégration continue et du continuous delivery 2) Focus sur les outils de build dans le monde Java et les outils de l’intégration continue – Présentation des différents outils et critères de choix – Serveur d'intégration continue Jenkins et Repository manager, etc – Le mécanisme de livraison logicielle puis déclination avec Maven et Gradle – Workshop : Faire une release avec Git & Maven 3) Le déploiement applicatif – Problématiques et enjeux – Présentation des principaux outils du marché : avantages, inconvénients – Workshop avec le produit Thoughtworks GO
  • 4. 4 Plan 1) Problématique et enjeux de la construction logicielle, de l’intégration continue et du continuous delivery 2) Focus sur les outils de build dans le monde Java et les outils de l’intégration continue – Présentation des différents outils et critères de choix – Serveur d'intégration continue Jenkins et Repository manager, etc – Le mécanisme de livraison logicielle et déclination avec Maven et Gradle – Workshop : Faire une release avec Git/Maven/Jenkins 3) Le déploiement applicatif – Problématiques et enjeux – Présentation des principaux outils du marché : avantages, inconvénients – Workshop avec le produit Thoughtworks GO
  • 5. 5 L'idéal : Livrer fréquemment Feedback Develop Test Deploy Monitor Cycle de livraison avec un retour rapide des utilisateurs Dev Ops → Réduction du Time-to- Market → Réduction du coût de correction des erreurs
  • 6. 6 La livraison logicielle (Release) ● Avoir un processus répétable et fiable pour la livraison logicielle – Automatiser un maximum d'éléments – Intervention humaine pour des fonctions à hautes valeurs ajoutés ● Test, validation et promotion (manuelle) DEPLOY INSTALL RELEASE BUILD UNIT TESTS TEST VALIDATION Processus identifié (traçabilité) et reproductible (fiabilité) Visibilité & Feedback Vérification Ensemble des étapes d'une livraison logicielle
  • 7. 7 Continuous Integration (CI) ● Méthodologie agile consistant à construire et à tester le logiciel à chaque changement de de code source SCM Source code Build scripts BUILD Compile Unit Tests Code analysis Assemble (package + installer) Artifact Repository Binaries Unit Test Reports BuildContext Metadata OBJECTIF: Garder le code source propre (clean) en détectant les erreurs de développement au plus tôt Créer une livraison logicielle éligible (release candidate)
  • 8. 8 Continuous Delivery / Continuous Deployment (CD) ● Focaliser sur la mise à disposition et le déploiement d'un ensemble de changements métier sur un ou plusieurs environnements SCM Deployment Scripts Configuration Data Artifact Repository Binaries Artifact Repository Test results metadata DEPLOY & TEST Configure Environment (Provisioning) Deploy Test Validate Orchestration et gestion d'un ensemble d'étapes OBJECTIF: Livrer plus rapidement de petites itérations à l'utilisateur (extension du CI)
  • 9. 9 Continuous Delivery et Fonctionnalités métiers Flux constant de nouvelles fonctionnalités dans un environnement cible Une livraison logicielle toujours prête à être utilisée par les utilisateurs et contraintes uniquement par les besoins métiers (non pas par les contraintes opérationnelles) User Equipe Logicielle
  • 10. 10 Continuous Delivery Exemple de Pipelining START TOMCAT Provisining Tomcat ACCEPTANCE TEST VALIDATION INJECT TEST DATA Constitution d'un workflow : ensemble d'étapes Possibilité de paralléliser certaines étapes Objectifs: Cartographie, Visibilité, Reprise sur erreur Exemple de Pipeline du test d'une application Web sous Tomcat PERFORMANCE TEST STOP TOMCAT EXPLORATING TEST Etape Manuelle
  • 11. 11 Déploiement & Environnement Applicatif TEST PRODUCTION Automated Lifecycle Automated Provisioning Plusieurs environnements possibles Infrastructure Physique, Virtuelle ou Cloud Chaque environnement doit être le plus proche de la production (Gestion des configurations par environnement) Le provisioning doit améliorer la fiabilité du déploiement
  • 12. 12 Configuration d'environnement ● Configuration à la main – Adapté à chaque besoin – Mais problématique de passage à l'échelle ● Duplication – Notion d'environnement identique – Gain de temps à partir du deuxième déploiement – Problème de gestion des changements et de l'adaptation des paramètres ● Gestion Centrale – Contrôle centralisé avec partage du savoir – Notion de vérification des promesses – Attention à la complexité de certaines opérations et prendre en compte la montée en comnpétences des ops
  • 14. 14 S'engager dans le Continuous Delivery ? Les questions à se poser (1/2) ● Avez-vous pensé aux impacts organisationnels? – Avez-vous une équipe dédiée pour ce besoin? – Avez-vous inclus les équipes métier et marketing? – Est-ce que vos produits peuvent être dans un état livrable après l'ajout de fonctionnalités? – Quel est le délai entre une livraison logicielle d'une fonctionnalité et son usage par les utilisateurs? – Qui est responsable du support en production? ● En cas de problème en production, combien de temps faut-il pour revenir à un état stable? ● Avez-vous identifié le coût technique d'un “déploiement push button” depuis une version pour un environnement ciblé?
  • 15. 15 S'engager dans le Continuous Delivery ? Les questions à se poser (2/2) ● D'où viennent les initiatives du Continuous Delivery? – Développeurs, QA/Testeurs, Métier, Managers, Ops, Autres ● Quel est votre niveau de maturité sur les outils de développement et d'intégration et vos équipes? – Outil de gestion de configuration logicielle (Git, Svn, etc) – Outil d'issue tracking (Jira, Mantis, Bugzilla, etc) – Serveur d'intégration continue (Jenkins, etc) – Système de gestion d'artefacts (Nexus, Artifactory, etc) – Système de monitoring (Nagios, Nunin etc) – Gestion de configuration d'infrastructure (CFEngine, Puppet, etc) – Est-ce que tous vos changements (Environnement, Infrastructure, définition de système) sont dans un système de contrôle de version?
  • 16. 16 Plan 1) Problématique et enjeux de la construction logicielle, de l’intégration continue et du continuous delivery 2) Focus sur les outils de build dans le monde Java et les outils de l’intégration continue – Présentation des différents outils et critères de choix – Serveur d'intégration continue Jenkins et Repository manager, etc – Le mécanisme de livraison logicielle et déclination avec Maven et Gradle – Workshop : Faire une release avec Git/Maven/Jenkins 3) Le déploiement applicatif – Problématiques et enjeux – Présentation des principaux outils du marché : avantages, inconvénients – Workshop avec le produit Thoughtworks GO
  • 17. 17 L'étape du build dans la livraison logicielle PackageBinariesSource Unit Test Analysis Model DEPLOY INSTALL LIVRAISON TEST VALIDATION Build Generate Packaging Quality BUILD UNIT TEST
  • 19. 19 Java Build Tools – Critères de choix 1) Le besoin réel des équipes projet – Portée du processus (Build, Packaging, Déploiement, etc) – Intégration dans les IDE – Connaissance et apprentissage – Communauté et évolution 2) Personnalisation des comportements d'intégration – Flexibilité de paramétrage (Filtre de propriétés, etc) – Gestion de dépendances – Ajout de comportements (listener/hooks, etc) – Modification d'extensions existantes
  • 20. 20 ANT in Action <project name="MyProject" basedir="."> <description>simple example build file</description> <property name="src" location="src"/> <property name="build" location="build"/> <target name="init"> <!-- Create the time stamp --> <tstamp/> <!-- Create the build directory structure used by compile --> <mkdir dir="${build}"/> </target> <target name="compile" depends="init" description="compile the source " > <!-- Compile the java code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target> </project>
  • 21. 21 Apache Maven in Action <project> <groupId>com.zenika</groupId> <artifactId>maven-versionresolver</artifactId> <version>1.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>maven-versionresolver</name> <description>Maven Version Resolver</description> <scm /> <developers /> <dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>${mongo-java-driver.version}</version> </dependency> </dependencies> </project> →Un outil de build (builder) →Un système de gestion de dépendances →Une métadonnée d'usage
  • 22. 22 Gradle in Action subprojects { apply plugin: 'java' sourceCompatibility = 1.7 targetCompatibility = 1.7 repositories { mavenCentral() maven { url "http://dl.bintray.com/synchrotron-soleil-ica/ci-artifacts" } } } project(':libmongo-pomgenerator') { dependencies { compile project(':libmongo-domainobjects') compile project(':libmongo-utilities') compile "org.slf4j:slf4j-log4j12:1.7.5" compile "org.slf4j:jul-to-slf4j:1.7.5" } }
  • 23. 23 Choix des outils de build BuildTools Avantages Inconvénients → Très grande flexibilité (Très bas niveau et donc facilité d'intégration) → Très performant → Flexibilité de définition et de résolution de dépendances avec Ivy → Très bonnes intégration de ANT dans les IDE → A cheval entre script et description de langage → Verbeux → Glue d'intégration entre ANT et Ivy à faire manuellement → Une approche Convention over Configuration → Sa simplicité d'usage pour des projets standards Java et JEE → Son adoption en masse et comme standard de métadonnée pour les repository de librairies OSS → Son manque d'approche “brique Lego” → Mélange des informations de projet et des informations de build → Non distinction entre descripteur de build et descripteur d'utilisation → Langage de build (API de build) → Les conventions de Maven et à la demande → Délégation aux tâches ANT → Peut compléter une infra Ant/Ivy et Maven → DSL Groovy (Discutable) → Axe d'amélioration dans l'intégration dans les IDE
  • 24. 24 Packaging de l'application ● Utiliser un format de package standard – “OS Native Package” : RPM, DEB, MSI, etc – Format Zip : ZIP, TAR, etc ● Intégration des différents composants binaires et des resources pou son environnement cible ● Il doit être possible de surcharger les fichiers de configuration par défaut
  • 25. 25 Serveur d'intégration continue & Jenkins ● Fonctionnalités majeures – Surveillance de l'environnement d'infrastructure pour déclencher un build (polling & trigger) – Préparation de l'environnement de build – Lancer les commandes d'exécution – Mettre à disposition un ensemble de rapports ● Jenkins – Devenu le standard de facto – > 800 plugins
  • 26. 26 Artifact Repository Manager ● Fonctionnalités majeures – Stockage des binaires (mécanisme de sépération de repository) – Proxy vers des repository public – Fonctionnalité de recherche – Tâches d'administration (purge, etc) ● De nombreux outils – 3 principaux – Majoritairement Maven-centric (au moins initialement orienté Metadata Maven)
  • 27. 27 Release Maven ● Le plugin maven-release plugin – Bonnes pratiques et mise à jour du gestionnaire de sources via le plugin scm ● En deux étapes via les goals : – release:prepare – release:perform ● Possibilité de s'arrêter à une phase du cycle de construction via l'option “goals” ● Intégration avec jenkins via le plugin M2Release ● Release impossible si un plugin ou une dépendance utilisé(e) est en version SNAPSHOT
  • 28. 28 Release Maven in Action <build> <plugins> ... <plugin> <artifactId>maven-release-plugin</artifactId> </plugin> ... </plugins> </build> mvn release:prepare release:perform -Dgoals=install -B
  • 29. 29 Release Gradle ● Il existe plusieurs façons pour réaliser une release Gradle – À partir de plugins tels que “gradle-release” ● Fonctionnement similaire à “maven release” ● Détection automatique du SCM utilisé ● Possibilité d'utiliser des dépendances en snapshot – À partir de scripts gradle ● Créer ses propres “task” de release – Task de vérification des versions des dépendances Example : pas de dépendance en snapshot ● Utilisation du plugin maven pour déployer l'artifact ● Intégration avec Jenkins via le plugin gradle
  • 30. 30 Release Gradle in Action apply from: "https://launchpad.net/gradle-release/trunk/1.0/+download/apply.groovy" subprojects { apply plugin: 'java' ... Version = '1.0' release { project.setProperty("gradle.release.useAutomaticVersion", "true"); } –--------------------------------------------------------------------------------------------------------------------------- apply plugin: 'release' buildscript { repositories { mavenCentral() maven { url "https://oss.sonatype.org/content/groups/public"} } dependencies { classpath 'com.github.townsfolk:gradle-release:1.2' } }
  • 32. 32 Plan 1) Problématique et enjeux de la construction logicielle, de l’intégration continue et du continuous delivery 2) Focus sur les outils de build dans le monde Java et les outils de l’intégration continue – Présentation des différents outils et critères de choix – Serveur d'intégration continue Jenkins et Repository manager, etc – Le mécanisme de livraison logicielle et déclination avec Maven et Gradle – Workshop : Faire une release avec Git/Maven/Jenkins 3) Le déploiement applicatif – Problématiques et enjeux – Présentation des principaux outils du marché : avantages, inconvénients – Workshop avec le produit Thoughtworks GO
  • 34. 34 Le besoin d'un outil pour le déploiement applicatif ● Eviter les sources d'erreurs de déploiement manuel ● Réduire les éléments chronophage ● Assure la conformité de l'environnement cible suite aux prérequis ● Besoin de scalabilité ● Traçabilité totale des processus ● Cartographie de l'état des applications dans les différents environnements et de l'avancement des processus
  • 35. 35 Les différents outils d'orchestration et de déploiement ● Outils orientés “Déploiement applicatif” – Octopus Deploy https://octopusdeploy.com – XLDeploy http://www.xebialabs.com/products/xl-deploy ● Outils orientés “Orchestration” – Jenkins et son ensemble de plugins (solution artisanale) – BuildMaster http://inedo.com/buildmaster – MaestroDev http://www.maestrodev.com – Go ThoughtWorks http://www.thoughtworks.com/products/go-continuous-delivery ● D'autres outils (non testés) – LiveRebel - http://zeroturnaround.com/software/liverebel/ – CA Lisa Release Automation -http://www.ca.com/us/products/detail/ca-lisa-release-automation.aspx – Electric Cloud Delivery Solution - http://www.electric-cloud.com/solutions/continuous-delivery.php – RapidDeploy - http://www.midvision.com/products/rapiddeploy/ – etc
  • 36. 36 Octopus ● Déploiement automatique pour .NET ● Déploiement focus – Pas uniquement pipeline ● Notion de projet/processus et d'étapes (step) ● Notion avancée dans la gestion d'environnements ● Cible NuGet feed ● Propose une solution de packaging enrichi (OctoPack) ● Démonstration en ligne : https://demo.octopusdeploy.com/ ● Une boite noire efficace mais intrusive
  • 38. 38 XLDeploy ● Déploiement focus (Possibilité de pipeline) ● Implémentation du UDM ● Gestion automatisée du SQL ● Multi-platforme ● Gère la configuration par des dictionnaires ● Utilise un format de package propriétaire (.dar) ● Fait un différentiel pour optimiser le déploiement ● CLI & GUI ● Retour des logs au serveur ● Outil “intelligent” qui impose ses méthodes
  • 40. 40 Jenkins et son écosystème de plugins > Build Pipeline Plugin
  • 41. 41 Jenkins et son écosystème de plugins > Delivery Pipeline Plugin
  • 42. 43 MaestroDev ● Pardes experts Maven ● Vocabulaire : projet, composition, tâche ● Intégration avec de nombreux outils ● Propose une bibliothèques de tâches ● Sortie console ● Mécanisme de plugins ● Console centralisée pour lancer les différents outils nécessaires aux process
  • 44. 45 Go ● Produit édité par Thougthworks ● Origine CruiseControl ● Bientôt en OSS (Apache v2.0) ● Agnostique aux outils ● Vocabulaire: Pipeline, Stage, Job et Tâche ● Définition d'environnement et de materials ● Tout est configuration XML ● Notion de templates ● Intégration avec les différents bug trackers ● Gestion de configuration sous Git ● Mécanisme de plugins ● Un orchestrateur proposant un canevas afin de forcer les bonnes pratiques
  • 46. 47 Les problèmes des produits actuels ● De nombreux outils de déploiement et de release automation – Peu d'OSS – Souvent inadaptés ou peu extensibles ● “Builder” – Aucune gestion de libellés en dehors du pattern de version – Non séparation entre les données de build et de gestion de projets – Non distinction entre descripteur de build et descripteur de consommation ● “Artifact Repository Manager” – Pas de stockage agnostique au métadonnées des builders (Maven, Ivy, NuGet, RPM, etc) ● “Release and Deployment Automation” – Pas de brique d'intégration avec les outils actuels mais un outil de plus (ne facilite pas la collaboration entre les équipes)
  • 47. 48 Notre vision ● Le besoin d'une plateforme collaborative d'outils et de processus – Simple d'usage – Extensible (à base de points d'extension) – Mécanisme de cartographie, de visibilité et de feedback ● Avoir des outils de livraison (au sens de déploiement) non intrusifs – Par exemple: mise à jour des BD doit rester hautement maîtrisée ● Pouvoir maîtriser avec finesse les rollbacks et les livraisons incrémentales ● Intégration et ajout de fonctionnalités aux outils existants (Builders, DM, CI Servers) pour les nouveaux besoins – Release management – Provisioning automation – Deployment automation – Project management & Workflows
  • 48. 49 Pragmatic Continuous Delivery Tooling Kit Derived Object Repository API Release ManagementDependency Manager Build Automation CI Maven Ivy Custom ... Jenkins ... Provising Automation CFEngine ... Deployment Automation Pipelining & UI UI Building CLI Notification Mechanisms Template Engine ... Binaries Metadata Workflow Dev Ops