continuous development pipeline

65
Continuous Development Pipeline

Upload: izzet-mustafaiev

Post on 05-Jul-2015

1.542 views

Category:

Software


2 download

DESCRIPTION

In the world of fast changing technologies and business requirements there is no way to stay with old-school approaches to develop software. Common, leave manual interaction behind, let machine do what it's best capable for and spend your time to solve real problems. During this talk I'm going to demonstrate how to build a sophisticated continuous development pipeline for Java based project to cover things like build, test, code quality, deploy and delivery using Gradle, Jenkins, SonarQube, Docker and Ansible. As an outcome of this presentation there will be an open source project with source code.

TRANSCRIPT

Page 1: Continuous Development Pipeline

Continuous Development

Pipeline

Page 2: Continuous Development Pipeline

● SA at EPAM Systems

● primary skill is Java

● hands-on-coding with Groovy, Ruby

● trying to learn some Erlang/Elixir

● passionate about agile, clean code and devops

Izzet Mustafayev@EPAM Systems@webdizz webdizz izzetmustafaievhttp://webdizz.name

Page 3: Continuous Development Pipeline

Agenda● Introduction

● Step-by-step Implementation

■ Gradle

■ SonarQube

■ Jenkins

■ Ansible

● References

● Summary

● Q&A

Page 4: Continuous Development Pipeline

Introduction

Page 5: Continuous Development Pipeline

Continuous Integration

Page 6: Continuous Development Pipeline

Principles

#1 Each change auto. built and deployed

Page 7: Continuous Development Pipeline

#2 Test on closed to prod environment

Principles

#1 Each change auto. built and deployed

Page 8: Continuous Development Pipeline

#2 Test on closed to prod environment

#1 Each change auto. built and deployed

#3 Integrate as frequently as possible

Principles

Page 9: Continuous Development Pipeline

#2 Test on closed to prod environment

#1 Each change auto. built and deployed

#3 Integrate as frequently as possible

Principles

#4 The highest priority to fix failed build

Page 10: Continuous Development Pipeline

Benefits● Each change guarantees working code

● Each update should guarantee working

code ;)

● There is no delay for epic merge

● Less bugs - depends on your tests

efficiency*

● Allows to have code ready to go live

Page 11: Continuous Development Pipeline

Challenges● Need to build infrastructure

● Need to build team culture

● Need to support/enhance infrastructure

● Overhead with writing a lot of different

kind of tests

Page 12: Continuous Development Pipeline

Continuous Delivery

Page 13: Continuous Development Pipeline

Principles

#1 Every commit can result in a release

Page 14: Continuous Development Pipeline

Principles

#1 Every commit can result in a release

#2 Automated tests are essential

Page 15: Continuous Development Pipeline

Principles

#1 Every commit can result in a release

#2 Automated tests are essential

#3 Automate everything!

Page 16: Continuous Development Pipeline

Principles

#1 Every commit can result in a release

#2 Automated tests are essential

#3 Automate everything!

#4 Done means released

Page 17: Continuous Development Pipeline

Benefits● Speed of delivery of business idea to

customer

● Easy going live deployment

● Less time spent on delivery - more profit

● More motivation to do more as you can

see what you can change/improve

Page 18: Continuous Development Pipeline

Challenges● Big effort to implement changes for:

○ database increment/rollback

○ infrastructure rollout/rollback

○ decrease down time …

● Need to get customers to buy in

● Security policies

Page 19: Continuous Development Pipeline

Step-by-step Implementation

Page 20: Continuous Development Pipeline

Continuous Development?

Page 21: Continuous Development Pipeline

Gradle

Page 22: Continuous Development Pipeline

2.2.1

Page 23: Continuous Development Pipeline

Gradle- General purpose build system

Page 24: Continuous Development Pipeline

Gradle- General purpose build system

- Comes with a rich DSL based on Groovy

Page 25: Continuous Development Pipeline

Gradle- General purpose build system

- Comes with a rich DSL based on Groovy

