Το Continuous Delivery (CD) είναι μια πρακτική ανάπτυξης σύμφωνα με την οποία το λογισμικό βρίσκεται πάντα σε κατάσταση έτοιμη για κυκλοφορία στην παραγωγή. Κάθε αλλαγή περνά από όλα τα στάδια αυτοματοποιημένων δοκιμών και ελέγχων, μετά από τα οποία μπορεί να αναπτυχθεί με το πάτημα ενός κουμπιού ή αυτόματα. Σύμφωνα με την έκθεση Google Cloud DORA Report, 2025, οι ομάδες που εφαρμόζουν CD κυκλοφορούν εκδόσεις 208 φορές πιο συχνά και 106 φορές πιο γρήγορα από ομάδες με χαμηλό βαθμό αυτοματοποίησης.
Τα κύρια σημεία
Το Continuous Delivery (CD) είναι επέκταση της Continuous Integration που προσθέτει αυτοματοποίηση όλων των σταδίων προετοιμασίας της έκδοσης: δημιουργία του release build, υπογραφή με πιστοποιητικά, obfuscation, έλεγχο μεταδεδομένων του καταστήματος εφαρμογών και ανάπτυξη στο staging. Ο όρος εισήχθη από τους Jez Humble και David Farley στο βιβλίο "Continuous Delivery" (2010), όπου επισημοποίησαν την πρακτική που επιτρέπει στις ομάδες να κάνουν τις εκδόσεις προβλέψιμες και χαμηλού κινδύνου.
Πριν από την υιοθέτηση του CD, οι εκδόσεις ήταν ένα γεγονός: η ομάδα μαζευόταν σε ένα δωμάτιο, εκτελούσε μια λίστα ελέγχου με 20 σημεία, έτρεχε τα σενάρια χειροκίνητα και ήλπιζε ότι τίποτα δεν θα χαλούσε. Το Continuous Delivery μετατρέπει την έκδοση από γεγονός σε διαδικασία: μια μικρή αλλαγή στον κώδικα μπορεί να φτάσει στους χρήστες σε λίγα λεπτά αντί για εβδομάδες. Οι Amazon, Netflix και Etsy υιοθέτησαν πρώτοι το CD τη δεκαετία του 2010 — σήμερα αποτελεί πρότυπο για τις ομάδες προϊόντων.
Η γρήγορη παράδοση λειτουργιών αποτελεί ανταγωνιστικό πλεονέκτημα. Αν ο ανταγωνιστής κυκλοφορεί μια νέα λειτουργία μέσα σε μέρες και εσείς σε μήνες, η αγορά επιλέγει τον ανταγωνιστή. Οι μετρικές DORA δείχνουν: οι ομάδες elite (με CD) έχουν χρόνο κυκλοφορίας κάτω από 1 ώρα, ενώ οι ομάδες low (χωρίς CD) από 1 εβδομάδα έως 1 μήνα. Το CD μειώνει επίσης ριζικά τον κίνδυνο: οι μικρές αλλαγές είναι δυσκολότερο να σπάσουν κάτι από ό,τι μια μεγάλη έκδοση μία φορά το τρίμηνο.
Οι όροι CI, CD και Continuous Deployment συχνά μπερδεύονται, αλλά μεταξύ τους υπάρχει σαφές όριο. Η κατανόηση των διαφορών βοηθά να σχεδιάσετε σωστά το pipeline και να επιλέξετε το επίπεδο αυτοματοποίησης που αντιστοιχεί στην ωριμότητα της ομάδας και στις επιχειρηματικές απαιτήσεις.
Το CI είναι το θεμέλιο πάνω στο οποίο χτίζεται το CD. Το CI διασφαλίζει ότι κάθε commit περνά από δημιουργία (build) και δοκιμές. Χωρίς CI το CD είναι αδύνατο: αν ο κώδικας δεν έχει επαληθευτεί, δεν μπορεί να κυκλοφορήσει. Το CI ελέγχει την ορθότητα, το CD ελέγχει την ετοιμότητα για επιχειρηματική χρήση.
Το CD προσθέτει στο CI στάδια προετοιμασίας του release build, ελέγχου μεταδεδομένων, υπογραφής και ανάπτυξης στο staging ή στο κατάστημα εφαρμογών για beta δοκιμές. Η βασική διαφορά είναι ότι την απόφαση για κυκλοφορία στην παραγωγή λαμβάνει άνθρωπος (ο διευθυντής, ο ιδιοκτήτης του προϊόντος). Το CD κάνει την έκδοση "με ένα κλικ" — απλή και ασφαλή.
Το Continuous Deployment είναι πλήρης αυτοματοποίηση: κάθε αλλαγή που περνά όλα τα στάδια του CD-pipeline αποστέλλεται αυτόματα στην παραγωγή χωρίς χειροκίνητη επιβεβαίωση. Το Continuous Deployment είναι εφαρμόσιμο σε προϊόντα SaaS και web υπηρεσίες, αλλά σπάνια χρησιμοποιείται στην ανάπτυξη εφαρμογών για κινητά λόγω των πολιτικών των καταστημάτων εφαρμογών (το App Store Review και το Google Play Review απαιτούν χειροκίνητη αποστολή).
| Πρακτική | Αυτοματοποίηση | Κυκλοφορία στην παραγωγή | Τυπικά για |
|---|---|---|---|
| CI | Δημιουργία + δοκιμές | Όχι | Κάθε είδους έργα |
| CD | Δημιουργία + δοκιμές + release build + παράδοση | Με το πάτημα ενός κουμπιού | Εφαρμογές για κινητά |
| Continuous Deployment | Πλήρης: δημιουργία → δοκιμές → παράδοση → κυκλοφορία | Αυτόματα | Web υπηρεσίες, SaaS |
Το CD για εφαρμογές κινητών έχει ιδιαιτερότητες που το διακρίνουν από τα web και backend pipelines. Οι εκδόσεις για κινητά περνούν μέσα από καταστήματα εφαρμογών (App Store Review, Google Play Review), γεγονός που προσθέτει χρονικό και διαδικαστικό εμπόδιο. Το CD αυτοματοποιεί ό,τι μπορεί να αυτοματοποιηθεί πριν από την υποβολή για έλεγχο, ώστε να μεγιστοποιηθεί η πιθανότητα επιτυχίας του ελέγχου με την πρώτη φορά.
Το Android CD pipeline περιλαμβάνει: δημιουργία του AAB (Android App Bundle), υπογραφή με το κλειδί της έκδοσης, obfuscation μέσω R8/ProGuard, έλεγχο του μεγέθους του APK και των κλάσεων multidex, δημιουργία release notes. Η χρήση των Gradle product flavors (free/paid, dev/staging/prod) επιτρέπει τη διαχείριση πολλών διαμορφώσεων από ένα μόνο pipeline.
Το iOS CD απαιτεί υπογραφή με πιστοποιητικά μέσω του Fastlane match, έλεγχο των εικονιδίων (απαίτηση του App Store — 1024×1024 px), επικύρωση μεταδεδομένων (όνομα, περιγραφή, λέξεις-κλειδιά), έλεγχο για απουσία ιδιωτικών API. Η τεχνική επικύρωση (technical validation) εκτελείται μέσω altool --validate-app χωρίς φόρτωση στο App Store Connect, γεγονός που παρέχει γρήγορη ανταπόκριση.
# Fastfile — πλήρες CD pipeline για iOS και Android
platform :ios do
desc "iOS CD — προετοιμασία έκδοσης και φόρτωση στο TestFlight"
lane :deliver_to_testflight do
capture_screenshots
match(type: "appstore")
build_app(
scheme: "MyApp",
export_method: "app-store",
workspace: "MyApp.xcworkspace"
)
pilot(skip_waiting_for_build: true)
end
end
platform :android do
desc "Android CD — δημιουργία AAB και φόρτωση στην Google Play Console"
lane :deliver_to_internal do
gradle(
task: "bundleRelease",
build_type: "Release",
print_command: true
)
upload_to_play_store(
track: "internal",
skip_upload_metadata: true
)
end
end
Το deliver_to_testflight του Fastlane συλλέγει στιγμιότυπα οθόνης, λαμβάνει πιστοποιητικά μέσω match, δημιουργεί το IPA και το φορτώνει στο TestFlight. Το lane deliver_to_internal για Android δημιουργεί το Release AAB μέσω Gradle και το φορτώνει στο εσωτερικό track της Google Play Console. Και τα δύο pipelines εκκινούνται από το CI αφού περάσουν οι δοκιμές.
Το CD-pipeline αποτελείται από διαδοχικά στάδια, καθένα από τα οποία ενισχύει τη βεβαιότητα ότι η έκδοση είναι έτοιμη για τους χρήστες. Τα στάδια χωρίζονται σε τεχνικά (δημιουργία, υπογραφή) και προϊοντικά (έλεγχος μεταδεδομένων, στιγμιότυπων οθόνης, περιγραφής). Η παράλειψη οποιουδήποτε σταδίου αυξάνει τον κίνδυνο απόρριψης της έκδοσης από το κατάστημα εφαρμογών.
Κρίσιμο συστατικό του CD είναι η αυτόματη διαχείριση εκδόσεων. Το Version bump (versionCode και versionName για Android, CFBundleVersion και CFBundleShortVersionString για iOS) εκτελείται με βάση τα Git tags ή την προηγούμενη έκδοση στο κατάστημα. Το increment_version_number του Fastlane και οι εντολές Gradle (versionCode auto-increment) αυτοματοποιούν αυτό το βήμα.
Οι Google Play Console και App Store Connect απαιτούν: περιγραφή εφαρμογής, λέξεις-κλειδιά, κατηγορία, βαθμολογία, συνδέσμους προς την πολιτική απορρήτου. Το CD περιλαμβάνει έλεγχο της ύπαρξης και της ορθότητας των μεταδεδομένων. Τα deliver και supply του Fastlane αυτοματοποιούν τη φόρτωση της περιγραφής, των στιγμιότυπων οθόνης και των εικονιδίων μαζί με το build.
Πριν από την υποβολή για έλεγχο, το pipeline εκτελεί ελέγχους gate: έλεγχος μεγέθους του build (APK μεγαλύτερο από 200 MB απορρίπτεται από το Google Play), ύπαρξη όλων των μεταφράσεων (localizations), απουσία debug συμβόλων στο release build, έλεγχος του ProGuard mapping file για την αποκωδικοποίηση των crash logs. Αν έστω ένας έλεγχος αποτύχει, το pipeline μπλοκάρει την έκδοση.
Το επίπεδο εμπιστοσύνης στο CD είναι ευθέως ανάλογο με την ποιότητα των αυτόματων δοκιμών. Αν οι δοκιμές δεν εντοπίζουν τις παλινδρομήσεις (regressions), η έκδοση μπορεί να σπάσει την παραγωγή και η ομάδα χάνει την εμπιστοσύνη της στο CD. Το κινητό CD απαιτεί μια πυραμίδα δοκιμών τριών επιπέδων, προσαρμοσμένη στις ιδιαιτερότητες της πλατφόρμας.
Οι unit δοκιμές ελέγχουν την επιχειρηματική λογική απομονωμένα. Η κάλυψη κώδικα θα πρέπει να είναι τουλάχιστον 70% για τα κρίσιμα στοιχεία (αυθεντικοποίηση, πληρωμές, επικοινωνία με το δίκτυο). Το CI εκτελεί unit δοκιμές σε κάθε push και, αν αποτύχουν, το CD-pipeline μπλοκάρεται μέχρι να διορθωθούν.
Ελέγχουν την αλληλεπίδραση των στοιχείων: το επίπεδο δικτύου με πραγματικό API (ή mock server), τη βάση δεδομένων, το σύστημα αρχείων. Οι δοκιμές Room DAO για Android και οι δοκιμές Core Data για iOS είναι παραδείγματα δοκιμών ενοποίησης. Είναι πιο αργές από τις unit δοκιμές (1–5 λεπτά) και εκτελούνται στο στάδιο του CD, όχι στο CI σε κάθε commit.
Οι δοκιμές στιγμιότυπων (snapshot testing) συγκρίνουν τις οθόνες της εφαρμογής με εικόνες αναφοράς. Αν μια αλλαγή στον κώδικα άλλαξε το UI, η δοκιμή αποτυγχάνει και ο προγραμματιστής ελέγχει αν η αλλαγή ήταν αναμενόμενη. Το Android υποστηρίζει Roborazzi και Paparazzi, το iOS — SnapshotTesting από την Point-Free. Οι δοκιμές στιγμιότυπων εκτελούνται πριν από την έκδοση ως μέρος του CD-pipeline.
Η εφαρμογή του Continuous Delivery απαιτεί όχι μόνο εργαλεία, αλλά και αλλαγή της κουλτούρας της ομάδας. Οι πρακτικές παρακάτω βασίζονται στην πολυετή εμπειρία ομάδων κινητών από τις Google, Spotify και Uber και είναι προσαρμοσμένες για έργα κάθε μεγέθους.
Ο κώδικας μιας νέας λειτουργίας παραδίδεται στην παραγωγή, αλλά είναι κρυμμένος πίσω από μια σημαία (flag). Τα feature flags επιτρέπουν να κυκλοφορήσει ο κώδικας πριν η λειτουργία είναι έτοιμη να προβληθεί στους χρήστες και να απενεργοποιηθεί άμεσα σε περίπτωση προβλημάτων. Βιβλιοθήκες: LaunchDarkly, Firebase Remote Config, Unleash. Τα feature flags αποτελούν προϋπόθεση για το CD σε έργα κινητών.
Πριν από την αποστολή στην παραγωγή, το build αναρτάται στο staging — ένα περιβάλλον πανομοιότυπο με την παραγωγή, αλλά με δεδομένα δοκιμών. Οι μηχανικοί QA ελέγχουν τη λειτουργία στο staging build, που εγκαθίσταται μέσω του TestFlight ή του Internal Testing track. Αν το staging περάσει, το build λαμβάνει έγκριση για υποβολή σε έλεγχο στο κατάστημα.
Το CD δημιουργεί αυτόματα τα release notes με βάση τα μηνύματα των commits. Τα Conventional Commits (feat:, fix:, chore:) και τα Git tags σε μορφή semantic versioning επιτρέπουν την ανάλυση του ιστορικού αλλαγών. Το changelog_from_git_commits του Fastlane συλλέγει τις αλλαγές μεταξύ των δύο τελευταίων tags και τις διαμορφώνει για το κατάστημα εφαρμογών.
Το CD δεν τελειώνει με τη δημοσίευση — μετά την κυκλοφορία ξεκινά η παρακολούθηση: crash rate, ποσοστό ANR για Android, χρόνος εκκίνησης, συχνότητα αποτυχιών πληρωμών. Αν οι μετρικές υπερβούν τα φυσιολογικά όρια, το CD pipeline πρέπει να επαναφέρει αυτόματα την έκδοση ή να ειδοποιήσει την ομάδα. Εργαλεία: Firebase Crashlytics, Sentry, New Relic.
// Παράδειγμα feature flag με Firebase Remote Config για CD
class FeatureManager(
private val remoteConfig: FirebaseRemoteConfig
) {
fun isNewCheckoutEnabled(): Boolean {
return remoteConfig.getBoolean("new_checkout_enabled")
}
fun getRecommendedVersion(): String {
return remoteConfig.getString("minimum_app_version")
}
}
// Χρήση στον κώδικα
if (featureManager.isNewCheckoutEnabled()) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
Συχνές ερωτήσεις
Το Continuous Delivery (CD) αυτοματοποιεί την προετοιμασία της έκδοσης, αλλά αφήνει την απόφαση για την κυκλοφορία στον άνθρωπο. Το Continuous Deployment είναι CD + αυτόματη κυκλοφορία στην παραγωγή χωρίς ανθρώπινη συμμετοχή. Στην ανάπτυξη εφαρμογών για κινητά το Continuous Deployment είναι αδύνατο λόγω της υποχρεωτικής αξιολόγησης από τα καταστήματα εφαρμογών.
Χρησιμοποιήστε το ίδιο build σε όλα τα στάδια: το CI δοκιμάζει το debug build, το CD δημιουργεί το release build με τα ίδια αρχεία πηγαίου κώδικα. Τα build_app του Fastlane και assembleRelease του Gradle απομονώνουν τη διαμόρφωση της δημιουργίας. Επιπλέον, εκτελέστε smoke δοκιμές στο release build εντός του CD-pipeline πριν από την αποστολή στο κατάστημα.
Ναι, το CD μπορεί να εφαρμοστεί σε οποιοδήποτε έργο. Ξεκινήστε με την αυτοματοποίηση ενός σταδίου — για παράδειγμα, της δημιουργίας του release build. Στη συνέχεια προσθέστε την υπογραφή και μετά τη φόρτωση στο TestFlight. Σταδιακά επεκτείνετε το pipeline. Το βασικό είναι να μην προσπαθήσετε να αυτοματοποιήσετε τα πάντα αμέσως: το CD εφαρμόζεται επαναληπτικά.
Τα feature flags αποτελούν βασικό καταλύτη του CD. Επιτρέπουν να παραδίδεται κώδικας στην παραγωγή χωρίς να ενεργοποιείται για τους χρήστες. Αν μια λειτουργία αποδειχθεί ασταθής, η σημαία απενεργοποιείται χωρίς ανακατασκευή της εφαρμογής. Τα Firebase Remote Config και LaunchDarkly ενσωματώνονται στο CD-pipeline και διαχειρίζονται μέσω web interface ή API.
Με το CD οι ομάδες πραγματοποιούν κυκλοφορίες εβδομαδιαία ή ανά δύο εβδομάδες. Οι ομάδες elite από την έκθεση DORA πραγματοποιούν πολλαπλές κυκλοφορίες την ημέρα μέσω του Continuous Deployment (για το server-side). Για εφαρμογές κινητών η βέλτιστη συχνότητα είναι μία φορά κάθε 1–2 εβδομάδες: το review του App Store διαρκεί 1–3 ημέρες και οι συχνότερες κυκλοφορίες δεν δίνουν στους χρήστες χρόνο να παρατηρήσουν τις αλλαγές.
Συμπεράσματα
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.