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