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


Top Related