snowcamp io grenoble 2017 - bâtissons ensemble un pipeline avec jenkins et docker

Post on 06-Apr-2017

191 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SnowCampIO2017:BâtissonsensembleunpipelineavecJenkinsetDocker

Whoami:DamienDUPORTAL

TrainingEngineer@CloudBeesdepuis1an6ansàAtosWorldline:Production,Dev,Training,etc.IntervenantponctuelàEPSI,ENSG,CNAMDockermentor,depuisv0.3Grimpeur

Contact:Mail/Hangouts:damien.duportal@gmail.comProfessionel:dduportal@cloudbees.comGithub:dduportalTwitter:@DamienDuportal

Whoareyou?

Agenda:1. Jenkins2,quoideneuf?2. Démo:Unpetittourdupropriétaire3. Débutonsaveclespipelines4. VousavezditDocker?5. JenkinsetDockerensemble6. Futur:BlueOceanetDeclarativePipelines

CodeetLabdisponiblesici:https://github.com/dduportal/snowcampio-2017

DISCLAIMER

Jenkins2,quoideneuf?

Jenkins2,quoideneuf?PourquoiJenkins2?

PourquoiJenkins2?Jenkins1a(vait)+10ans

1.658:acegi-security:1.0.7—Avril2008spring-core:2.5.6—Octobre2008

Parcequel’inte ́grationcontinueae ́volue ́

jenkins-ci.org!?

slave➞agent

"Fireandforget"

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

ObjectifsMessage:CI->CD

CD=ContinuousDelivery

Transitiondouce:PasderuptureavecJenkins1

Monte ́edeversionsimpleTouslespluginsrestentcompatible(~)

Expériencepremièreutilisation

Pipeline-as-Codeenpremièreligne

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Assistant

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Assistant

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Assistant

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Assistant

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Assistant

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline-as-Code

Pipeline-as-CodeLedépôtcodecommeseulsourcedevérité

FichierJenkinsfileaveclecodesourceC'estledévelopeurquispécifiecommentconstruiresonapplication

UnmondedeDevOps:Jenkinsnedevientpas"openbar"

Pensezàvosadmins!

Typedejobsdédiés:

PipelineMultibranchOrganisations(Github/BitBucket)

"Citoyende1èreclasse":lefuturdeJenkinsestcentrésurlesPipelines

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline

*.jenkins.io

*.jenkins.io

https://jenkins.io

ModerneCollaboratifDocumentationettutoriels

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline

*.jenkins.io

*.jenkins.ioAvez-vousdéjàessayédechercherunplugin?...unedocumentationdeplugin?

Toutnouveau,toutbeau:

https://plugins.jenkins.io

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline

*.jenkins.io

Futur:BackendStorage

Futur:BackendStorage

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline

*.jenkins.io

Futur:BackendStorage

Futur:BlueOcean

Futur:BlueOcean

https://jenkins.io/projects/blueocean/

Repenserl'expérienceutilisateurdeJenkinsNouvelleIHMécriteenReactJSConçupourlesPipelines(compatibleFreestyle)

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline

*.jenkins.io

Futur:BackendStorage

Futur:BlueOcean

Futur:BlueOcean

VisualisersonPipelineEtapes,logs,métriques,statut

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline

*.jenkins.io

Futur:BackendStorage

Futur:BlueOcean

Futur:BlueOcean

IdentifierimmédiatementlesproblèmesRetourd'informationrapide

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline

*.jenkins.io

Futur:BackendStorage

Futur:BlueOcean

Futur:BlueOcean

Personnalisationdesoninterface

Jenkins2,quoideneuf?PourquoiJenkins2?

Objectifs

Assistant

Pipeline

*.jenkins.io

Futur:BackendStorage

Futur:BlueOcean

Futur:BlueOcean

Gestionnativedesbranches,pull-requestsCompatibleGithubetBitbucketAPIs(feedbacks)

Démo:Unpetittourdupropriétaire

Tourdupropriétaire

GameOfLife

GameOfLifeCodeoriginal:https://github.com/wakaleo/game-of-life

Implémentationwebdu"JeudelaViedeJ.H.Conway"

Jeu"zérojoueur"

Ondéfinil'étatinitialdelagrilledecellulePuisonlanceetonobserve

Règles:

Unecellulemortepossédantexactementtroisvoisinesvivantesdevientvivante.Unecellulevivantepossédantdeuxoutroisvoisinesvivanteslereste,sinonellemeurt.

Tourdupropriétaire

GameOfLife

Maven&Java

Maven&JavaApplicationécriteenJava

CompatibleJDK7et8

Cycledeviedel'applicationgéréparMaven

Descriptionduprojetavecunfichierpom.xmlGestiondesdépendancesStockagedansledépôt${HOME}/.m2/repositoryLignedecommandepourexécuterdes"goals"Orientéconvention:dossiertarget

