Ιωάννης Τσαφαράς

ISSEL
ISSELISSEL
Ανάπτυξη και σχεδίαση
αυτοματοποιημένης υποδομής
Continuous Integration σε έργα
λογισμικού
Ιωάννης Τσαφαράς, ΑΕΜ: 7542
Υπό την επίβλεψη του Επίκουρου Καθηγητή
Ανδρέα Λ. Συμεωνίδη
Θεσσαλονίκη, Νοέμβριος 2017
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Πολυτεχνική Σχολή
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Τομέας Ηλεκτρονικής και Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών (ΕΠΥ)
Δομή της παρουσίασης
• Εισαγωγή στο Continuous Integration (CI)
• Σκοπός εργασίας
• Σύγκριση και επιλογή συστήματος CI
• Βήματα υλοποίησης υποδομής CI
• Εφαρμογή υλοποιημένου συστήματος
• Συμπεράσματα
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 2
Continuous Integration (CI)
• Grady Booch, 1991, 1 από 12 στοιχεία του Extreme
Programming (XP)
• Συχνή συγχώνευση (merging) κώδικα
• Λειτουργικό προϊόν σε κάθε συγχώνευση
• Προσθήκη λειτουργιών σε κάθε έκδοση
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 3
Πλεονεκτήματα CI
• Ελαχιστοποίηση προβλημάτων ενσωμάτωσης
• Προβλήματα συγχώνευσης (merge conflicts)
• Προβλήματα συμβατότητας στοιχείων εφαρμογής
• Γρήγορη εύρεση σφαλμάτων λογισμικού (bugs)
• Γρηγορότερη ανάπτυξη ποιοτικού λογισμικού
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 4
Σκοπός της εργασίας
• Απλοποίηση διαδικασίας ελέγχου ποιότητας
κώδικα έργων λογισμικού
• Χρήση συστημάτων Continuous Integration (CI)
• Αυτόματη παροχή pre-production (staging) έκδοσης του
έργου
• Δυνατότητα αυτόματης ενημέρωσης production
έκδοσης
• Συμβατότητα υλοποιημένου συστήματος με
πλατφόρμες cloud computing
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 5
Γνώσεις που αποκτήθηκαν
• Συστήματα Continuous Integration
• Συστήματα διαχείρισης διαμόρφωσης λογισμικού
(software configuration management)
• Ανάπτυξη αυτοματοποιημένης διαδικασίας
δημιουργίας CI σε υποδομές cloud computing
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 6
CI Στατική ανάλυση κώδικα CD/CDE
CircleCI
Travis CI
Jenkins SonarQube
Chef
Puppet
Ansible
Αυτόματα συστήματα CI -1-
• Αυτοματοποίηση διαδικασίας μετά από
συγχώνευση
• Μεταγλώττιση (compile), σύνδεση (link)
• Αυτόματοι Έλεγχοι (tests)
• Unit tests
• API test
• Local CIs
• CI-as-a-Service (cloud-based CIs)
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 7
Αυτόματα συστήματα CI -2-
• Local CI
• Jenkins CI
• Για open και closed
source έργα
• Πληθώρα plugins
• Μεγάλη υποστήριξη
• CI-as-a-Service
• Travis CI
• Για open source έργα
• Χρήση μέσω GitHub
• Πιο δημοφιλές cloud-
based CI
• CircleCI
• Συνεργασία με GitHub,
BitBucket
• Υποστήριξη λιγότερων
γλωσσών από Travis CI
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 8
CI
CircleCI
Travis CI
Jenkins
Στατική ανάλυση κώδικα
• Στατική ανάλυση κώδικα μέσω SonarQube
• Κύριες μετρικές:
• Σφάλματα κώδικα (bugs)
• Κενά ασφαλείας (vulnerabilities)
• Διπλότυπος κώδικας (duplications)
• Τεχνικό χρέος (code smells/technical debt)
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 9
Στατική ανάλυση κώδικα
SonarQube
Continuous Deployment (CD)
Continuous Delivery (CDE)
• Επέκταση του CI
• Εγκατάσταση νέας έκδοσης του κώδικα σε
περιβάλλον, μετά την επιτυχία των βημάτων CI
• CD: Αυτόματο
• CDE: Απαιτεί αποδοχή χρήστη
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 10
CD, CDE στην εργασία
• Χρήση Continuous Deployment:
Εγκατάσταση κώδικα σε staging περιβάλλον
• Χρήση Continuous Delivery:
Εγκατάσταση κώδικα σε production περιβάλλον
• Υλοποίηση CD, CDE:
Εργαλεία διαχείρισης διαμόρφωσης λογισμικού
(software configuration management)
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 11
Εργαλεία Software Configuration
Management -1-
• Καταγραφή αλλαγών σε έναν server
• Εγκατάσταση πακέτων
• Ρύθμιση services, συστήματος
• Εγκατάσταση κώδικα κ.ά.
• Σκοπός η επαναπραγματοποίηση των αλλαγών
• Ευρέως χρησιμοποιούμενα εργαλεία:
• Ansible
• Puppet
• Chef
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 12
CD/CDE
Chef
Puppet
Ansible
Εργαλεία Software Configuration
Management -2-
• Ansible
• Playbooks σε YAML
• Χρήση χωρίς πράκτορα (agentless), επικοινωνία μέσω SSH
• Puppet
• Manifests σε Domain Specific Language (DSL)
• Απαιτείται πράκτορας, επικοινωνία με HTTPS
• Chef
• Cookbooks σε Domain Specific Language (DSL) ή Ruby
• Απαιτείται πράκτορας
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 13
Εργαλεία Software Configuration
Management -3-
• Επιλογή Ansible
• Αρχιτεκτονική χωρίς χρήση πράκτορα
• Άμεση χρήση
• Εξοικονόμηση πόρων
• Ασφάλεια
• Προϋπόθεση: SSH, Python
• Απλή, εύκολη στην εκμάθηση γλώσσα YAML
• Πολλά plugins, αυτοματοποίηση κάθε λειτουργίας
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 14
Τελική επιλογή συστήματος CI
• Jenkins
• Προσαρμοστικότητα
• Χρήση σε ανοιχτού και κλειστού κώδικα έργα
• Υποστήριξη από την κοινότητα
• Πολυάριθμα plugins
• SonarQube για στατική ανάλυση κώδικα
• Ansible για CD/CDE
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 15
CI Στατική ανάλυση κώδικα CD/CDE
CircleCI
Travis CI
Jenkins SonarQube
Chef
Puppet
Ansible
CI Pipeline
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 16
Preparation Test
SonarQube
Analysis
SonarQube
Quality Gate
Staging
deploy
Production deploy
approval
Production
deploy
CI Pipeline
Success
SCM Hook or
Manual
Trigger
Error/Failure
CI Pipeline
Failure
Any Step
Continuous Integration (CI)
Continuous Deployment (CD)
+
Continuous Delivery (CDE)
Βήματα CI Pipeline -1-
• Preparation
• Διαγραφή workspace
• Checkout νέου κώδικα
• Δημιουργία αρχείων μεταβλητών για τα deployments
• Εγκατάσταση test/build dependencies
• Build/compile, αν απαιτείται
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 17
Preparation Test
SonarQube
Analysis
SonarQube
Quality
Gate
Βήματα CI Pipeline -2-
• Test
• Εκτέλεση unit tests
• Εκτέλεση API tests
• Αποθήκευση test coverage
• SonarQube Analysis
• Στατική ανάλυση κώδικα
• Παρουσίαση αποτελεσμάτων στο SonarQube WebUI
• SonarQube Quality Gate
• Πληροί ο νέος κώδικας τις προϋποθέσεις ποιότητας;
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 18
Preparation Test
SonarQube
Analysis
SonarQube
Quality
Gate
Βήματα CI Pipeline -3-
• Staging deploy
• Χρήση Ansible για deployment στον staging server
• Production deploy approval
• Αποδοχή/άρνηση deployment στο production
• Production deploy
• Χρήση Ansible για deployment στον production server
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 19
Staging
deploy
Production deploy
approval
Production
deploy
Εκτέλεση CI Pipeline
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 20
Βήμα Pipeline “Production deploy approval”
Διαδικασίες CD/CDE
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 21
deploy-app-
production.yml
deploy-app-
staging.yml
app_type
app-nodejs
role
app-django
role
app-jetty
role
nodejs
django
jettyStaging Server Production Server
SSH SSH
Αρχιτεκτονική CI server -1-
• Χρήση Docker
• Ασφάλεια
• Δημιουργία υπηρεσιών μέσω παραμετροποιημένων
images (Dockerfiles)
• Φορητότητα
• 3 Docker containers
• Jenkins
• SonarQube
• MySQL (για χρήση από SonarQube)
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 22
Αρχιτεκτονική CI server -2-
• Σύνδεση των containers μέσω Docker network cinet
• Jenkins ↔ SonarQube
• SonarQube ↔ MySQL
• Xρήση Docker volumes, για διατήρηση δεδομένων
Jenkins και MySQL
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 23
Jenkins SonarQube
MySQL
CI creator -1-
• Webapp γραμμένο σε flask
• Ansible εγκατεστημένο
• Playbook, ρόλοι για deployment CI
• Ουρά Celery με RabbitMQ, για την εκτέλεση
Ansible
Νοέμβριος 2017 24Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού
CI creator -2-
• Λήψη μεταβλητών από το WebUI:
• App name
• App type
• Node.js
• Django
• Jetty
• CI host/username
• SonarQube MySQL passwords
• staging host/username
• production host/username
• Απαίτηση: Ύπαρξη SSH keys
Νοέμβριος 2017 25Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού
CI creator video
Νοέμβριος 2017 26Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού
Εγχειρίδιο χρήσης CI
Νοέμβριος 2017 27Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού
Αποτελέσματα -1-
Εκτέλεση CI build στο project του ISSEL, Web Recorder Server
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 28
Αποτελέσματα -2-
Αποτελέσματα SonarQube για Web Recorder Server
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 29
Αποτελέσματα -3-
Παρακολούθηση διεργασιών Web Recorder Server μέσω
Node.js Production Process Manager, PM2
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 30
Αποτελέσματα -4-
Δημιουργία υπηρεσίας Continuous Integration για την εταιρία
YummyWallet
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 31
Συμπεράσματα
• Διευκόλυνση διαδικασίας εγκατάστασης
συστήματος CI + CD/CDE
• Συμβατότητα αρχιτεκτονικής με υποδομές cloud,
δοκιμή σε υποδομές:
•
•
•
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 32
Μελλοντική Εργασία
• Πλήρης αυτοματοποίηση παραμετροποίησης CI
• Συμβατότητα με διαφορετικά λειτουργικά
συστήματα (RedHat-based)
• Αξιοποίηση APIs cloud παρόχων
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 33
Κώδικας, παραδείγματα
github.com/ioantsaf/ci
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 34
Ευχαριστώ για την
προσοχή σας!
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 35
Ερωτήσεις, Επικοινωνία
jiannist@gmail.com
github.com/ioantsaf
linkedin.com/in/giannis-
tsafaras/
Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 36
1 of 36

