od zera do farmera
TRANSCRIPT
![Page 1: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/1.jpg)
Od zera do farmera...
![Page 2: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/2.jpg)
1999666 \m/-.-\m/
Martin Fowler
Kent Beck
Continous Integration
![Page 3: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/3.jpg)
Czyli jak uprawiać soft :)Od zera do farmera...
Ona już umie to robić!
![Page 4: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/4.jpg)
Ale, oco chodzi?
Jeden program
Jeden kod
Uruchom go wszędzie!
![Page 5: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/6.jpg)
Build Farm
![Page 7: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/7.jpg)
Do czego służy Build Farm?
Cross Platform Development
Cross Platform Continous Integration
Distributed Compilation
![Page 8: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/11.jpg)
Jak zostać farmerem?
Ktoś musi za nas robić robote :)
![Page 12: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/12.jpg)
Niewolnicy półautomatyczni:
Niewolnicy automatyczni:
Niewolnictwo w XXI wieku...
![Page 13: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/13.jpg)
Koszty?
- Energia
- Szum
- Miejsce
- Wiecej miejsca (w przypadku studentów)
Czy da sie taniej? :<
![Page 14: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/14.jpg)
Ba! Da sie taniej!
Wirtualni Niewolnicy!
![Page 15: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/15.jpg)
The ArchitectureWirtualni niewolnicy
Server CI:- Cruise Controll- Hudson- Pulse
Realni niewolnicy :)
![Page 16: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/16.jpg)
Jak założyć plantacje w domu:
Ficzery Bugi
![Page 17: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/18.jpg)
Czy potrzebuje monitora do testowania?
NIET!VNC twym pasterzem, nie brak Ci niczego!
![Page 19: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/20.jpg)
Jak wygląda Hudson?
Lista projektówLista niewolników
![Page 21: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/24.jpg)
Znani plantatorzy
i wielu, wielu innych!
![Page 25: Od Zera do Farmera](https://reader034.vdocuments.site/reader034/viewer/2022042716/55abb5751a28abb33c8b4621/html5/thumbnails/25.jpg)