5 grudnia 2011
Wstęp Plan prezentacji Agenda Dyskusja problemu
Wstęp Plan prezentacji Agenda Dyskusja problemu Etapy
Wstęp Plan prezentacji Agenda Dyskusja problemu Etapy Przykłady
Wstęp Plan prezentacji Agenda Dyskusja problemu Etapy Przykłady Pytania
Dyskusja problemu Projekt?
Dyskusja problemu Projekt? Realizujemy projekt Jakie narzędzia są niezbędne w celu utworzenia aplikacji?
Dyskusja problemu Projekt? Realizujemy projekt Jakie narzędzia są niezbędne w celu utworzenia aplikacji? Wygodnie Które z nich są niezbędne, by tworzenie programu odbywało się sprawnie i była nad nim kontrola?
Dyskusja problemu Projekt? Realizujemy projekt Jakie narzędzia są niezbędne w celu utworzenia aplikacji? Wygodnie Które z nich są niezbędne, by tworzenie programu odbywało się sprawnie i była nad nim kontrola? W zespole Które z nich zapewniają sprawną współpracę w zespole?
Wersjonowanie Oczekiwania Oczekiwania Bezpieczeństwo kodu
Wersjonowanie Oczekiwania Oczekiwania Bezpieczeństwo kodu Możliwość powrotu (porównania) wersji poprzedniej
Wersjonowanie Oczekiwania Oczekiwania Bezpieczeństwo kodu Możliwość powrotu (porównania) wersji poprzedniej Współbieżna praca
Wersjonowanie Oczekiwania Oczekiwania Bezpieczeństwo kodu Możliwość powrotu (porównania) wersji poprzedniej Współbieżna praca rozwiązywanie konfliktów
Wersjonowanie Oczekiwania Oczekiwania Bezpieczeństwo kodu Możliwość powrotu (porównania) wersji poprzedniej Współbieżna praca rozwiązywanie konfliktów Różne wersje tego samego programu
Wersjonowanie Rozwiązania Rozwiązania Scentralizowane
Wersjonowanie Rozwiązania Rozwiązania Scentralizowane Rozproszone
Wersjonowanie Rozwiązania Scentralizowane pełna kontrola uprawnień
Wersjonowanie Rozwiązania Scentralizowane pełna kontrola uprawnień pewność, że kod znajduje się w jednym miejscu
Wersjonowanie Rozwiązania Scentralizowane pełna kontrola uprawnień pewność, że kod znajduje się w jednym miejscu brak możliwości wersjonowania kodu offline
Wersjonowanie Rozwiązania Scentralizowane pełna kontrola uprawnień pewność, że kod znajduje się w jednym miejscu brak możliwości wersjonowania kodu offline SVN
Wersjonowanie Rozwiązania Scentralizowane pełna kontrola uprawnień pewność, że kod znajduje się w jednym miejscu brak możliwości wersjonowania kodu offline SVN CVS
Wersjonowanie Rozwiązania Rozproszone Możliwość wersjonowania kodu offline Utrudnione zarządzanie uprawnieniami
Wersjonowanie Rozwiązania Rozproszone Możliwość wersjonowania kodu offline Utrudnione zarządzanie uprawnieniami Podszywanie się?
Wersjonowanie Rozwiązania Rozproszone Możliwość wersjonowania kodu offline Utrudnione zarządzanie uprawnieniami Podszywanie się? Konflikty
Wersjonowanie Rozwiązania Rozproszone Możliwość wersjonowania kodu offline Utrudnione zarządzanie uprawnieniami Podszywanie się? Konflikty Mercurial
Wersjonowanie Rozwiązania Rozproszone Możliwość wersjonowania kodu offline Utrudnione zarządzanie uprawnieniami Podszywanie się? Konflikty Mercurial Bazaar
Wersjonowanie Rozwiązania Rozproszone Możliwość wersjonowania kodu offline Utrudnione zarządzanie uprawnieniami Podszywanie się? Konflikty Mercurial Bazaar Git
Wersjonowanie Rozwiązania Git - serwer Git (filesystem)
Wersjonowanie Rozwiązania Git - serwer Git (filesystem) Gitolite
Wersjonowanie Rozwiązania Git - serwer Git (filesystem) Gitolite Gitosis
Wersjonowanie Rozwiązania Gitolite Rozbudowane zarządzanie uprawnieniami
Wersjonowanie Rozwiązania Gitolite Rozbudowane zarządzanie uprawnieniami Nie wymaga specjalnych uprawnień konto SSH w systemie
Wersjonowanie Rozwiązania Gitolite Rozbudowane zarządzanie uprawnieniami Nie wymaga specjalnych uprawnień konto SSH w systemie Repozytorium zarządzane przez repozytorium
Wersjonowanie Rozwiązania Gitolite Rozbudowane zarządzanie uprawnieniami Nie wymaga specjalnych uprawnień konto SSH w systemie Repozytorium zarządzane przez repozytorium
Wersjonowanie Rozwiązania Instalujemy Gitolite http://progit.org/book/ch4-8.html
Wersjonowanie Rozwiązania Instalujemy Gitolite http://progit.org/book/ch4-8.html http://github.com
Wersjonowanie Rozwiązania Instalujemy Gitolite http://progit.org/book/ch4-8.html http://github.com https://bitbucket.org/
Zadania + wiedza Zadania + wiedza Oczekiwania Backlog (zarządzanie funkcjami)
Zadania + wiedza Zadania + wiedza Oczekiwania Backlog (zarządzanie funkcjami) Bugtrack (zarządzanie błędami)
Zadania + wiedza Zadania + wiedza Oczekiwania Backlog (zarządzanie funkcjami) Bugtrack (zarządzanie błędami) Wiedza na temat projektu (np. architektura, decyzje projektowe)
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Trac Trac is an enhanced wiki and issue tracking system for software development projects.
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Trac Trac is an enhanced wiki and issue tracking system for software development projects. Tworzenie ticketów
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Trac Trac is an enhanced wiki and issue tracking system for software development projects. Tworzenie ticketów Integracja z repozytoriami
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Trac Trac is an enhanced wiki and issue tracking system for software development projects. Tworzenie ticketów Integracja z repozytoriami Wiki
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Trac Trac is an enhanced wiki and issue tracking system for software development projects. Tworzenie ticketów Integracja z repozytoriami Wiki Pluginy
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Trac Trac is an enhanced wiki and issue tracking system for software development projects. Tworzenie ticketów Integracja z repozytoriami Wiki Pluginy Python
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine Tworzenie ticketów
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine Tworzenie ticketów Integracja z repozytoriami
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine Tworzenie ticketów Integracja z repozytoriami Wiki
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine Tworzenie ticketów Integracja z repozytoriami Wiki Kalendarz
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine Tworzenie ticketów Integracja z repozytoriami Wiki Kalendarz Wykresy (diagramy) Gantta
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine Tworzenie ticketów Integracja z repozytoriami Wiki Kalendarz Wykresy (diagramy) Gantta Pluginy
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine Tworzenie ticketów Integracja z repozytoriami Wiki Kalendarz Wykresy (diagramy) Gantta Pluginy Ruby
Zadania + wiedza Zadania + wiedza Rozwiązania OpenSource Redmine Tworzenie ticketów Integracja z repozytoriami Wiki Kalendarz Wykresy (diagramy) Gantta Pluginy Ruby http://demo.redmine.org/
Zadania + wiedza Zadania + wiedza Instalacja redmine 1.2 Instalujemy rvm: bash < <(c u r l s h t t p s : / /raw. github.com/wayneeseguin /rvm/master / b i n s c r i p t s /rvm i n s t a l l e r )
Zadania + wiedza Zadania + wiedza Instalacja redmine 1.2 Instalujemy rvm: bash < <(c u r l s h t t p s : / /raw. github.com/wayneeseguin /rvm/master / b i n s c r i p t s /rvm i n s t a l l e r ) Wyłączamy i włączamy terminal, następnie instalujemy ruby: rvm i n s t a l l 1. 8. 7 rvm use 1. 8. 7 d e f a u l t rvm use 1. 8. 7 # j e z e l i rubygems >= 1. 7 rvm rubygems 1. 6. 2 # j e z e l i r a k e 0. 9. x gem u n i n s t a l l r a k e v 0. 9. 2 gem i n s t a l l r a k e v =0.8.7 gem i n s t a l l r a i l s v =2.3.11 svn co http : / / redmine. r u b y f o r g e. org /svn /branches /1.2 s t a b l e redmine 1.2 # wchodzimy do k a t a l o g u z redmine # w katalogu config modyfikujemy databases. yml. example oraz configuration. yml. example r a k e g e n e r a t e s e s s i o n s t o r e RAILS ENV=production rake db : migrate RAILS ENV=p r o d u c t i o n rake redmine : l o a d d e f a u l t d a t a ruby s c r i p t / s e r v e r w e b r i c k e p r o d u c t i o n http://www.redmine.org/projects/redmine/wiki/ RedmineInstall
Jakość Automatyczne zarządzanie jakością Oczekiwania
Jakość Automatyczne zarządzanie jakością Oczekiwania Kod w repozytorium kompiluje się
Jakość Automatyczne zarządzanie jakością Oczekiwania Kod w repozytorium kompiluje się Kod stabilny działa poprawnie
Jakość Automatyczne zarządzanie jakością Oczekiwania Kod w repozytorium kompiluje się Kod stabilny działa poprawnie Wykrywanie błędów programistycznych
Jakość Automatyczne zarządzanie jakością Wymagania
Jakość Automatyczne zarządzanie jakością Wymagania Pokrycie kodu testami
Jakość Automatyczne zarządzanie jakością Wymagania Pokrycie kodu testami Kompilacja
Jakość Automatyczne zarządzanie jakością Wymagania Pokrycie kodu testami Kompilacja, albo jeszcze lepsze pokrycie kodu testami
Jakość Automatyczne zarządzanie jakością Jenkins Ciągła integracja
Jakość Automatyczne zarządzanie jakością Jenkins Ciągła integracja Obserwuje repozytorium
Jakość Automatyczne zarządzanie jakością Jenkins Ciągła integracja Obserwuje repozytorium Uruchamia builda po zmianach
Jakość Automatyczne zarządzanie jakością Jenkins Ciągła integracja Obserwuje repozytorium Uruchamia builda po zmianach Obserwuje rezultat builda
Jakość Ręczne zarządzanie jakością Oczekiwania Kod w repozytorium jest przyzwoitej jakości
Jakość Ręczne zarządzanie jakością Oczekiwania Kod w repozytorium jest przyzwoitej jakości Wiedza programistyczna wymieniana w zespole
Jakość Ręczne zarządzanie jakością Systemy do instpekcji kodu Inspekcja kodu (code review) polega na tym, iż wybrany programista(ści) analizuje przesłany kod.
Jakość Ręczne zarządzanie jakością Systemy do instpekcji kodu Inspekcja kodu (code review) polega na tym, iż wybrany programista(ści) analizuje przesłany kod. Efekty: Znajomość organizacji projektu, wymiana wiedzy programistycznej
Jakość Ręczne zarządzanie jakością Systemy do instpekcji kodu Inspekcja kodu (code review) polega na tym, iż wybrany programista(ści) analizuje przesłany kod. Efekty: Znajomość organizacji projektu, wymiana wiedzy programistycznej Lepsza jakość kodu
Jakość Ręczne zarządzanie jakością Systemy do instpekcji kodu Inspekcja kodu (code review) polega na tym, iż wybrany programista(ści) analizuje przesłany kod. Efekty: Znajomość organizacji projektu, wymiana wiedzy programistycznej Lepsza jakość kodu Mniejsza ilość błędów
Jakość Ręczne zarządzanie jakością Systemy do instpekcji kodu Inspekcja kodu (code review) polega na tym, iż wybrany programista(ści) analizuje przesłany kod. Efekty: Znajomość organizacji projektu, wymiana wiedzy programistycznej Lepsza jakość kodu Mniejsza ilość błędów Poprawa umiejętności programistycznych
Jakość Ręczne zarządzanie jakością Systemy do instpekcji kodu Inspekcja kodu (code review) polega na tym, iż wybrany programista(ści) analizuje przesłany kod. Efekty: Znajomość organizacji projektu, wymiana wiedzy programistycznej Lepsza jakość kodu Mniejsza ilość błędów Poprawa umiejętności programistycznych Kiedy?
Jakość Ręczne zarządzanie jakością Systemy do instpekcji kodu Inspekcja kodu (code review) polega na tym, iż wybrany programista(ści) analizuje przesłany kod. Efekty: Znajomość organizacji projektu, wymiana wiedzy programistycznej Lepsza jakość kodu Mniejsza ilość błędów Poprawa umiejętności programistycznych Kiedy? Kod już jest w repozytorium
Jakość Ręczne zarządzanie jakością Systemy do instpekcji kodu Inspekcja kodu (code review) polega na tym, iż wybrany programista(ści) analizuje przesłany kod. Efekty: Znajomość organizacji projektu, wymiana wiedzy programistycznej Lepsza jakość kodu Mniejsza ilość błędów Poprawa umiejętności programistycznych Kiedy? Kod już jest w repozytorium Kod jeszcze nie znajduje się w repozytorium
Jakość Ręczne zarządzanie jakością Rozwiązania Zależą od repozytorium, które stosujemy
Jakość Ręczne zarządzanie jakością Rozwiązania Zależą od repozytorium, które stosujemy Przesyłanie mailem?
Jakość Ręczne zarządzanie jakością Rozwiązania Zależą od repozytorium, które stosujemy Przesyłanie mailem? Przeglądanie za pomocą dedykowanej aplikacji
Jakość Ręczne zarządzanie jakością Gerrit Przegląd kodu przed umieszczeniem we właściwym repozytorium
Jakość Ręczne zarządzanie jakością Gerrit Przegląd kodu przed umieszczeniem we właściwym repozytorium Instalacja gerrita: java -jar gerrit.war init
Jakość Ręczne zarządzanie jakością Gerrit Przegląd kodu przed umieszczeniem we właściwym repozytorium Instalacja gerrita: java -jar gerrit.war init Konfiguracja uprawnień
Jakość Ręczne zarządzanie jakością Gerrit Przegląd kodu przed umieszczeniem we właściwym repozytorium Instalacja gerrita: java -jar gerrit.war init Konfiguracja uprawnień Zdefiniowanie osób które mogą submitować sprawdzony kod
Jakość Ręczne zarządzanie jakością Gerrit Przegląd kodu przed umieszczeniem we właściwym repozytorium Instalacja gerrita: java -jar gerrit.war init Konfiguracja uprawnień Zdefiniowanie osób które mogą submitować sprawdzony kod Zdefiniowanie osób / automatów, które mogą weryfikować kod
Jakość Ręczne zarządzanie jakością Gerrit Przegląd kodu przed umieszczeniem we właściwym repozytorium Instalacja gerrita: java -jar gerrit.war init Konfiguracja uprawnień Zdefiniowanie osób które mogą submitować sprawdzony kod Zdefiniowanie osób / automatów, które mogą weryfikować kod Zdefiniowanie osób, które mogą przeprowadzać inspekcję
Jakość Ręczne zarządzanie jakością Gerrit Przegląd kodu przed umieszczeniem we właściwym repozytorium Instalacja gerrita: java -jar gerrit.war init Konfiguracja uprawnień Zdefiniowanie osób które mogą submitować sprawdzony kod Zdefiniowanie osób / automatów, które mogą weryfikować kod Zdefiniowanie osób, które mogą przeprowadzać inspekcję Przeglądanie za pomocą dedykowanej aplikacji
Jakość Ręczne zarządzanie jakością Gerrit - wysyłanie zmian - przykładowy schemat działania Gerrit emuluje repozytorium: g i t remote add g e r r i t ssh : / / u z y t k o w n i k @s e r w e r g e r r i t :29418/ nazwarepozytorium Utwórz feature-branch, czyli gałąź z funkcją: g i t branch moja nazwa brancha g i t checkout moja nazwa brancha
Jakość Ręczne zarządzanie jakością Gerrit - wysyłanie zmian - przykładowy schemat działania Gerrit emuluje repozytorium: g i t remote add g e r r i t ssh : / / u z y t k o w n i k @s e r w e r g e r r i t :29418/ nazwarepozytorium Utwórz feature-branch, czyli gałąź z funkcją: g i t branch moja nazwa brancha g i t checkout moja nazwa brancha Dokonaj i wcommituj zmiany g i t add. g i t commit m Wiadomosc
Jakość Ręczne zarządzanie jakością Gerrit - wysyłanie zmian - przykładowy schemat działania Gerrit emuluje repozytorium: g i t remote add g e r r i t ssh : / / u z y t k o w n i k @s e r w e r g e r r i t :29418/ nazwarepozytorium Utwórz feature-branch, czyli gałąź z funkcją: g i t branch moja nazwa brancha g i t checkout moja nazwa brancha Dokonaj i wcommituj zmiany g i t add. g i t commit m Wiadomosc Wyślij zmiany na serwer: g i t push g e r r i t moja nazwa brancha : r e f s / f o r / master
Jakość Ręczne zarządzanie jakością Gerrit - wysyłanie zmian - poprawki Znajdujemy się ciągle w naszym branchu, wprowadzamy nowe zmiany
Jakość Ręczne zarządzanie jakością Gerrit - wysyłanie zmian - poprawki Znajdujemy się ciągle w naszym branchu, wprowadzamy nowe zmiany Commitujemy nowe zmiany
Jakość Ręczne zarządzanie jakością Gerrit - wysyłanie zmian - poprawki Znajdujemy się ciągle w naszym branchu, wprowadzamy nowe zmiany Commitujemy nowe zmiany Złączamy zmiany do jednego commita: g i t r e b a s e i HEAD 2 # w drugim commicie ustawiamy squash # kopiujemy change i d z g e r r i t a do o p i s u commita
Jakość Ręczne zarządzanie jakością Gerrit - wysyłanie zmian - poprawki Znajdujemy się ciągle w naszym branchu, wprowadzamy nowe zmiany Commitujemy nowe zmiany Złączamy zmiany do jednego commita: g i t r e b a s e i HEAD 2 # w drugim commicie ustawiamy squash # kopiujemy change i d z g e r r i t a do o p i s u commita Wysyłamy zmiany na serwer
Artefakty Artefakty Osiągnięcie celu
Artefakty Artefakty Osiągnięcie celu Artefakt Niezależny produkt zapewniający wybraną funkcjonalność. Jar, dll, zip, rar.
Artefakty Artefakty Osiągnięcie celu Artefakt Niezależny produkt zapewniający wybraną funkcjonalność. Jar, dll, zip, rar. Publikacja artefaktu Starając się zapewnić stabilność kodu w repozytorium oraz jego jakość, możemy starać się automatycznie wydawać i/lub publikować artefakty.
Podsumowanie Inne Pominięte zagadnienia Użytkownicy - LDAP
Podsumowanie Inne Pominięte zagadnienia Użytkownicy - LDAP Build script Maven Zarządzanie zależnościami
Podsumowanie Inne Pominięte zagadnienia Użytkownicy - LDAP Build script Maven Zarządzanie zależnościami Fazy
Podsumowanie Inne Pominięte zagadnienia Użytkownicy - LDAP Build script Maven Zarządzanie zależnościami Fazy Złożona logika
Podsumowanie Inne Pominięte zagadnienia Użytkownicy - LDAP Build script Maven Zarządzanie zależnościami Fazy Złożona logika Rakefile (Rake)
Podsumowanie Inne Pominięte zagadnienia Użytkownicy - LDAP Build script Maven Zarządzanie zależnościami Fazy Złożona logika Rakefile (Rake) Makefile (make)
Podsumowanie Inne Pominięte zagadnienia Użytkownicy - LDAP Build script Maven Zarządzanie zależnościami Fazy Złożona logika Rakefile (Rake) Makefile (make) psake
Podsumowanie Podsumowanie Pytania
Podsumowanie Podsumowanie Pytania piotr@sepio.pl
Podsumowanie Podsumowanie Dziękuję Dziękuję za uwagę