SlideShare a Scribd company logo
Ανάπτυξη αυτοματοποιημένης διαδικασίας
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
Ευχαριστίες
Θα ήθελα να ευχαριστήσω θερμά:
 Τον κ. Συμεωνίδη Ανδρέα
 Όλους εσάς που παρακολουθήσατε την παρουσίαση!
Ευχαριστώ πολύ για την προσοχή σας!
Ερωτήσεις;
Ad

More Related Content

What's hot (15)

Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
ISSEL
 
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών  για απομακρυσμένα ρομπότ, στο πλαίσ...Μεθοδολογία ανάπτυξης γραφικών εφαρμογών  για απομακρυσμένα ρομπότ, στο πλαίσ...
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...
ISSEL
 
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
ISSEL
 
Konstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis PresentationKonstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis Presentation
ISSEL
 
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...
ISSEL
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
ISSEL
 
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής MάθησηςΈγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
ISSEL
 
Μαρία Κουιρουκίδου
Μαρία ΚουιρουκίδουΜαρία Κουιρουκίδου
Μαρία Κουιρουκίδου
ISSEL
 
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
ISSEL
 
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
ISSEL
 
Θεμιστοκλής Παπαβασιλείου
Θεμιστοκλής ΠαπαβασιλείουΘεμιστοκλής Παπαβασιλείου
Θεμιστοκλής Παπαβασιλείου
ISSEL
 
Ιωάννη Α. Ζαφειρίου
Ιωάννη Α. ΖαφειρίουΙωάννη Α. Ζαφειρίου
Ιωάννη Α. Ζαφειρίου
ISSEL
 
Μιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ Παπαμιχαήλ
ISSEL
 
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
ISSEL
 
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής ΝοημοσύνηςΕντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
ISSEL
 
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...
ISSEL
 
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών  για απομακρυσμένα ρομπότ, στο πλαίσ...Μεθοδολογία ανάπτυξης γραφικών εφαρμογών  για απομακρυσμένα ρομπότ, στο πλαίσ...
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...
ISSEL
 
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
ISSEL
 
Konstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis PresentationKonstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis Presentation
ISSEL
 
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...
ISSEL
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
ISSEL
 
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής MάθησηςΈγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
ISSEL
 
Μαρία Κουιρουκίδου
Μαρία ΚουιρουκίδουΜαρία Κουιρουκίδου
Μαρία Κουιρουκίδου
ISSEL
 
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
ISSEL
 
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
ISSEL
 
Θεμιστοκλής Παπαβασιλείου
Θεμιστοκλής ΠαπαβασιλείουΘεμιστοκλής Παπαβασιλείου
Θεμιστοκλής Παπαβασιλείου
ISSEL
 
Ιωάννη Α. Ζαφειρίου
Ιωάννη Α. ΖαφειρίουΙωάννη Α. Ζαφειρίου
Ιωάννη Α. Ζαφειρίου
ISSEL
 
Μιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ Παπαμιχαήλ
ISSEL
 
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
ISSEL
 
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής ΝοημοσύνηςΕντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
ISSEL
 

Similar to Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού (20)

Ιωάννης Τσαφαράς
Ιωάννης ΤσαφαράςΙωάννης Τσαφαράς
Ιωάννης Τσαφαράς
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
 
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
 
Ανάλυση διαλόγων προγραμματιστών με το ChatGPT
Ανάλυση διαλόγων προγραμματιστών με το ChatGPTΑνάλυση διαλόγων προγραμματιστών με το ChatGPT
Ανάλυση διαλόγων προγραμματιστών με το ChatGPT
ISSEL
 
Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1
Stathis 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
 
KanoutasThomasThesis
KanoutasThomasThesisKanoutasThomasThesis
KanoutasThomasThesis
ThomasKanoutas
 
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
Alexandros Sigaras
 
AiANTAS - Integrated Ops Control & Management Platform for UxV, Robotics & Vi...
AiANTAS - Integrated Ops Control & Management Platform for UxV, Robotics & Vi...AiANTAS - Integrated Ops Control & Management Platform for UxV, Robotics & Vi...
AiANTAS - Integrated Ops Control & Management Platform for UxV, Robotics & Vi...
PROBOTEK
 
Thesis.Net - Training
Thesis.Net - TrainingThesis.Net - Training
Thesis.Net - Training
Anna 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 CERN
ISSEL
 
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERNΔημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
ISSEL
 
Σχεδιασμός και υλοποίηση No-Code μηχανισμού για τη δημιουργία και εφαρμογή π...
Σχεδιασμός και υλοποίηση No-Code μηχανισμού  για τη δημιουργία και εφαρμογή π...Σχεδιασμός και υλοποίηση No-Code μηχανισμού  για τη δημιουργία και εφαρμογή π...
Σχεδιασμός και υλοποίηση No-Code μηχανισμού για τη δημιουργία και εφαρμογή π...
ISSEL
 
Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.
Stathis Gourzis
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
ISSEL
 
