alm: continuous integrationdownload.microsoft.com/.../continuous_integration_v21.pdfwhat is...

28
ALM: Continuous Integration José Almeida, Microsoft

Upload: others

Post on 06-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

ALM: Continuous Integration

José Almeida, Microsoft

Page 2: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Agenda

What is CI?

Issues Addressed

CI Practices

Getting Started

Page 3: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

About Continuous Integration

Page 4: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

CI is the thread that ties development

practices together

What is Continuous Integration?

Page 5: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

What is Continuous Integration?

GOAL:

Find errors as quickly as possible

And fix them as quickly as possible

It’s a software development pratice

Team members integrate frequently

Each integration is fully automated and verifiable

Page 6: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Automation

The CI Cycle

Publish

results Monitor Repository

Get latest changes

Validate

product

Build product

Page 7: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

How Does CI Help SW Development?

Page 8: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

How Does It Help?

By leveraging other development best practices:

• Correct source code management

• Self-validating code

• Adherence to coding standards

Page 9: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Common Issues in SW Development

Dependency issues

Code was built on a developer’s machine without the

latest version of it’s dependencies

Page 10: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Common Issues in SW Development

Dependency issues

Code traceability

It’s difficult to track the code that corresponds to the

binary currently deployed in the production environment

Page 11: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Common Issues in SW Development

Dependency issues

Code traceability

Regressions

A commit causes an error in a previously

working functionality

Page 12: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Common Issues in SW Development

Dependency issues

Code traceability

Regressions

Low coverage

All our tests pass but we’re still finding lots of

defects!

Page 13: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Common Issues in SW Development

Dependency issues

Code traceability

Regressions

Low coverage

Adherence to best-practicesWe found some issues with the version of

the code currently in production and it turns

out they’re documented best practices.

Page 14: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

CI Practices

Page 15: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

CI Practice

• Maintain a Single Source Repository

• Automate the Build

• Make Your Build Self-Testing

• Everyone Commits Every Day

• Every Commit Should Build the Mainline on an Integration Machine

• Keep the Build Fast

• Test in a Clone of the Production Environment

• Make it Easy For Anyone To Get The Latest Executable

• Everyone Can See What’s Happening

• Automate Deployment

Martin Fowler, “Continuous Integration”

Page 16: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

The Repository

Single repository for all artifacts

• Code

• Scripts

• DB schemas

• Install scripts

Basic rule of thumb:

• Get a clean machine, plug it to the network,

download the latest sources and build the

product

Page 17: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

The Build

Requires a degree of automation

VS project files are MSBuild scripts

Team Build wraps all project build scripts within a master script file

Advantages:

• Reduce/eliminate repetitive, manual and error-prone

tasks

• Free people for value-added tasks

• Increase integration frequency

Page 18: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Self-Validating Code

Unit Tests:

• Test specific aspects of a functionality

• Execute rapidly

• Independent of each other

• Independent of the surrounding environment

• Independent of execution order

• Automated

Ideal to be integrated into an automated Build

Page 19: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Self-Validating Code

Make your code self-validating by writing Unit Tests

Page 20: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Self-Validating Code

Don’t have the time?

Page 21: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Self-Validating Code

• Do you write a console or winforms app that

calls your methods?

• That’s a unit test!

• Place that code in a method decorated with

the [TestMethod] attribute in a test project

Page 22: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Getting Started

Page 23: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Getting Started With CI

Decide to add CI to your product

development

Establish a consistent use of a

single source repository

Setup your CI platform

Add other practices to your product

development (unit testing, code

analysis, etc.)

Page 24: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Summing Up

Page 25: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

CI

Continuous Improvement

Quality

improvement

Automate integration

tasks

Reduce integration

time

Fewer errors

Integrate

more oftenContinuous

Improvement

Page 26: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Conclusion

CI is not only about integrating source code...

Page 27: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly

Conclusion

It’s about integrating best practices

Page 28: ALM: Continuous Integrationdownload.microsoft.com/.../Continuous_Integration_v21.pdfWhat is Continuous Integration? GOAL: Find errors as quickly as possible And fix them as quickly