Recommended

Development of an automatic procedure for Continuous Integration by
Development of an automatic procedure for Continuous IntegrationDevelopment of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous IntegrationISSEL
44 views38 slides
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού by
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούΑνάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούISSEL
79 views38 slides
Μιχαήλ Παπαμιχαήλ by
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλISSEL
160 views28 slides
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ... by
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...ISSEL
84 views26 slides
Ιoannis Αgrotis by
Ιoannis ΑgrotisΙoannis Αgrotis
Ιoannis ΑgrotisISSEL
113 views20 slides
GNS3 Greek Presentation by
GNS3 Greek Presentation GNS3 Greek Presentation
GNS3 Greek Presentation George Stefanidis
566 views19 slides

More Related Content

Similar to Ιωάννης Τσαφαράς

Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα... by
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
48 views25 slides
Kagiafas Nikolaos Thesis Presentation by
Kagiafas Nikolaos Thesis PresentationKagiafas Nikolaos Thesis Presentation
Kagiafas Nikolaos Thesis PresentationISSEL
88 views25 slides
Εισαγωγή σε C# και .ΝΕΤ by
Εισαγωγή σε C# και .ΝΕΤΕισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤDimitris-Ilias Gkanatsios
1.3K views103 slides
Development of a system for designing remote digital image processing pipelin... by
Development of a system for designing remote digital image processing pipelin...Development of a system for designing remote digital image processing pipelin...
Development of a system for designing remote digital image processing pipelin...ISSEL
5 views23 slides
Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ... by
Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ...Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ...
Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ...ISSEL
17 views23 slides
Introduction to .NET Framework and C# (Greek) by
Introduction to .NET Framework and C# (Greek)Introduction to .NET Framework and C# (Greek)
Introduction to .NET Framework and C# (Greek)Vangos Pterneas
526 views23 slides

