SlideShare a Scribd company logo
1 of 38
Ανάπτυξη αυτοματοποιημένης διαδικασίας
Continuous Integration σε έργα λογισμικού
Θεσσαλονίκη , Ιούλιος 2021
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ
ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ
ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΛΗΡΟΦΟΡΙΑΣ & ΥΠΟΛΟΓΙΣΜΩΝ
Διπλωματική Εργασία
Εκπόνηση:
Ιωσήφ Χατζηκυριάκου,
Α.Ε.Μ: 8605
Επιβλέποντας:
Ανδρέας Λ. Συμεωνίδης,
Αναπληρωτής Καθηγητής Α.Π.Θ.
Διάρθρωση Παρουσίασης
 Εισαγωγή
 Σύγκριση και επιλογή συστήματος CI
 Μεθοδολογία
 Αξιολόγηση & Αποτελέσματα
 Συμπεράσματα
 Μελλοντική Εργασία
Διάρθρωση Παρουσίασης
 Εισαγωγή
 Σύγκριση και επιλογή συστήματος CI
 Μεθοδολογία
 Αξιολόγηση & Αποτελέσματα
 Συμπεράσματα
 Μελλοντική Εργασία
Continuous Integration (CI)
 Συχνή συγχώνευση κώδικα (merging)
 Αυτοματοποιημένοι έλεγχοι
 Λειτουργικό προϊόν σε κάθε συγχώνευση
 Προσθήκη λειτουργιών σε κάθε έκδοση
Πλεονεκτήματα του CI
 Γρήγορη εύρεση και ελαχιστοποίηση σφαλμάτων κώδικα (bugs)
 Ελαχιστοποίηση και αποφυγή προβλημάτων ενσωμάτωσης
 Προβλήματα συγχώνευσης (merge conflicts)
 Ασυμβατότητα στοιχείων εφαρμογής
 Γρηγορότερη ανάπτυξη ποιοτικού και αξιόπιστου λογισμικού
 Υψηλή απόδοση και μείωση κόστους
Σκοπός της Διπλωματικής
 Απλοποίηση χρήσης ενός συστημάτος CI
Χρήση εύκολα παραμετροποιήσιμων προτύπων(templates) pipelines
Αυτόματη μεταφορά εφαρμογής σε δοκιμαστικό (staging) περιβάλλον
Δυνατότητα αυτόματης ενημέρωσης στο τελικό(production) περιβάλλον
 Δυνατότητα επιλογής deployment στη cloud πλατφόρμα Heroku
 Δυνατότητα επιλογής deployment σε remote server/virtual machine
 Yποστήριξη web εφαρμογών Node.js και Django
 Διευκόλυνση εκμάθησης διαδικασίας CI
 Απευθύνεται σε φοιτητές και προγραμματιστές με μικρή εμπειρία
 Συστήματα Continuous Integration
 Συστήματα διαχείρισης διαμόρφωσης λογισμικού
(software configuration management)
 Χρήση υπηρεσιών cloud computing
Γνώσεις που αποκτήθηκαν
Διάρθρωση Παρουσίασης
 Εισαγωγή
 Σύγκριση και επιλογή συστήματος CI
 Μεθοδολογία
 Αξιολόγηση & Αποτελέσματα
 Συμπεράσματα
 Μελλοντική Εργασία
Συστήματα CI (1/2)
 Έναρξη pipeline αυτόματα μετά από merge/commit
 Μεταγλώττιση(complile)
 Αυτόματοι Έλεγχοι (tests)
 Unit tests
 API tests
 Deploy
 Local CIs
 CI-as-a-Service (cloud based)
Συστήματα CI (2/2)
 Local CI
 Jenkins CI
- Open και Closed source έργα
- Πληθώρα Plugins
- Μεγάλη Υποστήριξη
- Δωρεάν
 CI-as-a-Service
 Travis CI
-Δημοφιλές cloud based CI
-Χρήση μέσω Github
 Circle CI
-Συνεργασία με Github , BitBucket
-Υποστήριξη λιγότερων γλωσσών από το Travis
 Gitlab CI
