piątek z xsolve - travisci & continuous delivery

49
TravisCI & Continuous Delivery, czyli o tym, jak dostarczać szybciej Maciek Papież, XSolve

Upload: xsolve-software-house

Post on 08-Jan-2017

92 views

Category:

Technology


1 download

TRANSCRIPT

TravisCI & Continuous Delivery,czyli o tym, jak dostarczać szybciej

Maciek Papież, XSolve

Zacznijmy trochę filozoficznie...

“Programista bez wiary jestjak podróżnik bez celu”

"Ja nie wierzę, że po tychmerdżach wszystko zadziała"

Gandalf Szary

Continuous Integration

Zasady są proste

Martin Fowler pisze...

Continous Integration ma miejsce wtedy, gdy:

1. Build jest zautomatyzowany.

2. Każdy commit z mastera jest budowany.

3. Każdy developer commituje do mastera codziennie.

Jenkins?

https://wiki.jenkins-ci.org/download/attachments/73533111/multi-branch.png?version=3

Jenkins może wszystko.

Girls plugin

https://wiki.jenkins-ci.org/download/attachments/43713848/Failure.JPG?version=1

Ale kto potrafi go skonfigurować?

3 osobyRosiu, Kamil Zieliński, ja.

TravisCI

Łatwy w konfiguracji

Jest usługą świadczoną w chmurze

Jest bardzo rozpowszechnionyszczególnie wśród OSS

Jak zacząć?

1) Wybierz swoją platformę(php / java / nodejs /

objective-c / go / python...)

2) Zaplanuj swój build● jak ściągnąć zależności?● jak uruchomić testy?

3) Stwórz .travis.yml w repo

4) Podepnij repozytorium do Travisa

5) Koniec!

Co tam można zrobić?

Budowanie Pull Requestów - out-of-box

Notyfikacje na Slacka - 2 linie

Szyfrowanie wrażliwych danych

Usługi - po 1 liniiDostępne:

● MySQL● PostgreSQL● MongoDB● Apache Cassandra● Elasticsearch● Redis● RabbitMQ● Neo4J● SQLite3

Przykładowa konfiguracja:

(...)

services:- mysql- mongodb- redis

(...)

Tyle, nic więcej ;)

Build matrix

PHP 5.5 PHP 5.6 PHP 7

MySQL 5.5 OK OK FAIL

MySQL 5.6 OK OK FAIL

MySQL 5.5 MySQL 5.6 PostgreSQL 9.3

JDK 7 OK OK OK

JDK 8 FAIL FAIL OK

Kontenery Dockera

Cache'owanie zależnościale sprytne!

...i deployment!

Część 2. Ciekawsza ;)

Continuous delivery

Continuous deliveryvs.

Continuous deployment

Delivered!=

Released, deployed

Build pipeline

http://dzikowski.github.io/assets/img/posts/continuous-delivery-deployment-sm.jpg

AWS CodeDeploy

● lekka usługa służąca do deploymentu

● źródło danych - S3 / Github

● inicjalizowanie instalacji

● łatwo podpiąć instancje EC2, można też on-premise

● proste i logiczne skryptowanie przebiegu instalacji

AWS CodeDeploy

Demo :)

Best practice

● artefakt (np. zip) jest generowany na samym początku

procesu i jest “nieświadomy” środowiska

● rozdzielenie konfiguracji od kodu

● wersjonowanie kodu, konfiguracji, infrastruktury,

schematów bazy danych

● zero manualnych ingerencji w środowisko TEST/PROD

Best practice

● skorzystanie z kontenerów może ułatwić zarządzanie

jednorodnością środowisk

● korzystaj z chmury i jej możliwości

● naucz się AWS CLI ;D

● database refactoring

Database refactoring

● baza danych musi zawsze wspierać wersje

N i N-1 aplikacji

● cel: zero downtime deployments

● http://databaserefactoring.com/ - gotowe przepisy

Database refactoring

Dzięki za uwagę!Pytania?