Proces ciągłej integracji Git + Gerrit + Jenkins. autor : Maciej Pieszała



Podobne dokumenty
Open Source w służbie developerom

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Program szkolenia: Continuous Integration i Git

Systemy zarządzania wersjami

Programowanie zespołowe

Git rozproszony system kontroli wersji

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

GIT. Rozproszony system kontroli wersji

Programowanie I

Ciągłe dostarczanie oprogramowania : kompletny przewodnik / Eberhard Wolff. Gliwice, cop Spis treści

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

Systemy Kontroli Wersji

Co zostanie wypisane na ekranie? (1)

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

REFERAT PRACY DYPLOMOWEJ

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Jednolite zarządzanie użytkownikami systemów Windows i Linux

Środowisko programisty. Środowisko programisty 1/35

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

The current software tools for the JEE platform

Narzędzia programistyczne - GIT

Ciągła Integracja. Krystian Kaczor

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Dokumentacja kompilacji źródeł aplikacji 1.0

Zapytanie ofertowe

Programowanie Komponentowe WebAPI

Michał Olejnik. 22 grudnia 2009

Win Admin Replikator Instrukcja Obsługi

Program szkolenia: Jenkins - Continuous Integration

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Tworzenie kopii zapasowych i archiwalnych

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Microsoft Test Manager

Instrukcja laboratoryjna cz.3

Sposób funkcjonowania

Globalne referencje dla idempiere Business Suite

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Session Based Testing Czyli eksploracyjne testowanie w sesjach. Karolina Bilewska PapryQArz

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Wybrane narzędzie do zarządzania błędami - Bugzilla. Krzysztof Palinka Konrad Błaszkiewicz grupa nr 27

Client Management Solutions i Mobile Printing Solutions

Tester oprogramowania 2014/15 Tematy prac dyplomowych

OSGi Agata Hejmej

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Wykorzystanie regionalnej biblioteki cyfrowej do tworzenia repozytorium instytucjonalnego

Platforma GitHub. 1 Cel laboratoriów. 2 GitHub. 2.1 Git. źródeł.

HP Service Anywhere Uproszczenie zarządzania usługami IT

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Plan Testów Systemu SOS

Usprawnienie procesu zarządzania konfiguracją. Marcin Piebiak Solution Architect Linux Polska Sp. z o.o.

Client Management Solutions i Mobile Printing Solutions

System kontroli wersji git

Środowisko NetBeans. Paweł Boguszewski

Git i platforma GitHub

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

KARTA KURSU. Administracja i integracja systemów operacyjnych

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Rozwiązanie Compuware dynatrace

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

Artifactory Power Pack Pro w procesie wytwarzania oprogramowania. Artifactory Power Pack Plugins Artifactory License Control

Bezpieczeństwo systemów i lokalnej sieci komputerowej

Bezpieczeństwo systemów komputerowych

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: Aukcjomat

Pytania i wyjaśnienia treści Specyfikacji Istotnych Warunków Zamówienia

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Warsztat: "Automatyzacja testów (JAVA) - od podstaw"

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera :

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Zmiana sposobu dostarczania aplikacji wspierających funkcje państwa

Git - podstawy. Błażej Kowalczyk. Koło Naukowe Robotyków KoNaR. 7 listopada 2014

Testowanie mutacyjne

egroupware czy phpgroupware jest też mniej stabilny.

Pla$orma edukacyjna czy to wystarczy? Przygotował: Artur Dyro, Prezes Learnetic S.A.

Rozwiązanie Compuware Data Center - Real User Monitoring

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

Automatyzacja Testowania w WEB 2.0

Program szkolenia: JavaScript Craftsmanship

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Client Management Solutions i Universal Printing Solutions

Linux -- u mnie działa!

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Bezpieczeństwo systemów internetowych

Zaliczenie. Zaliczenie na ocenę Dla grupy kursów zaznaczyć X kurs końcowy (X) Liczba punktów ECTS 3 w tym liczba punktów ECTS

OMEGA-PSIR na Uniwersytecie Gdańskim

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania.

Testowanie oprogramowania

Praca przejściowa. Sklep internetowy. Tomasz Konopelski ZIP50-IWZ Katowice 2006

SYSTEM WSMS ZARZĄDZANIE STANDARDEM STACJI ROBOCZYCH. tel: +48 (032)

Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

Referat pracy dyplomowej

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

SHAREPOINT SHAREPOINT QM SHAREPOINT DESINGER SHAREPOINT SERWER. Opr. Barbara Gałkowska

Continuous Integration i jakość kodu. Michał Prajs

Transkrypt:

Proces ciągłej integracji Git + Gerrit + Jenkins autor : Maciej Pieszała