-Kώδικας και υλοποίηση μαζί ενσωματωμένα
-Γλώσσα Yaml
 Github Actions
-Δημοφιλές-Μεγάλη κοινότητα
-Github hosted / Self-hosted εκδόσεις
Επιλογή Συστήματος CI
 Πλεονεκτήματα Gitlab και Github
 Κώδικας και υλοποίηση μαζί ενσωματωμένα
 Διευκόλυνση διαδικασίας CI + CD/CDE
 Mικρές διαφορές μεταξύ Gitlab CI και Github Actions
 Επιλογή Gitlab CI
Στατική ανάλυση κώδικα
 Κύριες Μετρικές:
 Σφάλματα κώδικα (bugs)
 Αδυναμίες-κενά ασφαλείας (vulnerabilities)
 Διπλότυπος κώδικας (duplications)
 Επιλογή Code Quality
 Ενσωματωμένο στο Gitlab
 Βασίζεται στο εργαλείο Code Climate
 Χρειάζεται απλά προσθήκη του template στο pipeline
Continuous Deployment (CD)
Continuous Delivery (CDE) (1/2)
 Επέκταση του CI
 Εγκατάσταση νέας έκδοσης κώδικα στο επιθυμητό
περιβάλλον(staging/production) μετά την επιτυχία των βημάτων CI
 Αυτόματη εκτέλεση CD
 Αποδοχή χρήστη-χειροκίνητη εκτέλεση CDE
Continuous Deployment (CD)
Continuous Delivery (CDE) (2/2)
Στην παρούσα εργασία
 Χρήση CD για εγκατάσταση κώδικα στο staging περιβάλλον
 Χρήση CDE για εγκατάσταση κώδικα στο production περιβάλλον
 Χρήση Gitlab και κάποιου εργαλείου διαχείρισης διαμόρφωσης
λογισμικού (software configuration management, scm) για υλοποίηση
των CD/CDE σε εικονικές μηχανές (virtual machines)
 Πρώτο deployment με χρήση του εργαλείου scm και μετά μέσω Gitlab
Εργαλεία Software Configuration
Management (1/3)
 Καταγραφή αλλαγών σε έναν server
 Εγκατάσταση πακέτων
 Ρύθμιση υπηρεσιών,παραμέτρων συστήματος
 Εγκατάσταση κώδικα κ.α
 Στόχος η επαναπραγματοποίηση των αλλαγών σε άλλους servers
 Ευρέως χρησιμοποιούμενα εργαλεία:
 Ansible
 Puppet
 Chef
Εργαλεία Software Configuration
Management (2/3)
 Ansible
 Playbooks σε YAML γλώσσα
 Επικοινωνία μέσω SSH και χρήση χωρίς πράκτορα (agentless)
 Γραμμένο σε Python
 Puppet
 Manifests σε Domain Specific Language (DSL)
 Eπικοινωνία με HTTPS και απαιτείται πράκτορας
 Γραμμένο σε Ruby
 Chef
 Cookbooks σε Domain Specific Language (DSL) ή Ruby
 Απαιτείται πράκτορας
 Γραμμένο σε Ruby και Erlang
Εργαλεία Software Configuration
Management (3/3)
 Επιλογή Ansible
 Αρχιτεκτονική χωρίς χρήση πράκτορα
 Εξοικονόμηση πόρων
 Ασφάλεια
 Άμεση χρήση
 Προϋποθέσεις: SSH, Python
 Η γλώσσα YAML είναι απλή και εύκολη στην εκμάθηση
 Πολλά modules/plugins , αυτοματοποίηση κάθε λειτουργίας
Διάρθρωση Παρουσίασης
 Εισαγωγή
 Σύγκριση και επιλογή συστήματος CI
 Μεθοδολογία
 Αξιολόγηση & Αποτελέσματα
 Συμπεράσματα
 Μελλοντική Εργασία
Δομή CI + CD/CDE Pipeline
Στάδια CI + CD/CDE Pipeline (1/3)
 Preparation
 Εκτελείται αυτόματα από το Gitlab
 Έναρξη Docker executor
 Εγκατάσταση docker images(node.js ή django, services mysql,postgres)
 Προετοιμασία περιβάλλοντος για την εφαρμογή
