Od Zera do Farmera

25
Od zera do farmera...

Transcript of Od Zera do Farmera

Page 1: Od Zera do Farmera

Od zera do farmera...

Page 2: Od Zera do Farmera

1999666 \m/-.-\m/

Martin Fowler

Kent Beck

Continous Integration

Page 3: Od Zera do Farmera

Czyli jak uprawiać soft :)Od zera do farmera...

Ona już umie to robić!

Page 4: Od Zera do Farmera

Ale, oco chodzi?

Jeden program

Jeden kod

Uruchom go wszędzie!

Page 5: Od Zera do Farmera

WTF is Continous Integration?

1. mantain code repository2. automate the build3. make the build self testing4. everyone commits the baseline every day5. every commit should be built6. keep the build fast7. test in a clone of the production environment8. make it easy to get the latest deliverables 9. everyone can see the result of the latest build

10. automate deployment

Page 6: Od Zera do Farmera

Build Farm

Page 7: Od Zera do Farmera

Do czego służy Build Farm?

Cross Platform Development

Cross Platform Continous Integration

Distributed Compilation

Page 8: Od Zera do Farmera

Cross Platform Development

- Kod źródłowy kompilowany na wiele platform(Win, Linux, Mac, ...)

- Testowanie na roznych architekturach CPU (np. endianess, i32, i64)

- Testowanie na roznych wersjach systemow operacyjnych(np. filesystem)

- Testowanie w roznych srodowiskach uruchomieniowych (libc, JVM, PHP, Ruby, etc...)

- Kompilacja na różnych kompilatorach(np. long double, błędy w kompilatorach)

Page 9: Od Zera do Farmera

Cross Platform Continous Integration

- Automatyczne budowanie paczek dla roznych systemów

- Support różnych platform

- Testy jednostkowe w róznych warunkach

- Testy aplikacji webowych na róznych przegladarkach (Selenium RC)

- Symulacja „warunków brzegowych” dla aplikacji (np. zbyt mała ilość RAM, mało miejsca na HDD, przepustowość sieci, etc)

- Testy wydajnościowe (apache benchmark, jmeter, etc..)

Page 10: Od Zera do Farmera

Distributed Compilation

- Kompilacja i budowanie projektu z użyciem wielu rdzeni co wielokrotnie zmniejsza czas oczekiwania na paczke gotową dla końcowego klienta

- Distcc (Unix)

- IncrediBuild (Windows)

Page 11: Od Zera do Farmera

Jak zostać farmerem?

Ktoś musi za nas robić robote :)

Page 12: Od Zera do Farmera

Niewolnicy półautomatyczni:

Niewolnicy automatyczni:

Niewolnictwo w XXI wieku...

Page 13: Od Zera do Farmera

Koszty?

- Energia

- Szum

- Miejsce

- Wiecej miejsca (w przypadku studentów)

Czy da sie taniej? :<

Page 14: Od Zera do Farmera

Ba! Da sie taniej!

Wirtualni Niewolnicy!

Page 15: Od Zera do Farmera

The ArchitectureWirtualni niewolnicy

Server CI:- Cruise Controll- Hudson- Pulse

Realni niewolnicy :)

Page 16: Od Zera do Farmera

Jak założyć plantacje w domu:

Ficzery Bugi

Page 17: Od Zera do Farmera

Składniki:

- CPU z 4 rdzeniami (im wiecej tym lepiej)

- 4 wiadra ramu (im wiecej tym lepiej) [1 wiadro = 1GB]

- Szybkie dyski (SATA minimum, SAS, a najlepiej macierz na FC ;)

- Hudson CI

- VirtualBox

- Buildery: ant, maven, phing, gnumake, cmake, scons, itd...

Page 18: Od Zera do Farmera

Czy potrzebuje monitora do testowania?

NIET!VNC twym pasterzem, nie brak Ci niczego!

Page 19: Od Zera do Farmera

Jak to będzie działać w praktyce?

1. Najpierw klepiesz kod i testy

2. Komitujesz do repozytorium

3. Hudson automatycznie sprawdza co zmieniłeś

4. Odpalaja się buildy na poszczególnych niewolnikach

5. Dostajesz wyniki (na stronie i na mailu).

Page 20: Od Zera do Farmera

Jak wygląda Hudson?

Lista projektówLista niewolników

Page 21: Od Zera do Farmera

Testowanie na wielu wersjach platformach:

- Projekt w PHP

- Różne wersje interpretera: 5.2.6, 5.2.17, 5.3.5

- MySQL i PostgreSQL naraz :)

Odpalone buildy

Dwa projekty naraz

Page 22: Od Zera do Farmera

Jedziemy po bandzie: Budowanie projektu w C++:- GCC 4 (linux 32bit), GCC 4 (fbsd 64bit), WinXP CygWin GCC 3, WinXP Visual Studio 2k8

- ant uruchamia cmake, który tworzy konfiguracje projektu pod dana platforme

Windows XP

Linux

FreeBSD

Page 23: Od Zera do Farmera

Wady i zalety Build Farmy:

- Pewność, że projekt zadziała tam gdzie zostanie uruchomiony

- Jakość kodu

- Latwe utrzymywanie kodu

- Brak duplikacji bibliotek (svn:externals)

- Wersjonowanie paczek (id buildu, id rewizji)

Zalety:

Wady:

- 50zł za prąd miesiecznie :<

- to jest jakies 20 piw :<

- Na serwerze mozna sobie postawic torrenta ;)

- Wyrywanie lasek na „Chodź do mnie, pokaże Ci moją build farmę...”

- koszt sprzetu i zasobów

- projekt musi być pokryty testami a pisanie testów zajmuje czas

- czas potrzebny na setup całej farmy

+

-

Page 24: Od Zera do Farmera

Znani plantatorzy

i wielu, wielu innych!

Page 25: Od Zera do Farmera