Plan prezentacji definicja procesu ciągłej integracji zalecane praktyki plusy i minusy procesu ciągłej integracji narzędzia: git gerrit jenkins podsumowanie bibliografia

definicja procesu ciągłej integracji problemy w pracy nad projektami: duże repozytorium kodu, wielu programistów równolegle pracujących nad projektem, jak wdrożyd skooczony projekt, szybki rozwój aplikacji a duża liczba błędów, automatyzacja procesów

definicja procesu ciągłej integracji Ciągła integracja to praktyka tworzenia oprogramowania, w której członkowie zespołu często integrują swoją pracę z całością projektu/aplikacji, zazwyczaj co najmniej raz dziennie - co prowadzi do wielu integracji dziennie. Każda integracja jest weryfikowane przez automatyczne budowania (w tym testy oraz review kodu) w celu wykrycia błędów integracji, tak szybko jak to możliwe. W wielu zespołach okazuje się, że podejście to prowadzi do znacznego zmniejszenia problemów z integracją i pozwala na tworzenie spójnego oprogramowania w szybszym tempie eliminując jednocześnie wiele błędów.

zalecane praktyki review kodu utrzymanie kodu w repozytorium dbanie o stan repozytorium automatyczne wykonywanie builda uruchamianie testów jednostkowych i funkcjonalnych codzienna synchronizacja kodu każda zmiana powinna podlegad kompilacji środowisko testowe odwzorowujące środowisko produkcyjne publiczne pokazywanie wyników kompilacji automatyczne wdrażanie

zalety po wykryciu błędu istnieje łatwy sposób powrotu do poprawnego kodu, bez marnowania czasu, debugowania, programiści wykrywają i rozwiązują problemy integracji w sposób ciągły unikając chaosu w momencie wdrożenia, wczesne ostrzeganie o złym / niezgodnym kodzie, wczesne ostrzeganie przed konfliktami w zmianach, natychmiastowe i automatyczne wykonywanie testów jednostkowych na wszystkich zmianach, łatwe znalezienie zmiany, w której jest błąd i wyeliminowanie go, stała dostępnośd najaktualniejszej zbudowanej wersji, natychmiastowe powiadamianie programistów o wpływie jaki wywiera ich zmiana na całośd systemu, wymaganie częstej kontroli kodu zmusza programistów do tworzenia modularnego, mniej skomplikowanego kodu, statystyki automatycznie generowane w procesie zachęcają programistów do większej dbałości o jakośd kodu.

wady nakład pracy wymagany do wstępnej konfiguracji narzędzi, utrzymanie i zmiany konfiguracji w narzędziach, wymagane dobrze rozwinięte archiwum testów, duże pokrycie kodu testami jednostkowymi, testy funkcjonalne, wysoka jakośd testów, refaktoryzacja dużej funkcjonalności systemu może byd kłopotliwa ze względu na szybko zmieniający się kod, koszt sprzętu wymaganego do automatycznego budowania i testowania aplikacji.

git Git rozproszony system kontroli wersji. Stworzył go Linus Torvalds jako narzędzie wspomagające rozwój jądra Linux. Git stanowi wolne oprogramowanie i został opublikowany na licencji GNU GPL w wersji 2.

git vs svn - różnice Git jest znacznie szybszy niż Subversion, Subversion pozwala sprawdzid tylko poddrzewa repozytorium Git wymaga klonu całego repozytorium (w tym historii) i utworzenia kopii roboczej, która odzwierciedla co najmniej podzbiór elementów pod kontrolą wersji, Git repozytoria są znacznie mniejsze niż Subversion (projektu Mozilla, 30x mniejsze), Git został zaprojektowany, aby byd w pełni rozproszony od samego początku, pozwalając jednocześnie programiście na pełną kontrolę w lokalnym repo, branche Git są prostsze i wymagają mniej zasobów niż ciężkie Subversion, branche Git posiadają całą historię zmian,

git vs svn - różnice Git zapewnia lepszą kontrolę nad łączeniem zmian, formaty plików w Gitcie są prostsze, co ułatwia naprawę repo i powoduje że błędy zdarzają się bardzo rzadko, tworzenie kopii zapasowych repozytoriów Subversion jest potencjalnie prostsze (centralne repo), Subversion UI jest bardziej dojrzały niż w Git, przeglądanie wersji w Subversion jest prostsze, ponieważ wykorzystuje kolejne numery wersji (1,2,3,..); Git używa hashy SHA-1. Cofanie wersji w Git jest łatwe dzięki możliwości użycia "^" w składni, ale nie jest łatwo iśd do przodu.

git vs svn plusy gita charakter rozproszony kontrola dostępu praca w branchach wydajnośd (szybkośd wykonywania operacji) wymaganie mniejszej przestrzeni dyskowej automatyczna konwersja zakooczenia linii