Στάδια CI + CD/CDE Pipeline (2/3)
 Test / Code Quality
 Εγκατάσταση απαραίτητων πακέτων για τους ελέγχους της εφαρμογής
 Εκτέλεση Unit tests
 Εκτέλεση API tests
 Αποθήκευση test coverage
 Στατική ανάλυση κώδικα
 Δημιουργία αρχείου σφαλμάτων (bugs)
Στάδια CI + CD/CDE Pipeline (3/3)
 Staging deploy
 deploy_cloud_staging: Χρήση Heroku για deployment στο staging περιβάλλον
 deploy_server_staging: Χρήση Gitlab/Ansible για deployment στον staging server
 Production deploy approval
 Χειροκίνητη εκκίνηση των jobs στο στάδιο Production deploy από τον χρήστη
 Production deploy
 deploy_cloud_prod: Χρήση Heroku για deployment στο production περιβάλλον
 deploy_server_prod: Χρήση Gitlab/Ansible για deployment στον production server
Δομή επιλογής host και ρόλων
Διάρθρωση Παρουσίασης
 Εισαγωγή
 Σύγκριση και επιλογή συστήματος CI
 Μεθοδολογία
 Αξιολόγηση & Αποτελέσματα
 Συμπεράσματα
 Μελλοντική Εργασία
Webapp δημιουργίας αρχείου μεταβλητών
 App_name: Όνομα εφαρμογής
 Αpp_type: Node.js ή Django
 Repo_url: App repo στο Gitlab για
αντιγραφή στον remote server
 DB_type: MySQL ή PostgreSQL
 DB_password/DB_username/DB_na
me: Κωδικός / Όνομα χρήστη /’Ονομα
βάσης δεδομένων
1) Κατέβασμα ως αρχείο deploy-app-
vars.yml
2) Μετακίνηση αρχείου στο directory
gitlab-reusable-pipelines/Ansible
Δημιουργία μεταβλητών στο Gitlab
 Settings→CI/CD→ Variables
 SSH keys των servers για σύνδεση του
Giltab
 Heroku API keys για deployment στο
Heroku
 Oνόματα εφαρμογών στο Heroku
 Στοιχεία εφαρμογής,χρήστη,βάσης
δεδομένων
 Επιλογή τύπου βάσης δεδομένων
 Επιλογή για deployment στο Heroku ή
server
Δημιουργία αρχείου .gitlab-ci.yml
 CI/CD→ Editor→ Create new CI/CD pipeline
 Include nodejs-pipeline.yml για εφαρμογή Node.js
 Include django-pipeline.yml για εφαρμογή Django
 Copy/Paste το περιεχόμενο του αρχείου για τυχόν προσθήκες στο
pipeline από τον χρήστη αντί include
Aποτελέσματα (1/4)
Επιτυχής ολοκλήρωση όλων
των σταδίων του pipeline για
την εφαρμογή “Todo App
Create App”
Αρχείο gl-code-quality-
report.json με τα bugs
που περιλαμβάνει ο
κώδικας
Aποτελέσματα (2/4)
Επιτυχές deployment της εφαρμογής “Todo
App Create App” στο Heroku
Aποτελέσματα (3/4)
Επιτυχής εκτέλεση ansible playbook deploy-ci-staging.yml στη
virtual machine για την εφαρμογή “node-demo”
Aποτελέσματα (4/4)
Χειροκίνητη εκκίνηση
εκτέλεσης του
Production-deploy
σταδίου
Βήματα εκτέλεσης του
Gitlab Runner για το job
deploy_server_staging
του pipeline
Διάρθρωση Παρουσίασης
 Εισαγωγή
 Σύγκριση και επιλογή συστήματος CI
 Μεθοδολογία
 Αξιολόγηση & Αποτελέσματα
 Συμπεράσματα
 Μελλοντική Εργασία
