21
Continuous deployment, або Як деплоїти 5 раз за день Андрій Шумада

How 2 deploy 5 times per day | Continuos deployment

Embed Size (px)

DESCRIPTION

special for Code'N'Coffee #4

Citation preview

Page 1: How 2 deploy 5 times per day | Continuos deployment

Continuous deployment, абоЯк деплоїти 5 раз за день

Андрій Шумада

Page 2: How 2 deploy 5 times per day | Continuos deployment

Про мене

Debitoor.com

Hvz.kiev.ua

eagleeye_s

eagleeye

Page 3: How 2 deploy 5 times per day | Continuos deployment

Ахтунг!

Page 4: How 2 deploy 5 times per day | Continuos deployment

2 дева

Page 5: How 2 deploy 5 times per day | Continuos deployment

2 деви + git rebase

Page 6: How 2 deploy 5 times per day | Continuos deployment

Стране нужна … ?

Page 7: How 2 deploy 5 times per day | Continuos deployment
Page 8: How 2 deploy 5 times per day | Continuos deployment

SCRUM

Пул задач на 2 тижні

Реліз кожних 2 тижні, або більше

Всі працюють в одній вітці (master)

Стабильность -> release

Master -> playground.xxx.com

Release -> staging.xxx.com -> xxx.com

Page 9: How 2 deploy 5 times per day | Continuos deployment

8 девів – master + release

Page 10: How 2 deploy 5 times per day | Continuos deployment

А як насправді?

Реліз запланований на день Х

Зарелізились в день Х + 10

Page 11: How 2 deploy 5 times per day | Continuos deployment

еееее…

Page 12: How 2 deploy 5 times per day | Continuos deployment

Чого затягується реліз?

Трабли після merge release -> master

Під кінець спрінта хтось сів рефакторити (фотка мене)

Фіча велика, не піддається розбиттю на декілька спринтів

Переоцінили свої сили

Спочатку недооціинли свої сили.. А потім переоцінили їх…

Хтось щось поламав.. Всі чекають..

Мокапи помінялись під кінець спрінта

Page 13: How 2 deploy 5 times per day | Continuos deployment

Всі чекають..

..або пилять наступний спрінт в master

…реліз затягується..

Page 14: How 2 deploy 5 times per day | Continuos deployment

Давайте

Релізитись частіше

(5 раз в день)

Не мішати один одному

Не чекати один одного

Page 15: How 2 deploy 5 times per day | Continuos deployment

Branches

Page 16: How 2 deploy 5 times per day | Continuos deployment

Основні принципи

Одна фіча – один бранч, в одному пул реквесті

При конфліктах – master завжди правий

В мастер попадають бранчі в вигляді одного коміта (--squash) - легко ревертити

Вітка завжди повинна містити останній мастер

QA – тестити треба завжди останній master + feature

В рамках однієї бранчі працювати в –rebase режимі

Page 17: How 2 deploy 5 times per day | Continuos deployment

Master завжди правий

Після кожного релізу

master -> featureBranch

Page 18: How 2 deploy 5 times per day | Continuos deployment

Як розібратись що ревертити?

git merge featureBranch - -squash

git commit –m ‘New feature, fixes #43’

Page 19: How 2 deploy 5 times per day | Continuos deployment

Як перевірити, чи девелопер змерджив master?

#!/bin/sh

echo 'detecting latest master..'

localHistory=`git log -n 50 --pretty=format:"%H"`

latestMaster=`git ls-remote origin master | awk '{print $1;}'`

echo "latest master: $latestMaster"

if echo "$localHistory" | grep -q "$latestMaster"; then

echo "branch has latest master"

else

echo "branch doesn't have latest master"

exit 1

fi

Page 20: How 2 deploy 5 times per day | Continuos deployment

Переваги

Роблю фічу скільки хочу, час ніколи не піджимає

Легше знайти винного..

В разі проблем на продакшені відкатується лише одна фіча

Не блокуються і не відкатуються інші фічі..

Фічі появляються швидше в продакшені

Область тестування завжди обмежена

Page 21: How 2 deploy 5 times per day | Continuos deployment

І це працює!