SlideShare a Scribd company logo
1 of 19
Continuous Integration
• Εισαγωγή – Τι σημαίνει συνεχής ολοκλήρωση;

• Γιατί χρειάζεται και πως εφαρμόζεται;

• Jenkins   CI – Τι είναι; Γιατί Jenkins;
• Εγκατάσταση / Βασική Παραμετροποίηση

•   Build Jobs basics
•   CI Best Practices



                                       OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Τι σημαίνει συνεχής ολοκλήρωση;
•   Agile (και όχι μόνο) πρακτική
•   Οι ενέργειες που γίνονται από τους developers σε
καθημερινά τακτά χρονικά διαστήματα ώστε οι
αλλαγές       που    κάνουν    στο        λογισμικό                  να
ενοποιούνται / ολοκληρώνονται με το υπόλοιπο
λογισμικό αυτοματοποιημένα και γρήγορα
•   Στηρίζεται στην κουλτούρα ότι από την 1 η μέρα
ενός project, αυτό θεωρείται παραγωγικό!


                                     OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Γιατί χρειάζεται;
•   Όλοι οι ενδιαφερόμενοι μπορούν να γνωρίζουν
ποια ζητήματα έχουν αντιμετωπιστεί σε ποιο build
και με ποιες αλλαγές στον κώδικα.
•   Όλοι οι ενδιαφερόμενοι έχουν εικόνα για την
ποιότητα και τα αποτελέσματα των ελέγχων που
υπάρχουν σε ένα σύστημα, καθώς και για πλήθος
ποιοτικών αποτελεσμάτων.


                               OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Γιατί χρειάζεται; (2)
•   Πάντα υπάρχει διαθέσιμη, μία σταθερή έκδοση
για έλεγχο, προς επίδειξη σε πελάτες, χωρίς να
χρειάζεται η παρέμβαση της ομάδας ανάπτυξης,
όποτε προκύπτει ανάλογη ανάγκη.
•   Αυξάνεται το αίσθημα ασφάλειας και σιγουριάς
απέναντι στο προϊόν εφόσον υπάρχει διαφάνεια
στις αυτοματοποιημένες διαδικασίες ανάπτυξης
και ελέγχου του συστήματος.


                               OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Πως εφαρμόζεται;




           OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Πως εφαρμόζεται; -
             Υποδομές(1)
•   Source Control Repository (Subversion, Git κτλ.)




                                   OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Πως εφαρμόζεται; -
          Υποδομές(1)
• Αυτοματοποιημένη Διαδικασία Build     (και όχι
μόνο)




                              OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Πως εφαρμόζεται; - Διαδικασία
•   Σωστά ορισμένη διαδικασία commit




                              OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Πως εφαρμόζεται; - Διαδικασία




                   OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Πως εφαρμόζεται; - Διασκέδαση

• ‘Αμεσο   Feedback με ποικίλους τρόπους




                               OTS SA, 2012 © Παπαπέτρου Πάτροκλος
•   OpenSource Continous Integration εργαλείο
γραμμένο σε Java
•   Δημιουργός : Koshuke Kawaguchi
•   Hudson μέχρι το Δεκέμβριο του 2010.
•   Ήρθε η Oracle, τα έκανε μαντάρα, ο Koshuke
έφυγε και πήρε μαζί του το παιδί του.
•Από τότε υπάρχουν :   Jenkins CI και Hudson

                               OTS SA, 2012 © Παπαπέτρου Πάτροκλος
•   Γιατί επιλέγουμε Jenkins και όχι Hudson;
     • Τεράστιο community
     • Εκατοντάδες open source plugins
     • Για λόγους ηθικής

• Γιατί δεν επιλέγουμε κάποιο εμπορικό πακέτο;

( π.χ. Confluence Bamboo )
     • Οικονομική στενότητα (προφανές)
     • Καλυπτόμαστε πλήρως από τον Jenkins

                                    OTS SA, 2012 © Παπαπέτρου Πάτροκλος
• Εγκατάσταση

     • Διαθέσιμη για όλα τα OS
     • Πολύ απλή σε Windows / Run as Service (
     http://mirrors.jenkins-ci.org/windows/latest)

•   Βασική Παραμετροποίηση
     • Εγκατάσταση / Ορισμός JDK
     • Εγκατάσταση / Ορισμός Maven
     • Εγκατάσταση / Ορισμός Ant

                                       OTS SA, 2012 © Παπαπέτρου Πάτροκλος
OTS SA, 2012 © Παπαπέτρου Πάτροκλος
• Τύποι   Build Jobs
      • Free style ( Ant Projects, PowerBuilder )
      • Maven 2/3 projects
      • Multi configuration
      • Monitor external job

•   Καταστάσεις Build Jobs
      • Success
      • Unstable
      • Failed
      • Running (Flashing με χρώμα από την κατάσταση του τελ. Build)
      • Disabled


                                                    OTS SA, 2012 © Παπαπέτρου Πάτροκλος
•   Βασική Παραμετροποίηση Build Jobs
     • Βασικά στοιχεία

     • Source Code Management

     • Build Triggers (Periodically, Poll SCM, μετά από άλλα
     projects, όταν γίνεται Build μία Snapshot dependency κτλ. )
     • Build (pre-steps, post-steps)

     • Post actions

     • Notifications


                                         OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Best Practices(1) – Build Jobs
•   Trunk Build
     • Trigger μετά από κάθε commit
     • Unit Tests Execution
     • Ολοκληρώνεται σε λιγότερο από 5’-10’
•   Nightly Build
     • Εκτελείται κάθε βράδυ (αν υπάρχουν
     αλλαγές)
     • Unit Tests / Integration Tests Execution
     • Deployments σε QA environments
     • Static Analysis / Quality Measures (Sonar)

                                  OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Best Practices(2) – Feedback
• Ενημέρωση όλων των εμπλεκόμενων
• Πότε;
    • Όταν «χαλάει» ένα Build
    • Όταν «επανέρχεται» ένα Build
• Γιατί;
    • Άμεση επιδιόρθωση του «χαλασμένου»
    Build + Κανείς δεν παίρνει τον «χαλασμένο»
    κώδικα τοπικά
    • Πράσινο φως για λήψη «διορθωμένου»
    κώδικα

                                OTS SA, 2012 © Παπαπέτρου Πάτροκλος
Best Practices(2) – Feedback(2)
• Ενημέρωση όλων των εμπλεκόμενων
• Πως;
    • Γραπτώς (email, sms, IM, RSS, tweets etc.)
    • Ηχητικά
    • Οπτικά ( Java Lamps – Feedback Panels )




                                OTS SA, 2012 © Παπαπέτρου Πάτροκλος

More Related Content

Similar to Continous integration with jenkins

Περατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubΠερατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubPanagiotis Kanavos
 
Andreas Hadjithomas
Andreas HadjithomasAndreas Hadjithomas
Andreas HadjithomasISSEL
 
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGOΕφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGOIraklis Markelis
 
Παράγοντες επιτυχίας ενός ERP
Παράγοντες επιτυχίας ενός ERPΠαράγοντες επιτυχίας ενός ERP
Παράγοντες επιτυχίας ενός ERPGNOMON Informatics SA
 
εξ αποστάσεως εκπαίδευση Revit architecture
εξ αποστάσεως  εκπαίδευση Revit architectureεξ αποστάσεως  εκπαίδευση Revit architecture
εξ αποστάσεως εκπαίδευση Revit architectureGeorge Exarchopoulos
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
 
Υπηρεσία Μίας Στάσης για την σύσταση επιχειρήσεων και ανοικτό λογισμικό
Υπηρεσία Μίας Στάσης για την σύσταση επιχειρήσεων και ανοικτό λογισμικόΥπηρεσία Μίας Στάσης για την σύσταση επιχειρήσεων και ανοικτό λογισμικό
Υπηρεσία Μίας Στάσης για την σύσταση επιχειρήσεων και ανοικτό λογισμικόTilemahos Manolatos
 
Development of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous IntegrationDevelopment of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous IntegrationISSEL
 
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούΑνάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούISSEL
 
553193902-2-Intro-to-Java.pdf
553193902-2-Intro-to-Java.pdf553193902-2-Intro-to-Java.pdf
553193902-2-Intro-to-Java.pdfDimitraPapalitsa
 
Dimitris Niras
Dimitris NirasDimitris Niras
Dimitris NirasISSEL
 
ClickMedia Joomla! 3 - What's New (Greek)
ClickMedia Joomla! 3 - What's New (Greek)ClickMedia Joomla! 3 - What's New (Greek)
ClickMedia Joomla! 3 - What's New (Greek)ClickMedia
 
Νέες Δυνατότητες Εφαρμογής «Διαχείρισης Ανθρωπίνων Πόρων»
Νέες Δυνατότητες Εφαρμογής «Διαχείρισης Ανθρωπίνων Πόρων»Νέες Δυνατότητες Εφαρμογής «Διαχείρισης Ανθρωπίνων Πόρων»
Νέες Δυνατότητες Εφαρμογής «Διαχείρισης Ανθρωπίνων Πόρων»OTS SA
 
Ιωάννης Τσαφαράς
Ιωάννης ΤσαφαράςΙωάννης Τσαφαράς
Ιωάννης ΤσαφαράςISSEL
 
εξ αποστάσεως εκπαίδευση Revit mep
εξ αποστάσεως  εκπαίδευση Revit mepεξ αποστάσεως  εκπαίδευση Revit mep
εξ αποστάσεως εκπαίδευση Revit mepGeorge Exarchopoulos
 
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...ISSEL
 
Konstantinos Papadopoulos Diploma Thesis presenation
Konstantinos Papadopoulos Diploma Thesis presenationKonstantinos Papadopoulos Diploma Thesis presenation
Konstantinos Papadopoulos Diploma Thesis presenationISSEL
 
Project Management: Ανάπτυξη εφαρμογής για iPhone.
Project Management: Ανάπτυξη εφαρμογής για iPhone.Project Management: Ανάπτυξη εφαρμογής για iPhone.
Project Management: Ανάπτυξη εφαρμογής για iPhone.chris zlatis
 

Similar to Continous integration with jenkins (20)

Περατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubΠερατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event Hub
 
Andreas Hadjithomas
Andreas HadjithomasAndreas Hadjithomas
Andreas Hadjithomas
 
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGOΕφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
 
Παράγοντες επιτυχίας ενός ERP
Παράγοντες επιτυχίας ενός ERPΠαράγοντες επιτυχίας ενός ERP
Παράγοντες επιτυχίας ενός ERP
 
εξ αποστάσεως εκπαίδευση Revit architecture
εξ αποστάσεως  εκπαίδευση Revit architectureεξ αποστάσεως  εκπαίδευση Revit architecture
εξ αποστάσεως εκπαίδευση Revit architecture
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
 
Υπηρεσία Μίας Στάσης για την σύσταση επιχειρήσεων και ανοικτό λογισμικό
Υπηρεσία Μίας Στάσης για την σύσταση επιχειρήσεων και ανοικτό λογισμικόΥπηρεσία Μίας Στάσης για την σύσταση επιχειρήσεων και ανοικτό λογισμικό
Υπηρεσία Μίας Στάσης για την σύσταση επιχειρήσεων και ανοικτό λογισμικό
 
Development of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous IntegrationDevelopment of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous Integration
 
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούΑνάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
 
553193902-2-Intro-to-Java.pdf
553193902-2-Intro-to-Java.pdf553193902-2-Intro-to-Java.pdf
553193902-2-Intro-to-Java.pdf
 
Dimitris Niras
Dimitris NirasDimitris Niras
Dimitris Niras
 
ClickMedia Joomla! 3 - What's New (Greek)
ClickMedia Joomla! 3 - What's New (Greek)ClickMedia Joomla! 3 - What's New (Greek)
ClickMedia Joomla! 3 - What's New (Greek)
 
Νέες Δυνατότητες Εφαρμογής «Διαχείρισης Ανθρωπίνων Πόρων»
Νέες Δυνατότητες Εφαρμογής «Διαχείρισης Ανθρωπίνων Πόρων»Νέες Δυνατότητες Εφαρμογής «Διαχείρισης Ανθρωπίνων Πόρων»
Νέες Δυνατότητες Εφαρμογής «Διαχείρισης Ανθρωπίνων Πόρων»
 
Revit Architecture
Revit ArchitectureRevit Architecture
Revit Architecture
 
Ιωάννης Τσαφαράς
Ιωάννης ΤσαφαράςΙωάννης Τσαφαράς
Ιωάννης Τσαφαράς
 
Intro to mobile apps
Intro to mobile appsIntro to mobile apps
Intro to mobile apps
 
εξ αποστάσεως εκπαίδευση Revit mep
εξ αποστάσεως  εκπαίδευση Revit mepεξ αποστάσεως  εκπαίδευση Revit mep
εξ αποστάσεως εκπαίδευση Revit mep
 
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...
 
Konstantinos Papadopoulos Diploma Thesis presenation
Konstantinos Papadopoulos Diploma Thesis presenationKonstantinos Papadopoulos Diploma Thesis presenation
Konstantinos Papadopoulos Diploma Thesis presenation
 
Project Management: Ανάπτυξη εφαρμογής για iPhone.
Project Management: Ανάπτυξη εφαρμογής για iPhone.Project Management: Ανάπτυξη εφαρμογής για iPhone.
Project Management: Ανάπτυξη εφαρμογής για iPhone.
 

Continous integration with jenkins

  • 1. Continuous Integration • Εισαγωγή – Τι σημαίνει συνεχής ολοκλήρωση; • Γιατί χρειάζεται και πως εφαρμόζεται; • Jenkins CI – Τι είναι; Γιατί Jenkins; • Εγκατάσταση / Βασική Παραμετροποίηση • Build Jobs basics • CI Best Practices OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 2. Τι σημαίνει συνεχής ολοκλήρωση; • Agile (και όχι μόνο) πρακτική • Οι ενέργειες που γίνονται από τους developers σε καθημερινά τακτά χρονικά διαστήματα ώστε οι αλλαγές που κάνουν στο λογισμικό να ενοποιούνται / ολοκληρώνονται με το υπόλοιπο λογισμικό αυτοματοποιημένα και γρήγορα • Στηρίζεται στην κουλτούρα ότι από την 1 η μέρα ενός project, αυτό θεωρείται παραγωγικό! OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 3. Γιατί χρειάζεται; • Όλοι οι ενδιαφερόμενοι μπορούν να γνωρίζουν ποια ζητήματα έχουν αντιμετωπιστεί σε ποιο build και με ποιες αλλαγές στον κώδικα. • Όλοι οι ενδιαφερόμενοι έχουν εικόνα για την ποιότητα και τα αποτελέσματα των ελέγχων που υπάρχουν σε ένα σύστημα, καθώς και για πλήθος ποιοτικών αποτελεσμάτων. OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 4. Γιατί χρειάζεται; (2) • Πάντα υπάρχει διαθέσιμη, μία σταθερή έκδοση για έλεγχο, προς επίδειξη σε πελάτες, χωρίς να χρειάζεται η παρέμβαση της ομάδας ανάπτυξης, όποτε προκύπτει ανάλογη ανάγκη. • Αυξάνεται το αίσθημα ασφάλειας και σιγουριάς απέναντι στο προϊόν εφόσον υπάρχει διαφάνεια στις αυτοματοποιημένες διαδικασίες ανάπτυξης και ελέγχου του συστήματος. OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 5. Πως εφαρμόζεται; OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 6. Πως εφαρμόζεται; - Υποδομές(1) • Source Control Repository (Subversion, Git κτλ.) OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 7. Πως εφαρμόζεται; - Υποδομές(1) • Αυτοματοποιημένη Διαδικασία Build (και όχι μόνο) OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 8. Πως εφαρμόζεται; - Διαδικασία • Σωστά ορισμένη διαδικασία commit OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 9. Πως εφαρμόζεται; - Διαδικασία OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 10. Πως εφαρμόζεται; - Διασκέδαση • ‘Αμεσο Feedback με ποικίλους τρόπους OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 11. OpenSource Continous Integration εργαλείο γραμμένο σε Java • Δημιουργός : Koshuke Kawaguchi • Hudson μέχρι το Δεκέμβριο του 2010. • Ήρθε η Oracle, τα έκανε μαντάρα, ο Koshuke έφυγε και πήρε μαζί του το παιδί του. •Από τότε υπάρχουν : Jenkins CI και Hudson OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 12. Γιατί επιλέγουμε Jenkins και όχι Hudson; • Τεράστιο community • Εκατοντάδες open source plugins • Για λόγους ηθικής • Γιατί δεν επιλέγουμε κάποιο εμπορικό πακέτο; ( π.χ. Confluence Bamboo ) • Οικονομική στενότητα (προφανές) • Καλυπτόμαστε πλήρως από τον Jenkins OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 13. • Εγκατάσταση • Διαθέσιμη για όλα τα OS • Πολύ απλή σε Windows / Run as Service ( http://mirrors.jenkins-ci.org/windows/latest) • Βασική Παραμετροποίηση • Εγκατάσταση / Ορισμός JDK • Εγκατάσταση / Ορισμός Maven • Εγκατάσταση / Ορισμός Ant OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 14. OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 15. • Τύποι Build Jobs • Free style ( Ant Projects, PowerBuilder ) • Maven 2/3 projects • Multi configuration • Monitor external job • Καταστάσεις Build Jobs • Success • Unstable • Failed • Running (Flashing με χρώμα από την κατάσταση του τελ. Build) • Disabled OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 16. Βασική Παραμετροποίηση Build Jobs • Βασικά στοιχεία • Source Code Management • Build Triggers (Periodically, Poll SCM, μετά από άλλα projects, όταν γίνεται Build μία Snapshot dependency κτλ. ) • Build (pre-steps, post-steps) • Post actions • Notifications OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 17. Best Practices(1) – Build Jobs • Trunk Build • Trigger μετά από κάθε commit • Unit Tests Execution • Ολοκληρώνεται σε λιγότερο από 5’-10’ • Nightly Build • Εκτελείται κάθε βράδυ (αν υπάρχουν αλλαγές) • Unit Tests / Integration Tests Execution • Deployments σε QA environments • Static Analysis / Quality Measures (Sonar) OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 18. Best Practices(2) – Feedback • Ενημέρωση όλων των εμπλεκόμενων • Πότε; • Όταν «χαλάει» ένα Build • Όταν «επανέρχεται» ένα Build • Γιατί; • Άμεση επιδιόρθωση του «χαλασμένου» Build + Κανείς δεν παίρνει τον «χαλασμένο» κώδικα τοπικά • Πράσινο φως για λήψη «διορθωμένου» κώδικα OTS SA, 2012 © Παπαπέτρου Πάτροκλος
  • 19. Best Practices(2) – Feedback(2) • Ενημέρωση όλων των εμπλεκόμενων • Πως; • Γραπτώς (email, sms, IM, RSS, tweets etc.) • Ηχητικά • Οπτικά ( Java Lamps – Feedback Panels ) OTS SA, 2012 © Παπαπέτρου Πάτροκλος