continuous delivery mit jenkins workflow - · pdf filejenkins workflow martin reinhardt...
TRANSCRIPT
![Page 1: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/1.jpg)
ContinuousDeliverymitJenkinsWorkflow
MartinReinhardt(HolisticonAG)@mreinhardt
![Page 2: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/2.jpg)
Agenda■ Einführung/BuildPipeline■ JenkinsPipeline■ JenkinsPipelineLibraries■ Testautomatisierung■ Provisioning■ Links
![Page 3: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/3.jpg)
Einführung■ ContinuousDeliveryistdielogischeFortsetzungvonContinuousIntegration
■ DieIdeedahinter□ SoftwaremitagilenMethodenkannnichtkomplett(manuell)getestetwerden
□ Alle2WochengesamtenFunktionsumfangabtestenistutopisch□ TestumgebungenstehenmeistnichtausreichendzurVerfügung
![Page 4: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/4.jpg)
BuildPipeline■ Jobs=BausteinederStages("UnitofWork")□ BestehenausTaskswieBuild,Deploy,Copy,Test
■ AgileSoftwareentwicklungarbeitetkleinteilig□ SoftwareoftundzuverlässiginProduktion□ NutzungderIDE!=Automatisierung□ WesentlichistdabeidieBuildPipeline
■ Wie?□ Geschwindigkeit□ Automatisierung□ Reproduzierbarkeit
![Page 5: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/5.jpg)
WarumBuildPipelines"Oneofthechallengesofanautomatedbuildandtestenvironmentisyouwantyourbuildtobefast,sothatyoucangetfastfeedback,butcomprehensiveteststakealongtimetorun.Adeploymentpipelineisawaytodealwiththisbybreakingupyourbuildintostages.Eachstageprovidesincreasingconfidence,usuallyatthecostofextratime.Earlystagescanfindmostproblemsyieldingfasterfeedback,whilelaterstagesprovideslowerandmorethroughprobing.DeploymentpipelinesareacentralpartofContinuousDelivery"
MartinFowler
![Page 6: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/6.jpg)
JenkinsBuildPipelinePlugin■ FeaturevonJenkins2,Groovy-basiert■ KlassichePipelineinJenkinsbenötigtvielePlugins
■ NeueVariantebietetdetailiiertenÜberblickineinemJob
Beispiel
![Page 7: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/7.jpg)
BeispielPipeline
node{stage('Checkout'){checkoutscm}...
stage('Unit-Tests'){sh"mvntest"}
archiveArtifacts'**/target/*.jar'junit'*/target/surefire-reports/TEST*.xml'
Beispiel
![Page 8: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/8.jpg)
WarumJenkinsPipeline■ Transparenz■ Struktur■ Wartbarkeit■ Produktreife■ Übersicht■ NichtnuraufJava-Weltbeschränkt■ InfrastructureasCode(IaC)auchfürBuild
![Page 9: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/9.jpg)
PipelineÖkosystemwächst■ immermehrPluginsunterstützenPipelinedirekt■ Dokumentationwirdimmerbesser■ mittlerweilesehrvieleAnwendungsgebieteabgedeckt
![Page 10: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/10.jpg)
MultiBranches■ MultibranchPipelineJobsbauenautomatisch■ Mitgitflowsehrhilfreich■ Build-AnpassungenkönnenalsBranchgetestetwerden
![Page 11: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/11.jpg)
BlueOcean■ GestartetalsneuesUIfürJenkins■ FastFeedbackmitmodernenUI■ mittlerweilegutePluginunterstützung
![Page 12: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/12.jpg)
■ GutgeeignetfürschnellenÜberblickdurchFarben
![Page 14: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/14.jpg)
PipelineLibraries■ -PrinzipauchbeimBuild■ BuildenthältschnelleinigeHilfsmethoden■ NutzunginanderenProjektenstatt'Copy-and-Pase'
■ NichtnuraufHilfsmethodenbeschränkt□ volleGroovy-Unterstützung□ kompletteBuildsinkl.Steps/Stages
Don'trepeatyourself
möglich
![Page 15: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/15.jpg)
Beispiel@Library('holisticon-build-library')defutils=newde.holisticon.ci.jenkins.Utils()
node{utils.waitForAppToBeReady('localhost:8080')}
Beispiel
![Page 16: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/16.jpg)
Testautomatisierung■ AnchlussderUnit-TestserzeugtenArtefakteweitertesten□ AblageinRepository□ DeploymentinTest-Umgebung
■ Testumgebungenproblemebehaftet□ DedizierteSlaves(Labels)□ DockerImages
■ Dockerbesondershilfreich(lokalesTesten,Ressourcennutzung)
■ FeedbackisteinMuss□ TestToolsmüssenaussaugekräftigeReportsliefern□ reproduzierbar&nachvollziehbar□ geradebeiOberflächen-Tests
![Page 17: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/17.jpg)
OberflächenTestingmitStil-Serenity
■ ToolfürATDD(acceptancetestdrivendevelopment)
■ MachtIntegrations-Testslesbarer,wartbarerundwiederwendbar
■ SeleniumalstechnischeBasis■ NutztPageObjectPattern■ StelltReportingfürTracking&FehlersuchezurVerfügung
■ VerbindungmitTicket-System■ AnforderungenaufTestsmappen
![Page 18: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/18.jpg)
Konzepte-Page-ObjectPattern
■ TestautomatisierungspatternfüreffizienteundlesbareTests
■ JedeUISeitewirdaufeinePage-Klassegemappt■ InteraktionwirdüberSteps-Klassenumgesetzt■ TestsnutzenStepsumAnwendungsverhaltenzusimulieren
![Page 19: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/19.jpg)
Report
Beispiel
![Page 20: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/20.jpg)
ProvisioningmitAnsible■ OSSToolfürKonfigurationsmanagement(vgl.Puppet,ChefoderCFengine)□ kannad-hocausgeführtwerden(vgl.Funcoderdsh)□ DeploymentFunktionen(vgl.FabricoderCapistrano)
■ 2012gestartete,2015vonRedHatübernommen■ inPythongeschrieben■ kommtohneAgentsundServeraus
![Page 21: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/21.jpg)
Beispiel■ YAML-basierteSyntaxfürdiesog.Playbooks
-hosts:webserversvars:http_port:80max_clients:200remote_user:roottasks:-name:ensureapacheisatthelatestversionapt:pkg=apache2-mpm-workerstate=latest-name:ensureapacheisrunningservice:name=apache2state=started
![Page 22: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/22.jpg)
Deploymentsshagent(['e96eb307-86ff-4858-82bb-cdc20bf1e4b4']){stage('Deploy'){dir("ansible"){//Install/updatedependenciessh"ansible-galaxyinstall-rrequirements.yml-f"//Executeplaybooksh"ansible-playbookcddemo.yml--extra-vars'app_version=${appVersion}path_to_artifact=../angular-spring-boot-webapp/target/ng-spring-boot.jar--ansible_ssh_port=\${ANSIBLE_PORT}'"}}}
Beispiel
![Page 23: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/23.jpg)
WiesoAnsible■ schlankundeinfachzuerlernen■ flexibelundohneInfrastruktureinsetzbar■ MitAnsibleGalaxyreichhaltigeBibliothek■ guterSupportinRedHatDistributionen
![Page 24: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/24.jpg)
Fazit&Ausblick■ FeedbackisteinMuss□ TeststufenkontinuierlichFeedbacküberaktuellenQualitätsstand□ Toolsmüssendasunterstützen
■ PipelinePluginenormeHilfe,geradebeigitflow■ ImBereichvonCDvieleToolsimBereichTesting&Automatisierung
■ Gefahrvon"Over-Engineering"derSchritteinPipeline
■ BewegungimTool-Bereich(ThoughtworksGo,Docker...)
■ ContinuousIntegrationzwingendfürContinuousDelivery
![Page 25: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/25.jpg)
Links■■■
■■■■■
BeispielAnwendungJenkinsMultiBranchBeispielDevOps–TestautomationI–InfrastructureasCodeRockCImitJenkins2undDockerBeispielSerenityÜberJenkinsBuildLibrariesholisticonPipelineLibraryBeispielJenkinsPluginPipelineLibraryBeispiel
![Page 26: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/26.jpg)
Thereisnoone-size-fits-allsolutiontothecomplexproblemofimplementingadeploymentpipeline.”ContinuousDelivery,J.Humble,D.Farley
![Page 27: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/27.jpg)
Aboutme■ MartinReinhardt(HolisticonAG)
■■
github.com/hypery2ktwitter.com/mreinhardt
![Page 28: Continuous Delivery mit Jenkins Workflow - · PDF fileJenkins Workflow Martin Reinhardt (Holisticon AG) @mreinhardt. Agenda Einführung / Build Pipeline Jenkins Pipeline Jenkins Pipeline](https://reader031.vdocuments.site/reader031/viewer/2022032007/5aa208717f8b9ac67a8c953e/html5/thumbnails/28.jpg)
Präsentation
holisticon.github.io