+ All Categories
Home > Engineering > Continuous integrations - Basics

Continuous integrations - Basics

Date post: 12-Jul-2015
Category:
Upload: baris-inanc
View: 60 times
Download: 2 times
Share this document with a friend
29
Continuous Integration Barış İNANÇ ARDIC AR-GE Release Engineer
Transcript
Page 1: Continuous integrations - Basics

Continuous IntegrationBarış İNANÇARDIC AR-GERelease Engineer

Page 2: Continuous integrations - Basics

Who am I?

• Release Engineer in ARDIC INC.• Maintaining build operations for 3 years• Trying to automate everything

2

Page 3: Continuous integrations - Basics

Agenda• Catastrophic Failure Step by Step• Continuous Integration• Why it is important?• What is needed?• Build

▫ What▫ When▫ How

• My Toolbox and Workflow• 7 Step for Success

3

Page 4: Continuous integrations - Basics

Catastrophic Failure Step by Step

• Crowded Team• Multi module project• No revision management system / wrong usage

of revision management system• Manual testing• Compile only on finish• Binary deployment from developer computer• …

4

Page 5: Continuous integrations - Basics

Continuous Integration

• Software engineering practice, where project is builded frequently

• Emerged as Extreme Programming technique• 2000, Continuous Integration, Martin Fowler• Became Agile Process standard

5

Page 6: Continuous integrations - Basics

Why it is important? (1)

• Fixing bugs late can be costly

6

Page 7: Continuous integrations - Basics

Why it is important? (2)

• To Improve Team Collaboration

▫ “Changes are conflicting how to merge now?”▫ “When did this code changed/removed/added”▫ “It was working two days ago”

7

Page 8: Continuous integrations - Basics

Why it is important? (3)

• To Improve Code Quality (Before production/catastrophic failure)

▫ “Same code over and over why not make a function”

▫ Why did you write this code:…if(foo==true) return trueelse return false

…return foo

8

Page 9: Continuous integrations - Basics

Why it is important? (4)

• To know Project history/future▫ What was in version 1.2.129?▫ Which tests are failing?

9

Page 10: Continuous integrations - Basics

Why it is important? (5)

• Always ready for deployment▫ “It works on my computer”▫ “Customer is coming, ready for a demo?”

10

Page 11: Continuous integrations - Basics

Fix before not try during flight

11

Page 12: Continuous integrations - Basics

What is needed?

• Revision Management System (GIT/SVN)• Dedicated Build Server• Open-minded team

12

Page 13: Continuous integrations - Basics

Term: Build

• Learn real meaning of Build

Build != Compile

13

Page 14: Continuous integrations - Basics

Build

• Compilation• Test Execution• Database Integration• Code Inspection• Automated Deployment• Document Generation

sucessfully

repeatable

Upgrade/downgrade scripts

Health checkAlways ready

Up-to-date

14

Page 15: Continuous integrations - Basics

Build When?

• Full project build regularly (nightly)• Build module in every commit• Full Build if a module changes dependencies

15

Page 16: Continuous integrations - Basics

Build How?

• Generate building scripts• Unattended building• Do not use IDE for building• Use CI server not developer computer• Generate build report for immediate feedback• Accessible for team

16

Page 17: Continuous integrations - Basics

Jenkins CI

• Easy to use Continuous Integration tool• Building/Testing/Monitoring can be done from

same application• Ready for scaling and parallel building• Can integrate with SCM and Code Quality tools

easily

17

Page 18: Continuous integrations - Basics

18

Page 19: Continuous integrations - Basics

Gerrit Code Review

• Code Review system for GIT SCM• Each patchset can be reviewed before merging to

release branch• Fix before build

19

Page 20: Continuous integrations - Basics

20

Page 21: Continuous integrations - Basics

SonarQube

• Code Quality tool• Automated code quality analysis• Over 20 programming languages• Coding rules, potential bugs, duplications can be

anlyzed via this tool

21

Page 22: Continuous integrations - Basics

22

Page 23: Continuous integrations - Basics

Let’s integrate Everything

23

Submit changes

Get changes and build

Analyze changes

Report Output

GIT Repo

Submit changes it is applicable

Page 24: Continuous integrations - Basics

Let’s integrate Everything

• Never commit a code to master repository directly• Send patchset to review regularly• Patchset will be automatically builded and sent to

analysis to SonarQube• SonarQube runs analysis and generated report• Build and Analysis reports will be linked to

patchset in Gerrit Code Review system• Merge code to release branch after manual review

24

Page 25: Continuous integrations - Basics

Let’s integrate Everything

• Jenkins CI can build project regularly• After compilation completed tests can be run via

Jenkins• Daily sonar analysis can be started during this

build• All reports will be ready for the morning

25

Page 26: Continuous integrations - Basics

26

Source: http://www.slideshare.net/drluckyspin/continuous-integration

Page 27: Continuous integrations - Basics

Conclusion

• For ▫ Better quality Code▫ Fast Development Time▫ Less cost on money or time

• Use Continuous Integration techniques

27

Page 28: Continuous integrations - Basics

Thank you for listeningAny Questions…

28

Page 29: Continuous integrations - Basics

References• http://www.slideshare.net/drluckyspin/continuous-integration• https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins• http://www.sonarqube.org/• https://code.google.com/p/gerrit/• http://martinfowler.com/articles/continuousIntegration.html

29


Recommended