Continuous Integration

Post on 23-Dec-2014

789 views 0 download

Tags:

description

 

Transcript of Continuous Integration

Continuous Integration (CI)

Motivation

3

Integrate modules at late state of project

Traditionally, different modules are developed by different teams/developers

4

The earlier you can detect problems, the easier it is to

resolve them

In Agile processes, any programmer can change any part of the code

5

Definition

6

• Continuous Integration is a software development practice where members of a team integrate their work frequently

• Each integration is verified by an automated build • Detect integration errors as quickly as possible • Assumes a high degree of tests

Continuous Integration

7

Demonstration

8

Continuous Integration Server

Source Repository

Developers

Solution: continually integrate and test throughout the project

9

Developers check out code into their private workspaces

10

Developers work on functionality and validate it by running unit tests and local build

11

Developer update code to avoid conflicts

12

Developers work on functionality and validate it by running unit tests and local build

13

When done, they commit changes to the repository

14

The CI server monitors the repository andchecks out changes when they occur

15

The CI server builds the system and runs unit and integration tests

16

The CI server releases deployable artefacts for QA testing

17

The CI server assigns a build label to the version of the code that it just built

18

The CI server informs the team of the successful build and generates useful metrics

19

If the build or tests fail, the CI server alerts the team

20

The team fix the issue at the earliest opportunity

21

Continually integrate and test throughout the project

Metrics

23

Metrics generated by the CI server can be a useful indication of project “health”

24

Metrics generated by the CI server can be a useful indication of project “health” (cont.)

25

Reminder

26

Check in frequently

Continuous Integration Reminder

27

Don’t check in broken code

Continuous Integration Reminder

28

Don’t check in untested code

Continuous Integration Reminder

29

Don’t check in when the build is broken

Continuous Integration Reminder

30

Don’t go home after checking in until the system builds

Continuous Integration Reminder

31

“Oops, I did it again….”

• Peer pressure within team ensures policies are followed

32

Practices of Continuous Integration

33

Maintain a Single Source Repository

Practices of Continuous Integration

34

Automate the Build

Practices of Continuous Integration

35

Make Your Build Self-Testable

Practices of Continuous Integration

36

Every Commit Should Build the Mainline on an Integration

Machine

Practices of Continuous Integration

37

Keep the Build Fast

Practices of Continuous Integration

38

Test in a Clone of the Production Environment

Practices of Continuous Integration

39

Everyone can see what's happening

Practices of Continuous Integration

40

Automate Deployment

Practices of Continuous Integration

41

Conclusion

42

Detect integration errors as quickly as possible

Continuous Integration

43

Assumes a high degree of tests

Continuous Integration

44

Always have a deployable build

Continuous Integration

45

Generate metrics to guide project management

Continuous Integration

46

Continuous Integration is Vital for Agile Development

Continuous Integration

?Q & A