Similar to Ιωάννης Τσαφαράς(20)

Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα... by ISSEL
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
ISSEL48 views
Kagiafas Nikolaos Thesis Presentation by ISSEL
Kagiafas Nikolaos Thesis PresentationKagiafas Nikolaos Thesis Presentation
Kagiafas Nikolaos Thesis Presentation
ISSEL88 views
Development of a system for designing remote digital image processing pipelin... by ISSEL
Development of a system for designing remote digital image processing pipelin...Development of a system for designing remote digital image processing pipelin...
Development of a system for designing remote digital image processing pipelin...
ISSEL5 views
Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ... by ISSEL
Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ...Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ...
Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ...
ISSEL17 views
Introduction to .NET Framework and C# (Greek) by Vangos Pterneas
Introduction to .NET Framework and C# (Greek)Introduction to .NET Framework and C# (Greek)
Introduction to .NET Framework and C# (Greek)
Vangos Pterneas526 views
Προγραμματισμός σε Clipper - 1 by Stathis Gourzis
Προγραμματισμός σε Clipper - 1Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1
Stathis Gourzis458 views
Η γλώσσα προγραμματισμού C. by Stathis Gourzis
Η γλώσσα προγραμματισμού C.Η γλώσσα προγραμματισμού C.
Η γλώσσα προγραμματισμού C.
Stathis Gourzis283 views
Thesis.Net Framework Training by pdalianis
Thesis.Net Framework TrainingThesis.Net Framework Training
Thesis.Net Framework Training
pdalianis197 views
Linux and C by jtsagata
Linux and CLinux and C
Linux and C
jtsagata29 views
Silverlight Presentation @ University of Piraeus - 3-15-2010 by Alexandros Sigaras
Silverlight Presentation @ University of Piraeus - 3-15-2010Silverlight Presentation @ University of Piraeus - 3-15-2010
Silverlight Presentation @ University of Piraeus - 3-15-2010
Alexandros Sigaras207 views
Θεμιστοκλής Παπαβασιλείου by ISSEL
Θεμιστοκλής ΠαπαβασιλείουΘεμιστοκλής Παπαβασιλείου
Θεμιστοκλής Παπαβασιλείου
ISSEL152 views
Γκιλίρης Ιωάννης 7419 by ISSEL
Γκιλίρης Ιωάννης 7419Γκιλίρης Ιωάννης 7419
Γκιλίρης Ιωάννης 7419
ISSEL209 views
Dimitrios Tatsis by ISSEL
Dimitrios TatsisDimitrios Tatsis
Dimitrios Tatsis
ISSEL195 views
3rd StudentGuru Event | Robotics developer studio 2008 | 11-21-2008 by Alexandros Sigaras
3rd StudentGuru Event | Robotics developer studio 2008 | 11-21-20083rd StudentGuru Event | Robotics developer studio 2008 | 11-21-2008
3rd StudentGuru Event | Robotics developer studio 2008 | 11-21-2008
Alexandros Sigaras163 views
Micro Front-ends and Microservices Architecture in Web Application Development by ISSEL
Micro Front-ends and Microservices Architecture in Web Application DevelopmentMicro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application Development
ISSEL8 views