AvecunJDK8etMaven3.3.9dansvotrePATH:

Nettoyerleprojet:mvncleanCompilerleprojet:mvncompileTestsunitaires:mvntestTestsd'intégration:mvnverifyEmpaqueterl'application:mvnpackageInstallerlespaquetsdansledépôtlocal:mvninstall

ActionTime-clickme

Tourdupropriétaire

GameOfLife

Maven&Java

RunIt

RunItSous-projetgameoflife-web

Artefactgénéré:unfichier.war

Nécessiteunserveurd'application(Tomcat,JBoss,Jetty)

LancementavecMaven:

mvn-plgameoflife-webjetty:run

Accessiblesurhttp://localhost:9090

ActionTime-clickme

Tourdupropriétaire

GameOfLife

Maven&Java

RunIt

JenkinsIt

JenkinsItJenkinspréconfiguré:https://github.com/dduportal/snowcampio-2017

Jenkinsagent:

Riennedoistournersurlemaster(sécurité)Scalerfacilementlafonction"build"Buildersurdesciblesspécifiques

Jenkinsexécuteur:

Emplacement"virtuel"atomiquepourunetâcheEstfourniparlesagentsetlemasterRèglededépart:~1exécuteurparCPU

ActionTime-clickme

Débutonsaveclespipelines

DébutonsaveclespipelinesAvantages

AvantagesparrapportauFreestyle

"Configurationascode"HistorisationGestiondesconflits

Gestionduparallélismesimple

SyntaxeDynamique(plugins)

Documentationettutoriels:https://jenkins.io/doc/book/pipeline/

DébutonsaveclespipelinesAvantages

Pipeline"simple"

Pipeline"simple"ActionTime-clickme

DébutonsaveclespipelinesAvantages

Pipeline"simple"

Pipelineetplugins

PipelineetpluginsActionTime-clickme

DébutonsaveclespipelinesAvantages

Pipeline"simple"

Pipelineetplugins

MultibranchPipeline

MultibranchPipelineActionTime-clickme

Docker101VousavezditDocker?

Docker:101PourquoiDocker?

PourquoiDocker?Quelestleproblèmequenousessayonsderésoudre?

Docker:101PourquoiDocker?

"MatrixfromHell"Problèmedetempsexponentiel

Docker:101PourquoiDocker?

Déjàvu?L'ITn'estpaslaseuleindustrieàrésoudredesproblèmes...

Docker:101PourquoiDocker?

Solution:Lecontainerintermodal

"SeparationofConcerns"

Docker:101PourquoiDocker?

Commentçamarche?

Commentçamarche?"VirtualisationLégère"

Docker:101PourquoiDocker?

Commentçamarche?

Commentçamarche?LinuxKernelrequis(oupresque...Windows...)Linuxcontainers:"super"chroot

"Namespacing":isolation(users,réseau,PIDs...)"ControlGroups":gestionetcontrôle(CPU,mem...)

Systèmedefichierdetype"UnionFileSystem"ProcessPID1etsesenfantsdanslecontainer

Docker:101PourquoiDocker?

Commentçamarche?

Dockerworkflow

DockerworkflowWorkflowDockerbasique:

Docker:101PourquoiDocker?

Commentçamarche?

Dockerworkflow

DockerInc.

DockerInc.FondéàParisen2008parSolomonHykesMigreàSanFransiscoen20092013:Open-sourceleprojetDocker2014:dotClouddevientDocker2016:1milliarddelevéedefond

DockerProjectOriginellementécritenPythonauseindedotCloudRé-écritenGolangetouverten2013aprèsune"PyCon"OpenSource-ApachelicenceDisponiblesurGithub:https://github.com/docker/docker~22Kcommits,+1400contributeurs

Docker:101PourquoiDocker?

Commentçamarche?

Dockerworkflow

DockerInc.

Résumé

RésuméObjectifdeDocker:

Docker:101PourquoiDocker?

Commentçamarche?

Dockerworkflow

DockerInc.

Résumé

ContainerareNOTVMs"Separationofconcerns":1"tâche"parcontaineur

Docker:101PourquoiDocker?

Commentçamarche?

Dockerworkflow

DockerInc.

Résumé

VMetcontaineursnonexclusifsmutuellement

JenkinsetDockerensemble

JenkinsetDockerensemble

Casd'usagesDockercommeoutildebuildDockercommeenvironnementdebuildDockerpourlesagentsDockerpourlemaster

Futur:BlueOceanetDeclarativePipelinesIlestfraismonPipeline!

https://jenkins.io/projects/blueocean/https://jenkins.io/doc/pipeline/tour/hello-world/

Merci!Questions?

top related