Improving software quality using Continuous Integration

Post on 21-Mar-2017

47 views 0 download

transcript

CONTINUOUS INTEGRATIONIMPROVING SOFTWARE QUALITY USING

▸ Software Engineer / IT Consultant

▸ Sinds 2013 bij InfoSupport

▸ Nederlandse Spoorwegen

▸ Laatste game: Horizon - Zero Dawn

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

NICK HOL WOUTER KONECNY

EVEN VOORSTELLEN

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

NICK HOL WOUTER KONECNY

EVEN VOORSTELLEN

▸ Software Engineer / IT Consultant

▸ Sinds 2013 bij InfoSupport

▸ Nederlandse Spoorwegen

▸ Laatste game: Horizon - Zero Dawn

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

INFO SUPPORT

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

AGENDA

▸ Doel

▸ The right tools

▸ Git

▸ Build tooling

▸ Continuous integration

▸ Pauze

▸ Sonar

▸ Continuous delivery

▸ Nexus

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

DOEL

▸ Quick start

▸ Software Craftsmanship

THE RIGHT TOOLSIMPROVING SOFTWARE QUALITY USING

ONTWIKKELSTRAAT

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

ONTWIKKELSTRAAT

▸ Kwaliteit

▸ Constante Feedback

▸ Snelheid

▸ Parallel

▸ Geautomatiseerde testen

▸ Minder human error

GITIMPROVING SOFTWARE QUALITY USING

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

GIT

▸ Branching

▸ GitFlow

MAIN BRANCHES

MAIN BRANCHES

SUPPORTING BRANCHES

SUPPORTING BRANCHES

SHORT BRANCH LIFETIME

HOTFIXES

HOTFIXES

SO…

BRANCH OFTEN!

COMMIT OFTEN!

MERGE OFTEN!

HANDS-ON: GIT

HANDS-ON: GIT1. Clone

https://gitlab.rhea.infosupport.net/huprojecten/godiva-en-fff-backend.git

2. Checkout branch ‘develop’: git checkout develop

3. Maak eigen branch met naam als ‘develop-sonarcoverage-NH’ (NH als je naam ’N’ick ‘H’ol is)git branch -b develop-sonarcoverage-XX

4. Push nieuwe branch

BUILD TOOLINGIMPROVING SOFTWARE QUALITY USING

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

BUILD TOOLING

▸ Ant

▸ Flexibel en Verbose

▸ Snel onoverzichtelijk

▸ Maven

▸ Snelle start en Makkelijk te begrijpen

▸ Door lifecycle

▸ Custom werk is lastiger

▸ Gradle

▸ Flexibel en leesbaar

▸ Eigen DSL gebaseerd op Groovy

AUTOMATE EVERYTHING

AUTOMATED TESTING

BUILD CONSISTENTLY

CONTINUOUS INTEGRATIONIMPROVING SOFTWARE QUALITY USING

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

CONTINUOUS INTEGRATION

▸ Jenkins

▸ Bamboo

▸ teamcity

▸ Travis

▸ TFS

▸ and more…

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

CONTINUOUS INTEGRATION

▸ Improves

▸ Quality

▸ Time to market

▸ Confidence

HANDS-ON: JENKINS

+

1. Ga naar Jenkins (https://rheabldj17.rhea.infosupport.net/)

2. Gebruik de pipeline “Godiva-en-fff-backend-workshop” https://rheabldj17.rhea.infosupport.net/job/godiva-en-fff-backend-workshop/

3. Start een build met je eigen branch

HANDS-ON: JENKINS

PAUZE

SONARIMPROVING SOFTWARE QUALITY USING

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

SONAR

▸ Code conventions

▸ Duplicate code

▸ Good / bad practices

▸ Code coverage

▸ Potential bugs and performance issues, security issues

▸ Code complexity

▸ Documentation on methods / classes

▸ Good design and architecture (structure 101)

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

SONAR

▸ Code conventions

▸ Duplicate code

▸ Good / bad practices

▸ Code coverage

▸ Potential bugs and performance issues, security issues

▸ Code complexity

▸ Documentation on methods / classes

▸ Good design and architecture (structure 101)

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

SONAR

Code coverage

HANDS-ON: COVERAGE

HANDS-ON: COVERAGE1. Voeg JaCoCo (Java Code Coverage) toe aan het project (in de pom.xml)

2. run ‘mvn test’ en controleer of onderstaande resultaat aanwezig is

3. Maak en commit en push deze

4. Start een build met je eigen branch

5. Controleer Coverage in Sonar https://sonar.rhea.infosupport.net/overview?id=100209

IDEALE CODE COVERAGE?

100% COVERAGE ON FUNCTIONALITY

DON'T WRITE TESTS TO HAVE TESTS

FIND AND REMOVE UNUSED CODE

FIND AND REMOVE UNUSED CODE

HANDS-ON: BUG FIXING

HANDS-ON: BUG FIXING1. Kies tussen bug fixes of coverage verhogen

2. Kies iets uit Sonar

3. Los het op!

4. Build je fix

5. Merge terug naar develop (indien groen)git merge —no-ff [branchnaam]

CONTINUOUS DELIVERYIMPROVING SOFTWARE QUALITY USING

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

CONTINUOUS DELIVERY

▸ Develop of master branches triggered deployment

▸ Master triggers production deployment

NEXUSIMPROVING SOFTWARE QUALITY USING

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

NEXUS

▸ Artefact repository

▸ Releases in publiceren

▸ Controleren 3rd party dependencies

VRAGEN

IMPROVING SOFTWARE QUALITY USING CONTINUOUS INTEGRATION

LINKS

▸ CI: https://www.martinfowler.com/articles/continuousIntegration.html

▸ GitFlow: http://nvie.com/posts/a-successful-git-branching-model/

▸ Deze presentatie: LINK NAAR PRESENTATIE