- Follows ”build-by-convention” principles

Page 26: Continuous Development Pipeline

Gradle- General purpose build system

- Comes with a rich DSL based on Groovy

- Follows ”build-by-convention” principles

- Built-in plug-ins for JVM languages, etc

Page 27: Continuous Development Pipeline

Gradle- General purpose build system

- Comes with a rich DSL based on Groovy

- Follows ”build-by-convention” principles

- Built-in plug-ins for JVM languages, etc

- Declarative builds

Page 28: Continuous Development Pipeline

Demo Time

Page 29: Continuous Development Pipeline

CodeQuality

Page 30: Continuous Development Pipeline

Ad-hoc, fast feedback

Page 31: Continuous Development Pipeline

Ad-hoc, fast feedback

Over time

Page 32: Continuous Development Pipeline

SonarQube- Measures code quality from day #0

Page 33: Continuous Development Pipeline

SonarQube- Measures code quality from day #0

- 7 axes of code quality

Page 34: Continuous Development Pipeline

SonarQube- Measures code quality from day #0

- 7 axes of code quality

- Helps to manage Technical Dept

Page 35: Continuous Development Pipeline

SonarQube- Measures code quality from day #0

- 7 axes of code quality

- Helps to manage Technical Dept

- Works not only for Java

Page 36: Continuous Development Pipeline

SonarQube- Measures code quality from day #0

- 7 axes of code quality

- Helps to manage Technical Dept

- Works not only for Java

- Good for dev, qa, archs & manager

Page 37: Continuous Development Pipeline

Demo Time

Page 38: Continuous Development Pipeline

Jenkins

Page 39: Continuous Development Pipeline

Jenkins- Distributed builds

Page 40: Continuous Development Pipeline

Jenkins- Distributed builds

- Plugin Support

Page 41: Continuous Development Pipeline

Jenkins- Distributed builds

- Plugin Support

- Easy installation, configuration

Page 42: Continuous Development Pipeline

Jenkins- Distributed builds

- Plugin Support

- Easy installation, configuration

- Strong community and eco-system

Page 43: Continuous Development Pipeline
Page 44: Continuous Development Pipeline

Notifications

Page 45: Continuous Development Pipeline

Email sucks

Page 46: Continuous Development Pipeline

Who cares?

Page 47: Continuous Development Pipeline

During a day

Page 48: Continuous Development Pipeline

End of day

Page 49: Continuous Development Pipeline

Demo Time

Page 50: Continuous Development Pipeline

Ansible

Page 51: Continuous Development Pipeline

Ansible- Agentless

Page 52: Continuous Development Pipeline

Ansible- Agentless

- SSH as a protocol, requires only Python

Page 53: Continuous Development Pipeline

Ansible- Agentless

- SSH as a protocol, requires only Python

- YAML based configuration

Page 54: Continuous Development Pipeline

Ansible- Agentless

- SSH as a protocol, requires only Python

- YAML based configuration

- Declarative and Decentralized

Page 55: Continuous Development Pipeline

Ansible- Agentless

- SSH as a protocol, requires only Python

- YAML based configuration

- Declarative and Decentralized

- Built-in security and encryption

Page 56: Continuous Development Pipeline

Demo Time

Page 57: Continuous Development Pipeline

Summary

Page 58: Continuous Development Pipeline

Summary ● Culture is quite important

Page 59: Continuous Development Pipeline

Summary ● Culture is quite important

● Automation is a thing

Page 60: Continuous Development Pipeline

Summary ● Culture is quite important

● Automation is a thing

● Automated Testing is even more thing

Page 61: Continuous Development Pipeline

Summary ● Culture is quite important

● Automation is a thing

● Automated Testing is even more thing

● Continuous process

Page 62: Continuous Development Pipeline

References

Page 64: Continuous Development Pipeline

Q&A

Page 65: Continuous Development Pipeline

Izzet Mustafayev@EPAM Systems@webdizz webdizz izzetmustafaievhttp://webdizz.name