More from ISSEL

Camera-based localization of annotated objects in indoor environments by
Camera-based localization of annotated objects in indoor environmentsCamera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environmentsISSEL
12 views38 slides
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ... by
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...ISSEL
6 views38 slides
Design and implementation of an automation mechanism to automatically develop... by
Design and implementation of an automation mechanism to automatically develop...Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...ISSEL
4 views17 slides
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ... by
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ISSEL
6 views17 slides
Static Analysis of Python code and Identification of Potential Security Vulne... by
Static Analysis of Python code and Identification of Potential Security Vulne...Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...ISSEL
7 views16 slides
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ... by
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...ISSEL
26 views27 slides

More from ISSEL(20)

Camera-based localization of annotated objects in indoor environments by ISSEL
Camera-based localization of annotated objects in indoor environmentsCamera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environments
ISSEL12 views
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ... by ISSEL
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
ISSEL6 views
Design and implementation of an automation mechanism to automatically develop... by ISSEL
Design and implementation of an automation mechanism to automatically develop...Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...
ISSEL4 views
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ... by ISSEL
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ISSEL6 views
Static Analysis of Python code and Identification of Potential Security Vulne... by ISSEL
Static Analysis of Python code and Identification of Potential Security Vulne...Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...
ISSEL7 views
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ... by ISSEL
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
ISSEL26 views
Design and Development of an Authorization and Access Control Mechanism for C... by ISSEL
Design and Development of an Authorization and Access Control Mechanism for C...Design and Development of an Authorization and Access Control Mechanism for C...
Design and Development of an Authorization and Access Control Mechanism for C...
ISSEL13 views
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο... by ISSEL
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
ISSEL19 views
Analysis and profiling of developer profiles using data mining techniques fro... by ISSEL
Analysis and profiling of developer profiles using data mining techniques fro...Analysis and profiling of developer profiles using data mining techniques fro...
Analysis and profiling of developer profiles using data mining techniques fro...
ISSEL3 views
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση... by ISSEL
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
ISSEL8 views
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM by ISSEL
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEMTOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM
ISSEL3 views
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ... by ISSEL
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...
ISSEL11 views
System Development for Prediction of Static Analysis Metrics of Source Code by ISSEL
System Development for Prediction of Static Analysis Metrics of Source CodeSystem Development for Prediction of Static Analysis Metrics of Source Code
System Development for Prediction of Static Analysis Metrics of Source Code
ISSEL6 views
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ... by ISSEL
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
ISSEL11 views
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ... by ISSEL
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
ISSEL19 views
Indoor localization using wireless networks by ISSEL
Indoor localization using wireless networksIndoor localization using wireless networks
Indoor localization using wireless networks
ISSEL5 views
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων by ISSEL
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύωνΕντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων
ISSEL10 views
Design and implementation of a big data architecture for storage, real-time p... by ISSEL
Design and implementation of a big data architecture for storage, real-time p...Design and implementation of a big data architecture for storage, real-time p...
Design and implementation of a big data architecture for storage, real-time p...
ISSEL9 views
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ... by ISSEL
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...
ISSEL16 views
Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ... by ISSEL
Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...
Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...
ISSEL15 views

