Od Zera do Farmera
-
Upload
filip-debowski -
Category
Technology
-
view
1.150 -
download
2
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!