[devfest nantes 2016] les pipelines jenkins dans la vraie vie

78
Les Pipelines Jenkins dans la vraie vie Jean-Philippe Briend

Upload: jean-philippe-briend

Post on 22-Jan-2017

110 views

Category:

Software


0 download

TRANSCRIPT

Page 1: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Les Pipelines Jenkinsdans la vraie vie

Jean-Philippe Briend

Page 2: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

About me

Jean-Philippe Briend

@jpbriend Java expert,Pèlerin DevOps,Automation addict

DevOps,

Continuous Delivery,

Software Craftmanship

[email protected]

Page 3: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

About CloudBees

We are

The hub of Enterprise Jenkins and DevOps

We deliver

Smarter solutions for accelerating software development and delivery

We make a difference

We are the leader in Continuous Delivery for DevOps

Why this is important

You can focus on coming up with great ideas, we take care of the mundane tasks.

Page 4: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Développeur ?

Exploitation ?

Testeur ?

Chef de projet ?

Vous

Page 5: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Faites de l’Intégration Continue ?

Vous voulez faire du déploiement automatisé ?

Avez un pipeline end-to-end ?

Avez un composant unique ?

Avez un plat de spaghettis de composants à livrer ?

Vous

Page 6: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Qui ?

Pour jouer ?

Utilisé dans la vraie vie ?

Jenkins 2 et Pipeline

Page 7: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Personne n’est parfait !

Bonne nouvelle !

Page 8: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Qui utilise Jenkins ?

Page 9: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Comment livrer plus rapidement du meilleur code ?

ProdDev

Page 10: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Un processus • qui s’assure de la qualité• s’exécute de façon fiable• produit de la valeur rapidement

Il nous faut

Page 11: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

pour automatiser

Il nous faut

Page 12: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

un pipeline

Il nous faut

Page 13: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Un pipeline linéaire typique

Page 14: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Les jobs Jenkins Pipeline !

Page 15: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Type de job Pipeline

Page 16: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 17: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Progression et historique

Page 18: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

“Ce qui est bien mais pas top”

Page 19: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Pipeline optimisé

Page 20: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 21: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Pipeline Stage View

Page 22: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

On a fini ?

Page 23: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Commit

Page 24: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Lancer le process

Page 25: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Vérifier la qualité

Page 26: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

et releaser !!!

Page 27: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

attends attends attends…

Page 28: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Composant unique

Page 29: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

ou microservice

Page 30: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Les tests sont complets

C’est releasable de façon indépendante

Ne casse pas la compatibilité ascendante

Uniquement valable si

Page 31: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Un système est composé d’une multitude d’applications/composants

Sauf que

Page 32: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

ayant des dépendances

Page 33: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Les nouvelles fonctionnalitésfournies par de nouvelles interfacesnécessitent des versions minimum

Page 34: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Tests de chaine ?

Quid des tests de performance ou tests fonctionnels ?

Mais aussi

Page 35: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Et les cas des systems embarqués ?

Il faut fournir une image complète contenant tous les composants

Page 36: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

???

Page 37: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Assembly build

Page 38: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Release pipeline

Page 39: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Release Pipeline

Page 40: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 41: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Encore une étape manuelle ???

Page 42: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Quelle version ?

Mauvais build = régression

Page 43: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Et si on utilisait un trigger automatique depuis le job amont ?

Page 44: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Utilisez la commande build

Page 45: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 46: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Mais il nous faut le numéro de build de

chaque composant

Page 47: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

On pourrait trouver qqchose dans

Jenkins…

Page 48: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Inspecter la version déployée ?

Page 49: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 50: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

n. cargo-list for use of Customs officers; list of passengers in aircraft or of trucks etc. in goods train

Oxford English Dictionary

Manifest

Page 51: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 52: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Que met-on dans un manifest ?la liste des composants et leur version

#Tue Mar 01 23:11:41 GMT 2016mobile-deposit-api=1.0.0-21mobile-deposit-ui=1.0.0-4

Page 53: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Read / Write manifest ?

Page 54: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 55: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Où stocker ce manifest ?

Page 56: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Jenkins Build workspace ?SCM ?Jenkins Build artifact ?External file system ?Artifact repository ?

Page 57: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 58: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Fini ?

Page 59: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 60: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Jenkins sait mettre les jobs en attente

Gestion de la concurrence des stages Pipeline

La Concurrency Rule saute les builds

Page 61: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Ca va marcher avec les SCMs

Utiliser les builds paramétrés

Etapes supplémentaires ?

Page 62: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Mise à jour du manifest asynchrone par rapport au build

de Release

Page 63: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

63

Page 64: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

manifest-update

Page 65: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 66: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

release-build

Page 67: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Exécuter le déploiement

Page 68: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 69: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Tout redéployer ?

Comparer à ce qui tourne

Page 70: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 71: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Comparer au manifest

Page 72: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 73: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

manifest

updates

Page 74: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Demo

Page 75: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Page 76: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie

Pipelines ≠ linéaires

Assembler de multiples composants

Pattern fan-in

Déclencher des jobs downstream

Suivre avec des manifests

Page 78: [DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie