Development of an automatic procedure for Continuous Integration

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

Recommended

Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ... by
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...ISSEL
39 views25 slides
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού by
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούΑνάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούISSEL
79 views38 slides
Pantelidou Eirini: Design and development of a system for incremental static ... by
Pantelidou Eirini: Design and development of a system for incremental static ...Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...Manos Tsardoulias
70 views26 slides
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι... by
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...ISSEL
68 views21 slides
Υλοποίηση εργαλείου πλήρους στοίβας σε περιβάλλον Kubernetes για την αυτοµατο... by
Υλοποίηση εργαλείου πλήρους στοίβας σε περιβάλλον Kubernetes για την αυτοµατο...Υλοποίηση εργαλείου πλήρους στοίβας σε περιβάλλον Kubernetes για την αυτοµατο...
Υλοποίηση εργαλείου πλήρους στοίβας σε περιβάλλον Kubernetes για την αυτοµατο...ISSEL
140 views17 slides
Theofilos Georgiadis: Library recommendation system for the reuse of software... by
Theofilos Georgiadis: Library recommendation system for the reuse of software...Theofilos Georgiadis: Library recommendation system for the reuse of software...
Theofilos Georgiadis: Library recommendation system for the reuse of software...Manos Tsardoulias
45 views20 slides

More Related Content

What's hot

Kagiafas Nikolaos Thesis Presentation by
Kagiafas Nikolaos Thesis PresentationKagiafas Nikolaos Thesis Presentation
Kagiafas Nikolaos Thesis PresentationISSEL
88 views25 slides
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ... by
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...
Ανάπτυξη εργαλείου αυτοματοποίησης της παραγωγής σεναρίων για τη δημιουργία ψ...ISSEL
84 views26 slides
Μαρία Κουιρουκίδου by
Μαρία ΚουιρουκίδουΜαρία Κουιρουκίδου
Μαρία ΚουιρουκίδουISSEL
146 views28 slides
Evangelos papathomas diploma thesis presentation by
Evangelos papathomas diploma thesis presentationEvangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationISSEL
190 views32 slides
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου... by
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...ISSEL
73 views18 slides
Konstantinos Koukoutegos Diploma Thesis Presentation by
Konstantinos Koukoutegos Diploma Thesis PresentationKonstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis PresentationISSEL
95 views26 slides

What's hot(8)

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

Similar to Development of an automatic procedure for Continuous Integration

Ιωάννης Τσαφαράς by
Ιωάννης ΤσαφαράςΙωάννης Τσαφαράς
Ιωάννης ΤσαφαράςISSEL
235 views36 slides
Ruby On Rails Introduction [Εισαγωγή στο Rails] by
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
2.3K views63 slides
Μιχαήλ Παπαμιχαήλ by
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλISSEL
160 views28 slides
Applying Data Mining Techniques on Software Repositories to Extract Design an... by
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
29 views25 slides
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα... by
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
48 views25 slides
Προγραμματισμός σε Clipper - 1 by
Προγραμματισμός σε Clipper - 1Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1Stathis Gourzis
459 views48 slides

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

Ιωάννης Τσαφαράς by ISSEL
Ιωάννης ΤσαφαράςΙωάννης Τσαφαράς
Ιωάννης Τσαφαράς
ISSEL235 views
Ruby On Rails Introduction [Εισαγωγή στο Rails] by Nikos Dimitrakopoulos
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Μιχαήλ Παπαμιχαήλ by ISSEL
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ Παπαμιχαήλ
ISSEL160 views
Applying Data Mining Techniques on Software Repositories to Extract Design an... by 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...
ISSEL29 views
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα... by ISSEL
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
ISSEL48 views
Προγραμματισμός σε Clipper - 1 by Stathis Gourzis
Προγραμματισμός σε Clipper - 1Προγραμματισμός σε Clipper - 1
Προγραμματισμός σε Clipper - 1
Stathis Gourzis459 views
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση... by ISSEL
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
ISSEL8 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
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
Creating an Open Archival Information System compliant archive for CERN by ISSEL
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
ISSEL6 views
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN by ISSEL
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERNΔημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
ISSEL11 views
Η γλώσσα προγραμματισμού Clipper. by Stathis Gourzis
Η γλώσσα προγραμματισμού Clipper.Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.
Stathis Gourzis445 views
e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017 by Haris Papadopoulos
e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017
e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017
Design and Implementation of a Mechanism that automates the generation of Sof... by ISSEL
Design and Implementation of a Mechanism that automates the generation of Sof...Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...
ISSEL132 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
8 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...
ISSEL8 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
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
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
Η αρχιτεκτονική των 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
Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...
Ανάπτυξη Συστήματος Παραγωγής Ερωτήσεων & Γνωσιακού Γράφου από Πρόσφατα Νέα μ...
ISSEL16 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

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. Ευχαριστώ πολύ για την προσοχή σας! Ερωτήσεις;