Recently uploaded

2023_11_29_Φ_152_136804_Α5_ΕΓΚΥΚΛΙΟΣ_ΑΙΤΗΣΗ_ΔΗΛΩΣΗ_ΕΠΑΛ_2024.pdf by
2023_11_29_Φ_152_136804_Α5_ΕΓΚΥΚΛΙΟΣ_ΑΙΤΗΣΗ_ΔΗΛΩΣΗ_ΕΠΑΛ_2024.pdf2023_11_29_Φ_152_136804_Α5_ΕΓΚΥΚΛΙΟΣ_ΑΙΤΗΣΗ_ΔΗΛΩΣΗ_ΕΠΑΛ_2024.pdf
2023_11_29_Φ_152_136804_Α5_ΕΓΚΥΚΛΙΟΣ_ΑΙΤΗΣΗ_ΔΗΛΩΣΗ_ΕΠΑΛ_2024.pdfssuser9e6212
516 views16 slides
Η Ασπρούδα by
Η ΑσπρούδαΗ Ασπρούδα
Η ΑσπρούδαDimitra Mylonaki
10 views19 slides
amea.pptx by
amea.pptxamea.pptx
amea.pptxssuserf0f53a
56 views21 slides
Η σύνθεση Χριστιανισμού και Ελληνισμού αποτυπώνεται στην τέχνη.pptx by
Η σύνθεση Χριστιανισμού και Ελληνισμού αποτυπώνεται στην τέχνη.pptxΗ σύνθεση Χριστιανισμού και Ελληνισμού αποτυπώνεται στην τέχνη.pptx
Η σύνθεση Χριστιανισμού και Ελληνισμού αποτυπώνεται στην τέχνη.pptxΔήμητρα Τζίνου
56 views33 slides
17 Νοέμβρη 2023 by
17 Νοέμβρη 202317 Νοέμβρη 2023
17 Νοέμβρη 2023Λυκειο Κολυμβαρίου
7 views36 slides
Έγκυρη ενημέρωση by
Έγκυρη ενημέρωσηΈγκυρη ενημέρωση
Έγκυρη ενημέρωσηssuser43d27b
16 views10 slides

Recently uploaded(20)