Συμπεράσματα
 Απλοποιημένη και εύκολα κατανοητή διαδικασία
 Διευκόλυνση εκμάθησης και χρήσης συστημάτων CI + CD/CDE
 Συμβατότητα αρχιτεκτονικής με υποδομές cloud, δοκιμή σε Azure
 Δεν είναι εφικτή η πλήρης αυτοματοποίηση των βημάτων της
διαδικασίας
Διάρθρωση Παρουσίασης
 Εισαγωγή
 Σύγκριση και επιλογή συστήματος CI
 Μεθοδολογία
 Αξιολόγηση & Αποτελέσματα
 Συμπεράσματα
 Μελλοντική Εργασία
Μελλοντική Εργασία
 Υποστήριξη περισσότερων τύπων εφαρμογών πέρα από Node.js και
Django
 Υποστήριξη και άλλων τύπων βάσεων δεδομένων πέρα από MySQL
και PostgreSQL
 Προσθήκη λειτουργιών
 Αυτοματοποίηση των βημάτων της διαδικασίας ακόμα περισσότερο
Κώδικας
 https://gitlab.com/jhadjikyriakou/gitlab-reusable-ci-pipelines
Ευχαριστίες
Θα ήθελα να ευχαριστήσω θερμά:
 Τον κ. Συμεωνίδη Ανδρέα
 Όλους εσάς που παρακολουθήσατε την παρουσίαση!
Ευχαριστώ πολύ για την προσοχή σας!
Ερωτήσεις;

More Related Content

What's hot

Kagiafas Nikolaos Thesis Presentation
Kagiafas Nikolaos Thesis PresentationKagiafas Nikolaos Thesis Presentation
Kagiafas Nikolaos Thesis PresentationISSEL
 
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...ISSEL
 
Μαρία Κουιρουκίδου
Μαρία ΚουιρουκίδουΜαρία Κουιρουκίδου
Μαρία ΚουιρουκίδουISSEL
 
Evangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationEvangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationISSEL
 
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...ISSEL
 
Konstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis PresentationKonstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis PresentationISSEL
 
Ιωάννη Α. Ζαφειρίου
Ιωάννη Α. ΖαφειρίουΙωάννη Α. Ζαφειρίου
Ιωάννη Α. ΖαφειρίουISSEL
 
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...ISSEL
 

What's hot (8)

Kagiafas Nikolaos Thesis Presentation
Kagiafas Nikolaos Thesis PresentationKagiafas Nikolaos Thesis Presentation
Kagiafas Nikolaos Thesis Presentation
 
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
 
Μαρία Κουιρουκίδου
Μαρία ΚουιρουκίδουΜαρία Κουιρουκίδου
Μαρία Κουιρουκίδου
 
Evangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationEvangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentation
 
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
 
Konstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis PresentationKonstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis Presentation
 
Ιωάννη Α. Ζαφειρίου
Ιωάννη Α. ΖαφειρίουΙωάννη Α. Ζαφειρίου
Ιωάννη Α. Ζαφειρίου
 
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
 

Similar to Development of an automatic procedure for Continuous Integration

Ιωάννης Τσαφαράς
Ιωάννης ΤσαφαράςΙωάννης Τσαφαράς
Ιωάννης ΤσαφαράςISSEL
 
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...ISSEL
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
 
Μιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλISSEL
 
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
 
Applying Data Mining Techniques on Software Repositories to Extract Design an...
Applying Data Mining Techniques on Software Repositories to Extract Design an...Applying Data Mining Techniques on Software Repositories to Extract Design an...
Applying Data Mining Techniques on Software Repositories to Extract Design an...ISSEL
 
Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1Stathis Gourzis
 
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...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...
Analysis and profiling of developer profiles using data mining techniques fro...ISSEL
 
3rd StudentGuru Event | Robotics developer studio 2008 | 11-21-2008
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-2008Alexandros Sigaras
 
Thesis.Net - Training
Thesis.Net - TrainingThesis.Net - Training
Thesis.Net - TrainingAnna Tsolakou
 
