Exploring the Future Potential of AI-Enabled Smartphone Processors
Ci Presentation for SPIN
1. Continuous Integration
- A Framework for Better Quality Software
Richmond SPIN
Richmond
Eric Pugh
May 13th, 2009
1
2. Who am I?
Principal of OpenSource Connections
Contributer to CruiseControl and
Continuum CI projects
Member of Apache Software Foundation
Presenter at many conferences
including OSCON, ApacheCON, jTDS,
ExpoQA
Fascinated by the art of software
development
Continuous Integration RICHMOND, May 13, 2009
2
3. What are we talking about?
What is CI?
Why does it matter to me?
What do I need to use CI?
Demonstration of Hudson
Where does CI fit into the SPIN World?
Questions!
3
Continuous Integration RICHMOND, May 13, 2009
3
4. What is Continuous Integration?
From Martin Fowler:
“a fully automated and reproducible build,
including testing, that runs many times a day”.
http://martinfowler.com/articles/continuousIntegration.html
4
Continuous Integration RICHMOND, May 13, 2009
4
6. How is CI important to different members of a team?
6
Continuous Integration RICHMOND, May 13, 2009
6
7. Life of a programmer without CI...
Unstable code, integration is difficult
Many build errors reported
Only one person on the team can build the entire
project
Demonstrations require extensive planning
Feedback cycle is long
Every day is a struggle to be productive
7
Continuous Integration RICHMOND, May 13, 2009
7
8. Life of a programmer with CI...
The build process is simple and repeatable
Elimination of Human Error
Demo’s are quick and easy
Feedback cycle is very rapid
Every day you know you can code!
8
Continuous Integration RICHMOND, May 13, 2009
8
9. For a tester
control
What is in the build?
What has changed between builds?
How do I verify functionality?
9
Continuous Integration RICHMOND, May 13, 2009
9
10. For a Project Manager
Visibility
10
Continuous Integration RICHMOND, May 13, 2009
10
11. For a Project Manager
11
Continuous Integration RICHMOND, May 13, 2009
11
12. For a development team
security
12
Continuous Integration RICHMOND, May 13, 2009
12
13. For a development team
13
Continuous Integration RICHMOND, May 13, 2009
13
14. For a development team
14
Continuous Integration RICHMOND, May 13, 2009
14
15. For a development team
15
Continuous Integration RICHMOND, May 13, 2009
15
16. What is needed to get started?
A dedicated machine
Source Control
Automated Build Script
Method of notification
16
Continuous Integration RICHMOND, May 13, 2009
16
17. What are the challenges to using CI?
17
Continuous Integration RICHMOND, May 13, 2009
17
18. Challenge One: Cultural Change
CI needs a champion who acts as the ambassador to the leaders of the
organization.
Thought leaders in the organization who can help encourage
developers to accept the process changes that CI brings
A very successful test case
¿A greenfield project if possible?
18
Continuous Integration RICHMOND, May 13, 2009
18
19. Challenge Two: Environmental Difficulties
All the tests should be true unit tests, not
integration tests
Few or no external dependencies
A beefy build server...
A strategy for deploying code into the CI
environment
Database changes are SIMPLE
19
Continuous Integration RICHMOND, May 13, 2009
19
20. Challenge Three: Project Characteristics
Fewer branches to the code makes life easier
Many small code changes. Code is committed throughout the day.
There are good unit test coverage.
The code is ready for deployment, not in pieces.
20
Continuous Integration RICHMOND, May 13, 2009
20
21. Challenge Four: Stability of CI Tool
X
The CI system must be as well maintained as
the Source Control system.
The CI system performs builds very quickly.
Who has responsibility for CI? It’s very
important to have a “throat to choke”.
No false alarms. If there are false alarms
then the developers lose confidence in the CI
✓
system.
21
Continuous Integration RICHMOND, May 13, 2009
21
22. Demo of Hudson
22
Continuous Integration RICHMOND, May 13, 2009
22
23. Where does CI fit into the SPIN World?
23
Continuous Integration RICHMOND, May 13, 2009
23
24. CI Maturity Model?
Fewer branches to the code makes life easier
Many small code changes. Code is committed throughout the day.
There are good unit test coverage.
The code is ready for deployment, not in pieces.
http://www.anthillpro.com/blogs/anthillpro-blog/2009/05/05/1241542860000.html
24
Continuous Integration RICHMOND, May 13, 2009
24
25. Virtuous Circle?
Metrics are hard to get
Developers rebel against on high management
Need good processes that support and encourage other good
processes
25
Continuous Integration RICHMOND, May 13, 2009
25
26. HackyStat
26
Continuous Integration RICHMOND, May 13, 2009
26
27. Test Automation
CI increases the rewards for doing test automation
unit
integration
functional?
system?
27
Continuous Integration RICHMOND, May 13, 2009
27
28. Where to next?
Continuous Integration: Improving Software Quality
and Reducing Risk
CITConf is the conference for CI. This year it was
April 24, 25 in Minneapolis, MN.
Take a handout with reference links!
28
Continuous Integration RICHMOND, May 13, 2009
28
29. Matrix of 22 differences in CI systems
http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix
29
Continuous Integration RICHMOND, May 13, 2009
29
30. Why CI?
Eliminate human errors
Tests that run frequently are more valuable
A CI system is the foundation of a project status dashboard
Eliminate integration problems!
30
Continuous Integration RICHMOND, May 13, 2009
30