2023_11_29_Φ_152_136804_Α5_ΕΓΚΥΚΛΙΟΣ_ΑΙΤΗΣΗ_ΔΗΛΩΣΗ_ΕΠΑΛ_2024.pdf by ssuser9e6212
2023_11_29_Φ_152_136804_Α5_ΕΓΚΥΚΛΙΟΣ_ΑΙΤΗΣΗ_ΔΗΛΩΣΗ_ΕΠΑΛ_2024.pdf2023_11_29_Φ_152_136804_Α5_ΕΓΚΥΚΛΙΟΣ_ΑΙΤΗΣΗ_ΔΗΛΩΣΗ_ΕΠΑΛ_2024.pdf
2023_11_29_Φ_152_136804_Α5_ΕΓΚΥΚΛΙΟΣ_ΑΙΤΗΣΗ_ΔΗΛΩΣΗ_ΕΠΑΛ_2024.pdf
ssuser9e6212516 views
Η σύνθεση Χριστιανισμού και Ελληνισμού αποτυπώνεται στην τέχνη.pptx by Δήμητρα Τζίνου
Η σύνθεση Χριστιανισμού και Ελληνισμού αποτυπώνεται στην τέχνη.pptxΗ σύνθεση Χριστιανισμού και Ελληνισμού αποτυπώνεται στην τέχνη.pptx
Η σύνθεση Χριστιανισμού και Ελληνισμού αποτυπώνεται στην τέχνη.pptx
Έγκυρη ενημέρωση by ssuser43d27b
Έγκυρη ενημέρωσηΈγκυρη ενημέρωση
Έγκυρη ενημέρωση
ssuser43d27b16 views
Γ.2.1.pptx by sidiropo
Γ.2.1.pptxΓ.2.1.pptx
Γ.2.1.pptx
sidiropo5 views
Σχολικός εκφοβισμός by ssuser43d27b
Σχολικός εκφοβισμόςΣχολικός εκφοβισμός
Σχολικός εκφοβισμός
ssuser43d27b36 views
Τριάντα εννιά καφενεία και ένα κουρείο by Dimitra Mylonaki
Τριάντα εννιά καφενεία και ένα κουρείοΤριάντα εννιά καφενεία και ένα κουρείο
Τριάντα εννιά καφενεία και ένα κουρείο
Dimitra Mylonaki11 views
Ολική καταστροφή στις καλλιέργειες by Dimitra Mylonaki
Ολική καταστροφή στις καλλιέργειεςΟλική καταστροφή στις καλλιέργειες
Ολική καταστροφή στις καλλιέργειες
Dimitra Mylonaki16 views
ΧΡΙΣΤΟΥΓΕΝΝΑ ΣΕ ΟΛΟΝ ΤΟΝ ΚΟΣΜΟ.pptx by ssuser86b52c
ΧΡΙΣΤΟΥΓΕΝΝΑ ΣΕ ΟΛΟΝ ΤΟΝ ΚΟΣΜΟ.pptxΧΡΙΣΤΟΥΓΕΝΝΑ ΣΕ ΟΛΟΝ ΤΟΝ ΚΟΣΜΟ.pptx
ΧΡΙΣΤΟΥΓΕΝΝΑ ΣΕ ΟΛΟΝ ΤΟΝ ΚΟΣΜΟ.pptx
ssuser86b52c5 views
ΟΔΗΓΙΕΣ ΚΑΤΑΘΕΣΗΣ ΑΠΟΓΡΑΦΗΣ-3-4 (1).pdf by ssuser369a35
ΟΔΗΓΙΕΣ ΚΑΤΑΘΕΣΗΣ ΑΠΟΓΡΑΦΗΣ-3-4 (1).pdfΟΔΗΓΙΕΣ ΚΑΤΑΘΕΣΗΣ ΑΠΟΓΡΑΦΗΣ-3-4 (1).pdf
ΟΔΗΓΙΕΣ ΚΑΤΑΘΕΣΗΣ ΑΠΟΓΡΑΦΗΣ-3-4 (1).pdf
ssuser369a3515 views
ΟΜΑΔΑ 1η- ΠΕΝΤΕΛΗ(ΠΑΛΑΙΑ).pdf by Chrisa Kokorikou
ΟΜΑΔΑ 1η- ΠΕΝΤΕΛΗ(ΠΑΛΑΙΑ).pdfΟΜΑΔΑ 1η- ΠΕΝΤΕΛΗ(ΠΑΛΑΙΑ).pdf
ΟΜΑΔΑ 1η- ΠΕΝΤΕΛΗ(ΠΑΛΑΙΑ).pdf
Chrisa Kokorikou20 views
Από τον ηλεκτρισμό στον μαγνητισμό by Dimitra Mylonaki
Από τον ηλεκτρισμό στον μαγνητισμόΑπό τον ηλεκτρισμό στον μαγνητισμό
Από τον ηλεκτρισμό στον μαγνητισμό
Dimitra Mylonaki12 views