git vs svn plusy svna dojrzałośd interfejsu użytkownika, pojedyncze repozytorium, możliwośd pobrania i pracy na części repozytorium, krótsze i przewidywalne numery wersji

gerrit Gerrit to internetowy system przeglądu kodu, ułatwia osobom dokonującym przeglądu pracę z projektami wykorzystującymi system kontroli wersji Git. Gerrit ułatwia wyświetlanie zmian w sposób side-by-side, pozwala na umieszczanie komentarzy w kodzie oraz ocenę zmiany przez sprawdzającego. Gerrit umożliwia kontrolę rezultatów pracy w dużym zespole programistów, poprzez możliwośd wymuszenia zatwierdzenia zmiany przez opiekuna danej funkcjonalności. Pozwala na bardziej scentralizowane wykorzystanie Gita.

gerrit

jenkins Jenkins, znany wcześniej jako Hudson, jest oprogramowaniem open source ciągłej integracji (CI), narzędzie napisane w Javie. Projekt zmienił nazwę po sporze z Oracle, który rości sobie prawo do znaku towarowego i nazwy Hudson. Jenkins zapewnia ciągłą integrację usług rozwoju oprogramowania, głównie w języku programowania Java. Jest to serwerowy system, który działa w kontenerze serwletów takim jak Apache Tomcat. Integruje się z systemami kontroli wersji, w tym CVS, Subversion, Git i ClearCase. Może wykonywad skrypty związane z Apache Ant i Apache Maven, jak również dowolne skrypty powłoki i polecenia systemu Windows. Głównym twórcą Jenkins jest Kohsuke Kawaguchi. Opublikowane na Licencji MIT, Jenkins jest wolnym oprogramowaniem.

jenkins Buildy można uruchomid za pomocą różnych środków, w tym wywołane przez commita w system kontroli wersji, planowania poprzez mechanizm typu cron, wyzwalanie gdy inne wersje zakooczyły działanie oraz wywołując określony URL. Istnieje możliwośd integracji np. z gerritem poprzez specjalne pluginy. Około 2007 r. powstał projekt jako popularna alternatywa dla CruiseControl i innych open-source serwerów o podobnym charakterze. Na konferencji JavaOne w maju 2008 r. program został zwycięzcą Duke's Choice Award w kategorii Solutions Developer.

jenkins

inne narzędzia AnthillPro - serwer ciągłej integracji Urbancode, Apache Continuum - serwer ciągłej integracji wsparcie Apache Maven i Apache Ant. Obsługa CVS, Subversion, Ant, Maven, i skryptów powłoki, Apache Gump - narzędzie ciągłej integracji Apache, Bamboo - serwer ciągłej integracji Atlassian Software Systems, Buildbota oparty na Python / Twisted system ciągłej integracji, BuildMaster narzędzie zarządzania cyklem życia aplikacji i ciągłej integracji firmy Inedo, CABIE automatyczne cykliczne buildy oraz integracja środowisk - open source, napisany w języku Perl, współpracuje z CVS, Subversion, AccuRev, Bazaar i Perforce, Cascade - narzędzie ciągłej integracji, zapewnia możliwość tworzenia punktów kontrolnych do tworzenia i testowania zmian zanim zostaną one commitowane, CruiseControl oparty na Java framework dla procesu ciągłego budowania, CruiseControl.NET oparty na. NET automatyczny serwer ciągłej integracji, CruiseControl.rb - Lekki, oparty na Ruby serwer ciągłej integracji, który może budować kod, nie tylko Ruby, rozpowszechniony na licencji Apache 2.0, ElectricCommander rozwiązanie dla procesu ciągłej integracji oraz zarządzania wdrożeniami firmy Electric Cloud, FinalBuilder Server - własne narzędzie do automatycznego budowania aplikacji oraz serwer ciągłej integracji firmy VSoft Technologies Go narzędzie automatycznego budowania, integracji i wdrażania oparty na paradygmatach agile firmy Thoughtworks Software Configuration and Library Manager- oprogramowanie do zarządzania konfiguracją systemu z / OS firmy IBM Rational Software QuickBuild - serwer ciągłej integracji z darmową edycją, oferuje zarządzanie cyklem eksploatacji i weryfikacją pre-commit. Team Foundation Server - serwer ciągłej integracji i repozytorium kodu źródłowego firmy Microsoft Tinderbox - Mozilla produkt napisany w języku Perl

Bibliografia http://www.martinfowler.com/articles/continuousintegration.html http://en.wikipedia.org/wiki/continuous_integration http://en.wikipedia.org/wiki/comparison_of_continuous_integration_s oftware https://git.wiki.kernel.org/index.php/gitsvncomparison http://jenkins-ci.org/ http://code.google.com/p/gerrit/

Dziękuję za uwagę pytania???