Creating an Open Archival Information System compliant archive for CERN
Creating an Open Archival Information System compliant archive for CERNCreating an Open Archival Information System compliant archive for CERN
Creating an Open Archival Information System compliant archive for CERNISSEL
 
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERNΔημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERNISSEL
 
Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.Stathis Gourzis
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...ISSEL
 

Similar to Development of an automatic procedure for Continuous Integration (20)

Ιωάννης Τσαφαράς
Ιωάννης ΤσαφαράςΙωάννης Τσαφαράς
Ιωάννης Τσαφαράς
 
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
 
Μιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ Παπαμιχαήλ
 
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
 
Applying Data Mining Techniques on Software Repositories to Extract Design an...
Applying Data Mining Techniques on Software Repositories to Extract Design an...Applying Data Mining Techniques on Software Repositories to Extract Design an...
Applying Data Mining Techniques on Software Repositories to Extract Design an...
 
Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1
 
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
 
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...
Analysis and profiling of developer profiles using data mining techniques fro...
 
KanoutasThomasThesis
KanoutasThomasThesisKanoutasThomasThesis
KanoutasThomasThesis
 
3rd StudentGuru Event | Robotics developer studio 2008 | 11-21-2008
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
 
Thesis.Net - Training
Thesis.Net - TrainingThesis.Net - Training
Thesis.Net - Training
 
Creating an Open Archival Information System compliant archive for CERN
Creating an Open Archival Information System compliant archive for CERNCreating an Open Archival Information System compliant archive for CERN
Creating an Open Archival Information System compliant archive for CERN
 
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERNΔημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
 
Aepp-6.4-6.7-tsiotakis
Aepp-6.4-6.7-tsiotakisAepp-6.4-6.7-tsiotakis
Aepp-6.4-6.7-tsiotakis
 
Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.
 
SE4
SE4SE4
SE4
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
 
Εισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤΕισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤ
 

More from ISSEL

Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...ISSEL
 
Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...ISSEL
 
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...ISSEL
 
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...ISSEL
 
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςΑνάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςISSEL
 
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxΑνάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxISSEL
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...ISSEL
 
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...ISSEL
 
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...ISSEL
 
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνΔημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνISSEL
 
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταΕξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταISSEL
 
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...ISSEL
 
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ISSEL
 
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούΕξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούISSEL
 
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςΑνάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςISSEL
 
Camera-based localization of annotated objects in indoor environments
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
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...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...
Design and implementation of an automation mechanism to automatically develop...ISSEL
 
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...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...
Static Analysis of Python code and Identification of Potential Security Vulne...ISSEL
 

More from ISSEL (20)

Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...
 
Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...
 
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
 
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
 
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςΑνάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
 
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxΑνάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
 
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
 
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
 
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνΔημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
 
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταΕξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
 
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
 
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
 
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούΕξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
 
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςΑνάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
 
Camera-based localization of annotated objects in indoor environments
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
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
 
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...
Design and implementation of an automation mechanism to automatically develop...
 
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
 
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...
Static Analysis of Python code and Identification of Potential Security Vulne...
 