Ιωάννης Τσαφαράς
Ιωάννης ΤσαφαράςΙωάννης Τσαφαράς
Ιωάννης Τσαφαράς
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
 
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
 
Ανάλυση διαλόγων προγραμματιστών με το ChatGPT
Ανάλυση διαλόγων προγραμματιστών με το ChatGPTΑνάλυση διαλόγων προγραμματιστών με το ChatGPT
Ανάλυση διαλόγων προγραμματιστών με το ChatGPT
ISSEL
 
Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1
Stathis 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-2008
Alexandros Sigaras
 
AiANTAS - Integrated Ops Control & Management Platform for UxV, Robotics & Vi...
AiANTAS - Integrated Ops Control & Management Platform for UxV, Robotics & Vi...AiANTAS - Integrated Ops Control & Management Platform for UxV, Robotics & Vi...
AiANTAS - Integrated Ops Control & Management Platform for UxV, Robotics & Vi...
PROBOTEK
 
Thesis.Net - Training
Thesis.Net - TrainingThesis.Net - Training
Thesis.Net - Training
Anna 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 CERN
ISSEL
 
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERNΔημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
ISSEL
 
Σχεδιασμός και υλοποίηση No-Code μηχανισμού για τη δημιουργία και εφαρμογή π...
Σχεδιασμός και υλοποίηση No-Code μηχανισμού  για τη δημιουργία και εφαρμογή π...Σχεδιασμός και υλοποίηση No-Code μηχανισμού  για τη δημιουργία και εφαρμογή π...
Σχεδιασμός και υλοποίηση No-Code μηχανισμού για τη δημιουργία και εφαρμογή π...
ISSEL
 
Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.
Stathis Gourzis
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
ISSEL
 
Ad

More from ISSEL (20)

A hybrid Edge-to-Cloud Architecture towards low-code development of global fo...
A hybrid Edge-to-Cloud Architecture towards low-codedevelopment of global fo...A hybrid Edge-to-Cloud Architecture towards low-codedevelopment of global fo...
A hybrid Edge-to-Cloud Architecture towards low-code development of global fo...
ISSEL
 
Upon evaluating source code generated by LLMs and improving the prompt engine...
Upon evaluating source code generated by LLMs and improving the prompt engine...Upon evaluating source code generated by LLMs and improving the prompt engine...
Upon evaluating source code generated by LLMs and improving the prompt engine...
ISSEL
 
Implementation of a recording and playback tool for data served by IoT brokers
Implementation of a recording and playback tool for data served by IoT brokersImplementation of a recording and playback tool for data served by IoT brokers
Implementation of a recording and playback tool for data served by IoT brokers
ISSEL
 
Source Code Bug Detection and Repair using Deep Learning Techniques
Source Code Bug Detection and Repair using Deep Learning TechniquesSource Code Bug Detection and Repair using Deep Learning Techniques
Source Code Bug Detection and Repair using Deep Learning Techniques
ISSEL
 
Implementation of a Mechanism for Automatic Transformation and Synchronizatio...
Implementation of a Mechanism for Automatic Transformation and Synchronizatio...Implementation of a Mechanism for Automatic Transformation and Synchronizatio...
Implementation of a Mechanism for Automatic Transformation and Synchronizatio...
ISSEL
 
Bias detection and evaluation in personalized ubiquitous computing
Bias detection and evaluation in personalized ubiquitous computingBias detection and evaluation in personalized ubiquitous computing
Bias detection and evaluation in personalized ubiquitous computing
ISSEL
 
Development of a Data Stream Prediction Methodology using AutoML models
Development of a Data Stream Prediction Methodology using AutoML modelsDevelopment of a Data Stream Prediction Methodology using AutoML models
Development of a Data Stream Prediction Methodology using AutoML models
ISSEL
 
Methodology and prototype design for the identification of recyclable materia...
Methodology and prototype design for the identification of recyclable materia...Methodology and prototype design for the identification of recyclable materia...
Methodology and prototype design for the identification of recyclable materia...
ISSEL
 
DynaCraft: a super-strongly typed programming language
DynaCraft: a super-strongly typed programming languageDynaCraft: a super-strongly typed programming language
DynaCraft: a super-strongly typed programming language
ISSEL
 
Applying Machine Learning Techniques on Software Data Streams for Automated I...
Applying Machine Learning Techniques on Software Data Streams for Automated I...Applying Machine Learning Techniques on Software Data Streams for Automated I...
Applying Machine Learning Techniques on Software Data Streams for Automated I...
ISSEL
 
Application of Drift Detection and Management Techniques in Data Streams Usin...
Application of Drift Detection and Management Techniques in Data Streams Usin...Application of Drift Detection and Management Techniques in Data Streams Usin...
Application of Drift Detection and Management Techniques in Data Streams Usin...
ISSEL
 
Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...
Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...
Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...
ISSEL
 
Μελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση Κειμένου
Μελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση ΚειμένουΜελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση Κειμένου
Μελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση Κειμένου
ISSEL
 
Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...
Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...
Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...
ISSEL
 
Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...
ISSEL
 
Ανάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptx
Ανάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptxΑνάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptx
Ανάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptx
ISSEL
 
Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...
Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...
Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...
ISSEL
 
Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...
Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...
Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...
ISSEL
 
Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...
Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...
Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...
ISSEL
 
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτωνΕφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
ISSEL
 
A hybrid Edge-to-Cloud Architecture towards low-code development of global fo...
A hybrid Edge-to-Cloud Architecture towards low-codedevelopment of global fo...A hybrid Edge-to-Cloud Architecture towards low-codedevelopment of global fo...
A hybrid Edge-to-Cloud Architecture towards low-code development of global fo...
ISSEL
 
Upon evaluating source code generated by LLMs and improving the prompt engine...
Upon evaluating source code generated by LLMs and improving the prompt engine...Upon evaluating source code generated by LLMs and improving the prompt engine...
Upon evaluating source code generated by LLMs and improving the prompt engine...
ISSEL
 
Implementation of a recording and playback tool for data served by IoT brokers
Implementation of a recording and playback tool for data served by IoT brokersImplementation of a recording and playback tool for data served by IoT brokers
Implementation of a recording and playback tool for data served by IoT brokers
ISSEL
 
Source Code Bug Detection and Repair using Deep Learning Techniques
Source Code Bug Detection and Repair using Deep Learning TechniquesSource Code Bug Detection and Repair using Deep Learning Techniques
Source Code Bug Detection and Repair using Deep Learning Techniques
ISSEL
 
Implementation of a Mechanism for Automatic Transformation and Synchronizatio...
Implementation of a Mechanism for Automatic Transformation and Synchronizatio...Implementation of a Mechanism for Automatic Transformation and Synchronizatio...
Implementation of a Mechanism for Automatic Transformation and Synchronizatio...
ISSEL
 
Bias detection and evaluation in personalized ubiquitous computing
Bias detection and evaluation in personalized ubiquitous computingBias detection and evaluation in personalized ubiquitous computing
Bias detection and evaluation in personalized ubiquitous computing
ISSEL
 
Development of a Data Stream Prediction Methodology using AutoML models
Development of a Data Stream Prediction Methodology using AutoML modelsDevelopment of a Data Stream Prediction Methodology using AutoML models
Development of a Data Stream Prediction Methodology using AutoML models
ISSEL
 
Methodology and prototype design for the identification of recyclable materia...
Methodology and prototype design for the identification of recyclable materia...Methodology and prototype design for the identification of recyclable materia...
Methodology and prototype design for the identification of recyclable materia...
ISSEL
 
DynaCraft: a super-strongly typed programming language
DynaCraft: a super-strongly typed programming languageDynaCraft: a super-strongly typed programming language
DynaCraft: a super-strongly typed programming language
ISSEL
 
Applying Machine Learning Techniques on Software Data Streams for Automated I...
Applying Machine Learning Techniques on Software Data Streams for Automated I...Applying Machine Learning Techniques on Software Data Streams for Automated I...
Applying Machine Learning Techniques on Software Data Streams for Automated I...
ISSEL
 
Application of Drift Detection and Management Techniques in Data Streams Usin...
Application of Drift Detection and Management Techniques in Data Streams Usin...Application of Drift Detection and Management Techniques in Data Streams Usin...
Application of Drift Detection and Management Techniques in Data Streams Usin...
ISSEL
 
Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...
Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...
Υλοποίηση συστήματος προς καταχώρηση και αυτόματη αναγνώριση κατηγοριών κινήσ...
ISSEL
 
Μελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση Κειμένου
Μελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση ΚειμένουΜελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση Κειμένου
Μελέτη Τεχνικών Ημι-επιβλεπόμενης Μάθησης για Κατηγοριοποίηση Κειμένου
ISSEL
 
Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...
Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...
Υλοποίηση συστήµατος εντοπισµού ϑέσης σε εσωτερικό χώρο µε χρήση αισθητήρων κ...
ISSEL
 
Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εκτίμησης προσωποποιημένου Χρόνου Εκτέλεσης ...
ISSEL
 
Ανάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptx
Ανάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptxΑνάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptx
Ανάπτυξη Μοντέλου Διόρθωσης Γραμματικών Λαθών για την Ελληνική Γλώσσα.pptx
ISSEL
 
Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...
Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...
Εντοπισμός και χαρτογράφηση ατελειών οδοστρώματος κατά την οδήγηση μέσω αισθη...
ISSEL
 
Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...
Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...
Ταχεία ανάπτυξη λογισμικού για πράκτορες συναλλαγών υψηλής συχνότητας σε αγορ...
ISSEL
 
Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...
Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...
Σχεδιασµός και υλοποίηση αρθρωτού συστήµατος υπολογισµού τρισδιάστατης θέσης ...
ISSEL
 
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτωνΕφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
Εφαρμογή τεχνικών εξόρυξης δεδομένων για την αυτοματοποιημένη διόρθωση σφαλμάτων
ISSEL
 
Ad

Ανάπτυξη αυτοματοποιημένης διαδικασίας 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. Ευχαριστώ πολύ για την προσοχή σας! Ερωτήσεις;