How 2 deploy 5 times per day | Continuos deployment

Preview:

DESCRIPTION

special for Code'N'Coffee #4

Citation preview

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

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

Про мене

Debitoor.com

Hvz.kiev.ua

eagleeye_s

eagleeye

Ахтунг!

2 дева

2 деви + git rebase

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

SCRUM

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

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

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

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

Master -> playground.xxx.com

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

8 девів – master + release

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

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

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

еееее…

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

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

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

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

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

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

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

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

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

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

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

Давайте

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

(5 раз в день)

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

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

Branches

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

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

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

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

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

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

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

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

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

master -> featureBranch

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

git merge featureBranch - -squash

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

Як перевірити, чи девелопер змерджив 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

Переваги

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

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

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

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

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

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

І це працює!

Recommended