Od Zera do Farmera

Post on 19-Jul-2015

1.149 views 2 download

Tags:

Transcript of Od Zera do Farmera

Od zera do farmera...

1999666 \m/-.-\m/

Martin Fowler

Kent Beck

Continous Integration

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

Ona już umie to robić!

Ale, oco chodzi?

Jeden program

Jeden kod

Uruchom go wszędzie!

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

Build Farm

Do czego służy Build Farm?

Cross Platform Development

Cross Platform Continous Integration

Distributed Compilation

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)

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..)

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)

Jak zostać farmerem?

Ktoś musi za nas robić robote :)

Niewolnicy półautomatyczni:

Niewolnicy automatyczni:

Niewolnictwo w XXI wieku...

Koszty?

- Energia

- Szum

- Miejsce

- Wiecej miejsca (w przypadku studentów)

Czy da sie taniej? :<

Ba! Da sie taniej!

Wirtualni Niewolnicy!

The ArchitectureWirtualni niewolnicy

Server CI:- Cruise Controll- Hudson- Pulse

Realni niewolnicy :)

Jak założyć plantacje w domu:

Ficzery Bugi

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...

Czy potrzebuje monitora do testowania?

NIET!VNC twym pasterzem, nie brak Ci niczego!

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).

Jak wygląda Hudson?

Lista projektówLista niewolników

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

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

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

+

-

Znani plantatorzy

i wielu, wielu innych!