Ιωάννης Τσαφαράς

  • 1. Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού Ιωάννης Τσαφαράς, ΑΕΜ: 7542 Υπό την επίβλεψη του Επίκουρου Καθηγητή Ανδρέα Λ. Συμεωνίδη Θεσσαλονίκη, Νοέμβριος 2017 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Ηλεκτρονικής και Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών (ΕΠΥ)
  • 2. Δομή της παρουσίασης • Εισαγωγή στο Continuous Integration (CI) • Σκοπός εργασίας • Σύγκριση και επιλογή συστήματος CI • Βήματα υλοποίησης υποδομής CI • Εφαρμογή υλοποιημένου συστήματος • Συμπεράσματα Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 2
  • 3. Continuous Integration (CI) • Grady Booch, 1991, 1 από 12 στοιχεία του Extreme Programming (XP) • Συχνή συγχώνευση (merging) κώδικα • Λειτουργικό προϊόν σε κάθε συγχώνευση • Προσθήκη λειτουργιών σε κάθε έκδοση Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 3
  • 4. Πλεονεκτήματα CI • Ελαχιστοποίηση προβλημάτων ενσωμάτωσης • Προβλήματα συγχώνευσης (merge conflicts) • Προβλήματα συμβατότητας στοιχείων εφαρμογής • Γρήγορη εύρεση σφαλμάτων λογισμικού (bugs) • Γρηγορότερη ανάπτυξη ποιοτικού λογισμικού Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 4
  • 5. Σκοπός της εργασίας • Απλοποίηση διαδικασίας ελέγχου ποιότητας κώδικα έργων λογισμικού • Χρήση συστημάτων Continuous Integration (CI) • Αυτόματη παροχή pre-production (staging) έκδοσης του έργου • Δυνατότητα αυτόματης ενημέρωσης production έκδοσης • Συμβατότητα υλοποιημένου συστήματος με πλατφόρμες cloud computing Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 5
  • 6. Γνώσεις που αποκτήθηκαν • Συστήματα Continuous Integration • Συστήματα διαχείρισης διαμόρφωσης λογισμικού (software configuration management) • Ανάπτυξη αυτοματοποιημένης διαδικασίας δημιουργίας CI σε υποδομές cloud computing Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 6 CI Στατική ανάλυση κώδικα CD/CDE CircleCI Travis CI Jenkins SonarQube Chef Puppet Ansible
  • 7. Αυτόματα συστήματα CI -1- • Αυτοματοποίηση διαδικασίας μετά από συγχώνευση • Μεταγλώττιση (compile), σύνδεση (link) • Αυτόματοι Έλεγχοι (tests) • Unit tests • API test • Local CIs • CI-as-a-Service (cloud-based CIs) Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 7
  • 8. Αυτόματα συστήματα CI -2- • Local CI • Jenkins CI • Για open και closed source έργα • Πληθώρα plugins • Μεγάλη υποστήριξη • CI-as-a-Service • Travis CI • Για open source έργα • Χρήση μέσω GitHub • Πιο δημοφιλές cloud- based CI • CircleCI • Συνεργασία με GitHub, BitBucket • Υποστήριξη λιγότερων γλωσσών από Travis CI Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 8 CI CircleCI Travis CI Jenkins
  • 9. Στατική ανάλυση κώδικα • Στατική ανάλυση κώδικα μέσω SonarQube • Κύριες μετρικές: • Σφάλματα κώδικα (bugs) • Κενά ασφαλείας (vulnerabilities) • Διπλότυπος κώδικας (duplications) • Τεχνικό χρέος (code smells/technical debt) Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 9 Στατική ανάλυση κώδικα SonarQube
  • 10. Continuous Deployment (CD) Continuous Delivery (CDE) • Επέκταση του CI • Εγκατάσταση νέας έκδοσης του κώδικα σε περιβάλλον, μετά την επιτυχία των βημάτων CI • CD: Αυτόματο • CDE: Απαιτεί αποδοχή χρήστη Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 10
  • 11. CD, CDE στην εργασία • Χρήση Continuous Deployment: Εγκατάσταση κώδικα σε staging περιβάλλον • Χρήση Continuous Delivery: Εγκατάσταση κώδικα σε production περιβάλλον • Υλοποίηση CD, CDE: Εργαλεία διαχείρισης διαμόρφωσης λογισμικού (software configuration management) Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 11
  • 12. Εργαλεία Software Configuration Management -1- • Καταγραφή αλλαγών σε έναν server • Εγκατάσταση πακέτων • Ρύθμιση services, συστήματος • Εγκατάσταση κώδικα κ.ά. • Σκοπός η επαναπραγματοποίηση των αλλαγών • Ευρέως χρησιμοποιούμενα εργαλεία: • Ansible • Puppet • Chef Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 12 CD/CDE Chef Puppet Ansible
  • 13. Εργαλεία Software Configuration Management -2- • Ansible • Playbooks σε YAML • Χρήση χωρίς πράκτορα (agentless), επικοινωνία μέσω SSH • Puppet • Manifests σε Domain Specific Language (DSL) • Απαιτείται πράκτορας, επικοινωνία με HTTPS • Chef • Cookbooks σε Domain Specific Language (DSL) ή Ruby • Απαιτείται πράκτορας Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 13
  • 14. Εργαλεία Software Configuration Management -3- • Επιλογή Ansible • Αρχιτεκτονική χωρίς χρήση πράκτορα • Άμεση χρήση • Εξοικονόμηση πόρων • Ασφάλεια • Προϋπόθεση: SSH, Python • Απλή, εύκολη στην εκμάθηση γλώσσα YAML • Πολλά plugins, αυτοματοποίηση κάθε λειτουργίας Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 14
  • 15. Τελική επιλογή συστήματος CI • Jenkins • Προσαρμοστικότητα • Χρήση σε ανοιχτού και κλειστού κώδικα έργα • Υποστήριξη από την κοινότητα • Πολυάριθμα plugins • SonarQube για στατική ανάλυση κώδικα • Ansible για CD/CDE Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 15 CI Στατική ανάλυση κώδικα CD/CDE CircleCI Travis CI Jenkins SonarQube Chef Puppet Ansible
  • 16. CI Pipeline Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 16 Preparation Test SonarQube Analysis SonarQube Quality Gate Staging deploy Production deploy approval Production deploy CI Pipeline Success SCM Hook or Manual Trigger Error/Failure CI Pipeline Failure Any Step Continuous Integration (CI) Continuous Deployment (CD) + Continuous Delivery (CDE)
  • 17. Βήματα CI Pipeline -1- • Preparation • Διαγραφή workspace • Checkout νέου κώδικα • Δημιουργία αρχείων μεταβλητών για τα deployments • Εγκατάσταση test/build dependencies • Build/compile, αν απαιτείται Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 17 Preparation Test SonarQube Analysis SonarQube Quality Gate
  • 18. Βήματα CI Pipeline -2- • Test • Εκτέλεση unit tests • Εκτέλεση API tests • Αποθήκευση test coverage • SonarQube Analysis • Στατική ανάλυση κώδικα • Παρουσίαση αποτελεσμάτων στο SonarQube WebUI • SonarQube Quality Gate • Πληροί ο νέος κώδικας τις προϋποθέσεις ποιότητας; Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 18 Preparation Test SonarQube Analysis SonarQube Quality Gate
  • 19. Βήματα CI Pipeline -3- • Staging deploy • Χρήση Ansible για deployment στον staging server • Production deploy approval • Αποδοχή/άρνηση deployment στο production • Production deploy • Χρήση Ansible για deployment στον production server Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 19 Staging deploy Production deploy approval Production deploy
  • 20. Εκτέλεση CI Pipeline Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 20 Βήμα Pipeline “Production deploy approval”
  • 21. Διαδικασίες CD/CDE Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 21 deploy-app- production.yml deploy-app- staging.yml app_type app-nodejs role app-django role app-jetty role nodejs django jettyStaging Server Production Server SSH SSH
  • 22. Αρχιτεκτονική CI server -1- • Χρήση Docker • Ασφάλεια • Δημιουργία υπηρεσιών μέσω παραμετροποιημένων images (Dockerfiles) • Φορητότητα • 3 Docker containers • Jenkins • SonarQube • MySQL (για χρήση από SonarQube) Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 22
  • 23. Αρχιτεκτονική CI server -2- • Σύνδεση των containers μέσω Docker network cinet • Jenkins ↔ SonarQube • SonarQube ↔ MySQL • Xρήση Docker volumes, για διατήρηση δεδομένων Jenkins και MySQL Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 23 Jenkins SonarQube MySQL
  • 24. CI creator -1- • Webapp γραμμένο σε flask • Ansible εγκατεστημένο • Playbook, ρόλοι για deployment CI • Ουρά Celery με RabbitMQ, για την εκτέλεση Ansible Νοέμβριος 2017 24Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού
  • 25. CI creator -2- • Λήψη μεταβλητών από το WebUI: • App name • App type • Node.js • Django • Jetty • CI host/username • SonarQube MySQL passwords • staging host/username • production host/username • Απαίτηση: Ύπαρξη SSH keys Νοέμβριος 2017 25Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού
  • 26. CI creator video Νοέμβριος 2017 26Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού
  • 27. Εγχειρίδιο χρήσης CI Νοέμβριος 2017 27Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού
  • 28. Αποτελέσματα -1- Εκτέλεση CI build στο project του ISSEL, Web Recorder Server Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 28
  • 29. Αποτελέσματα -2- Αποτελέσματα SonarQube για Web Recorder Server Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 29
  • 30. Αποτελέσματα -3- Παρακολούθηση διεργασιών Web Recorder Server μέσω Node.js Production Process Manager, PM2 Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 30
  • 31. Αποτελέσματα -4- Δημιουργία υπηρεσίας Continuous Integration για την εταιρία YummyWallet Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 31
  • 32. Συμπεράσματα • Διευκόλυνση διαδικασίας εγκατάστασης συστήματος CI + CD/CDE • Συμβατότητα αρχιτεκτονικής με υποδομές cloud, δοκιμή σε υποδομές: • • • Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 32
  • 33. Μελλοντική Εργασία • Πλήρης αυτοματοποίηση παραμετροποίησης CI • Συμβατότητα με διαφορετικά λειτουργικά συστήματα (RedHat-based) • Αξιοποίηση APIs cloud παρόχων Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 33
  • 34. Κώδικας, παραδείγματα github.com/ioantsaf/ci Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 34
  • 35. Ευχαριστώ για την προσοχή σας! Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 35
  • 36. Ερωτήσεις, Επικοινωνία jiannist@gmail.com github.com/ioantsaf linkedin.com/in/giannis- tsafaras/ Νοέμβριος 2017 Ανάπτυξη και σχεδίαση αυτοματοποιημένης υποδομής Continuous Integration σε έργα λογισμικού 36