Development of an automatic procedure for Continuous Integration

  • 1. Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού Θεσσαλονίκη , Ιούλιος 2021 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΛΗΡΟΦΟΡΙΑΣ & ΥΠΟΛΟΓΙΣΜΩΝ Διπλωματική Εργασία Εκπόνηση: Ιωσήφ Χατζηκυριάκου, Α.Ε.Μ: 8605 Επιβλέποντας: Ανδρέας Λ. Συμεωνίδης, Αναπληρωτής Καθηγητής Α.Π.Θ.
  • 2. Διάρθρωση Παρουσίασης  Εισαγωγή  Σύγκριση και επιλογή συστήματος CI  Μεθοδολογία  Αξιολόγηση & Αποτελέσματα  Συμπεράσματα  Μελλοντική Εργασία
  • 3. Διάρθρωση Παρουσίασης  Εισαγωγή  Σύγκριση και επιλογή συστήματος CI  Μεθοδολογία  Αξιολόγηση & Αποτελέσματα  Συμπεράσματα  Μελλοντική Εργασία
  • 4. Continuous Integration (CI)  Συχνή συγχώνευση κώδικα (merging)  Αυτοματοποιημένοι έλεγχοι  Λειτουργικό προϊόν σε κάθε συγχώνευση  Προσθήκη λειτουργιών σε κάθε έκδοση
  • 5. Πλεονεκτήματα του CI  Γρήγορη εύρεση και ελαχιστοποίηση σφαλμάτων κώδικα (bugs)  Ελαχιστοποίηση και αποφυγή προβλημάτων ενσωμάτωσης  Προβλήματα συγχώνευσης (merge conflicts)  Ασυμβατότητα στοιχείων εφαρμογής  Γρηγορότερη ανάπτυξη ποιοτικού και αξιόπιστου λογισμικού  Υψηλή απόδοση και μείωση κόστους
  • 6. Σκοπός της Διπλωματικής  Απλοποίηση χρήσης ενός συστημάτος CI Χρήση εύκολα παραμετροποιήσιμων προτύπων(templates) pipelines Αυτόματη μεταφορά εφαρμογής σε δοκιμαστικό (staging) περιβάλλον Δυνατότητα αυτόματης ενημέρωσης στο τελικό(production) περιβάλλον  Δυνατότητα επιλογής deployment στη cloud πλατφόρμα Heroku  Δυνατότητα επιλογής deployment σε remote server/virtual machine  Yποστήριξη web εφαρμογών Node.js και Django  Διευκόλυνση εκμάθησης διαδικασίας CI  Απευθύνεται σε φοιτητές και προγραμματιστές με μικρή εμπειρία
  • 7.  Συστήματα Continuous Integration  Συστήματα διαχείρισης διαμόρφωσης λογισμικού (software configuration management)  Χρήση υπηρεσιών cloud computing Γνώσεις που αποκτήθηκαν
  • 8. Διάρθρωση Παρουσίασης  Εισαγωγή  Σύγκριση και επιλογή συστήματος CI  Μεθοδολογία  Αξιολόγηση & Αποτελέσματα  Συμπεράσματα  Μελλοντική Εργασία
  • 9. Συστήματα CI (1/2)  Έναρξη pipeline αυτόματα μετά από merge/commit  Μεταγλώττιση(complile)  Αυτόματοι Έλεγχοι (tests)  Unit tests  API tests  Deploy  Local CIs  CI-as-a-Service (cloud based)
  • 10. Συστήματα CI (2/2)  Local CI  Jenkins CI - Open και Closed source έργα - Πληθώρα Plugins - Μεγάλη Υποστήριξη - Δωρεάν  CI-as-a-Service  Travis CI -Δημοφιλές cloud based CI -Χρήση μέσω Github  Circle CI -Συνεργασία με Github , BitBucket -Υποστήριξη λιγότερων γλωσσών από το Travis  Gitlab CI -Kώδικας και υλοποίηση μαζί ενσωματωμένα -Γλώσσα Yaml  Github Actions -Δημοφιλές-Μεγάλη κοινότητα -Github hosted / Self-hosted εκδόσεις
  • 11. Επιλογή Συστήματος CI  Πλεονεκτήματα Gitlab και Github  Κώδικας και υλοποίηση μαζί ενσωματωμένα  Διευκόλυνση διαδικασίας CI + CD/CDE  Mικρές διαφορές μεταξύ Gitlab CI και Github Actions  Επιλογή Gitlab CI
  • 12. Στατική ανάλυση κώδικα  Κύριες Μετρικές:  Σφάλματα κώδικα (bugs)  Αδυναμίες-κενά ασφαλείας (vulnerabilities)  Διπλότυπος κώδικας (duplications)  Επιλογή Code Quality  Ενσωματωμένο στο Gitlab  Βασίζεται στο εργαλείο Code Climate  Χρειάζεται απλά προσθήκη του template στο pipeline
  • 13. Continuous Deployment (CD) Continuous Delivery (CDE) (1/2)  Επέκταση του CI  Εγκατάσταση νέας έκδοσης κώδικα στο επιθυμητό περιβάλλον(staging/production) μετά την επιτυχία των βημάτων CI  Αυτόματη εκτέλεση CD  Αποδοχή χρήστη-χειροκίνητη εκτέλεση CDE
  • 14. Continuous Deployment (CD) Continuous Delivery (CDE) (2/2) Στην παρούσα εργασία  Χρήση CD για εγκατάσταση κώδικα στο staging περιβάλλον  Χρήση CDE για εγκατάσταση κώδικα στο production περιβάλλον  Χρήση Gitlab και κάποιου εργαλείου διαχείρισης διαμόρφωσης λογισμικού (software configuration management, scm) για υλοποίηση των CD/CDE σε εικονικές μηχανές (virtual machines)  Πρώτο deployment με χρήση του εργαλείου scm και μετά μέσω Gitlab
  • 15. Εργαλεία Software Configuration Management (1/3)  Καταγραφή αλλαγών σε έναν server  Εγκατάσταση πακέτων  Ρύθμιση υπηρεσιών,παραμέτρων συστήματος  Εγκατάσταση κώδικα κ.α  Στόχος η επαναπραγματοποίηση των αλλαγών σε άλλους servers  Ευρέως χρησιμοποιούμενα εργαλεία:  Ansible  Puppet  Chef
  • 16. Εργαλεία Software Configuration Management (2/3)  Ansible  Playbooks σε YAML γλώσσα  Επικοινωνία μέσω SSH και χρήση χωρίς πράκτορα (agentless)  Γραμμένο σε Python  Puppet  Manifests σε Domain Specific Language (DSL)  Eπικοινωνία με HTTPS και απαιτείται πράκτορας  Γραμμένο σε Ruby  Chef  Cookbooks σε Domain Specific Language (DSL) ή Ruby  Απαιτείται πράκτορας  Γραμμένο σε Ruby και Erlang
  • 17. Εργαλεία Software Configuration Management (3/3)  Επιλογή Ansible  Αρχιτεκτονική χωρίς χρήση πράκτορα  Εξοικονόμηση πόρων  Ασφάλεια  Άμεση χρήση  Προϋποθέσεις: SSH, Python  Η γλώσσα YAML είναι απλή και εύκολη στην εκμάθηση  Πολλά modules/plugins , αυτοματοποίηση κάθε λειτουργίας
  • 18. Διάρθρωση Παρουσίασης  Εισαγωγή  Σύγκριση και επιλογή συστήματος CI  Μεθοδολογία  Αξιολόγηση & Αποτελέσματα  Συμπεράσματα  Μελλοντική Εργασία
  • 19. Δομή CI + CD/CDE Pipeline
  • 20. Στάδια CI + CD/CDE Pipeline (1/3)  Preparation  Εκτελείται αυτόματα από το Gitlab  Έναρξη Docker executor  Εγκατάσταση docker images(node.js ή django, services mysql,postgres)  Προετοιμασία περιβάλλοντος για την εφαρμογή
  • 21. Στάδια CI + CD/CDE Pipeline (2/3)  Test / Code Quality  Εγκατάσταση απαραίτητων πακέτων για τους ελέγχους της εφαρμογής  Εκτέλεση Unit tests  Εκτέλεση API tests  Αποθήκευση test coverage  Στατική ανάλυση κώδικα  Δημιουργία αρχείου σφαλμάτων (bugs)
  • 22. Στάδια CI + CD/CDE Pipeline (3/3)  Staging deploy  deploy_cloud_staging: Χρήση Heroku για deployment στο staging περιβάλλον  deploy_server_staging: Χρήση Gitlab/Ansible για deployment στον staging server  Production deploy approval  Χειροκίνητη εκκίνηση των jobs στο στάδιο Production deploy από τον χρήστη  Production deploy  deploy_cloud_prod: Χρήση Heroku για deployment στο production περιβάλλον  deploy_server_prod: Χρήση Gitlab/Ansible για deployment στον production server
  • 23. Δομή επιλογής host και ρόλων
  • 24. Διάρθρωση Παρουσίασης  Εισαγωγή  Σύγκριση και επιλογή συστήματος CI  Μεθοδολογία  Αξιολόγηση & Αποτελέσματα  Συμπεράσματα  Μελλοντική Εργασία
  • 25. Webapp δημιουργίας αρχείου μεταβλητών  App_name: Όνομα εφαρμογής  Αpp_type: Node.js ή Django  Repo_url: App repo στο Gitlab για αντιγραφή στον remote server  DB_type: MySQL ή PostgreSQL  DB_password/DB_username/DB_na me: Κωδικός / Όνομα χρήστη /’Ονομα βάσης δεδομένων 1) Κατέβασμα ως αρχείο deploy-app- vars.yml 2) Μετακίνηση αρχείου στο directory gitlab-reusable-pipelines/Ansible
  • 26. Δημιουργία μεταβλητών στο Gitlab  Settings→CI/CD→ Variables  SSH keys των servers για σύνδεση του Giltab  Heroku API keys για deployment στο Heroku  Oνόματα εφαρμογών στο Heroku  Στοιχεία εφαρμογής,χρήστη,βάσης δεδομένων  Επιλογή τύπου βάσης δεδομένων  Επιλογή για deployment στο Heroku ή server
  • 27. Δημιουργία αρχείου .gitlab-ci.yml  CI/CD→ Editor→ Create new CI/CD pipeline  Include nodejs-pipeline.yml για εφαρμογή Node.js  Include django-pipeline.yml για εφαρμογή Django  Copy/Paste το περιεχόμενο του αρχείου για τυχόν προσθήκες στο pipeline από τον χρήστη αντί include
  • 28. Aποτελέσματα (1/4) Επιτυχής ολοκλήρωση όλων των σταδίων του pipeline για την εφαρμογή “Todo App Create App” Αρχείο gl-code-quality- report.json με τα bugs που περιλαμβάνει ο κώδικας
  • 29. Aποτελέσματα (2/4) Επιτυχές deployment της εφαρμογής “Todo App Create App” στο Heroku
  • 30. Aποτελέσματα (3/4) Επιτυχής εκτέλεση ansible playbook deploy-ci-staging.yml στη virtual machine για την εφαρμογή “node-demo”
  • 31. Aποτελέσματα (4/4) Χειροκίνητη εκκίνηση εκτέλεσης του Production-deploy σταδίου Βήματα εκτέλεσης του Gitlab Runner για το job deploy_server_staging του pipeline
  • 32. Διάρθρωση Παρουσίασης  Εισαγωγή  Σύγκριση και επιλογή συστήματος CI  Μεθοδολογία  Αξιολόγηση & Αποτελέσματα  Συμπεράσματα  Μελλοντική Εργασία
  • 33. Συμπεράσματα  Απλοποιημένη και εύκολα κατανοητή διαδικασία  Διευκόλυνση εκμάθησης και χρήσης συστημάτων CI + CD/CDE  Συμβατότητα αρχιτεκτονικής με υποδομές cloud, δοκιμή σε Azure  Δεν είναι εφικτή η πλήρης αυτοματοποίηση των βημάτων της διαδικασίας
  • 34. Διάρθρωση Παρουσίασης  Εισαγωγή  Σύγκριση και επιλογή συστήματος CI  Μεθοδολογία  Αξιολόγηση & Αποτελέσματα  Συμπεράσματα  Μελλοντική Εργασία
  • 35. Μελλοντική Εργασία  Υποστήριξη περισσότερων τύπων εφαρμογών πέρα από Node.js και Django  Υποστήριξη και άλλων τύπων βάσεων δεδομένων πέρα από MySQL και PostgreSQL  Προσθήκη λειτουργιών  Αυτοματοποίηση των βημάτων της διαδικασίας ακόμα περισσότερο
  • 37. Ευχαριστίες Θα ήθελα να ευχαριστήσω θερμά:  Τον κ. Συμεωνίδη Ανδρέα  Όλους εσάς που παρακολουθήσατε την παρουσίαση!
  • 38. Ευχαριστώ πολύ για την προσοχή σας! Ερωτήσεις;