CI/CD (Continuous Integration / Continuous Delivery) είναι η πρακτική αυτόματης δημιουργίας, δοκιμής και παράδοσης μιας εφαρμογής με κάθε αλλαγή κώδικα. Σύμφωνα με την Statista (2025), το 80% των ομάδων ανάπτυξης κινητού χρησιμοποιούν CI/CD. Αυτό το άρθρο καλύπτει δημοφιλή εργαλεία CI, το Fastlane για αυτοματοποίηση builds κινητού, καθώς και τα Canary Release και Feature Flags.
Βασικά σημεία
Continuous Integration είναι το θεμέλιο της αυτοματοποίησης CI/CD για εφαρμογές κινητού. Είναι μια πρακτική όπου κάθε προγραμματιστής συγχωνεύει τον κώδικά του σε ένα κοινόχρηστο αποθετήριο αρκετές φορές την ημέρα. Μετά από κάθε push, ο διακομιστής CI δημιουργεί αυτόματα το έργο και εκτελεί δοκιμές. Εάν οι δοκιμές αποτύχουν, η δημιουργία θεωρείται κατεστραμμένη και η ομάδα διορθώνει το πρόβλημα αμέσως. Το CI αποτρέπει την κατάσταση «λειτουργεί στο μηχάνημά μου» όπου ο κώδικας ενός προγραμματιστή σπάει τον κώδικα ενός άλλου.
Build Pipeline — μια ακολουθία βημάτων που εκτελούνται σε κάθε push: linting κώδικα → δοκιμές μονάδας → δημιουργία debug APK/IPA → δοκιμές ολοκλήρωσης → δημιουργία release. Κάθε βήμα εκτελείται μόνο μετά την επιτυχία του προηγούμενου. Τα τεχνουργήματα δημιουργίας — APK, IPA, AAB, αναφορές δοκιμών — αποθηκεύονται και είναι διαθέσιμα για λήψη.
Continuous Delivery — ο κώδικας δημιουργείται και δοκιμάζεται αυτόματα, αλλά ένας άνθρωπος αποφασίζει εάν θα κυκλοφορήσει στην παραγωγή. Continuous Deployment — κάθε επιτυχημένη δημιουργία κυκλοφορεί αυτόματα στην παραγωγή. Για εφαρμογές κινητού, το CD (παράδοση σε καταστήματα) μέσω TestFlight ή Internal Testing είναι πιο συνηθισμένο, καθώς την τελική απόφαση δημοσίευσης λαμβάνει ο προγραμματιστής ή ο διαχειριστής. Staging — περιβάλλον όσο το δυνατόν πιο κοντά στην παραγωγή, που χρησιμοποιείται για τη δοκιμή της δημιουργίας πριν από την κυκλοφορία.
GitHub Actions είναι ένα ενσωματωμένο σύστημα CI/CD για την αυτοματοποίηση εφαρμογών κινητού στο GitHub. Το Actions χρησιμοποιεί διαμόρφωση YAML (.github/workflows) για τον ορισμό pipelines. Διατίθενται έτοιμες ενέργειες για ανάπτυξη κινητού: actions/setup-java, gradle-build-action για Android, xcodebuild-action για iOS. Το GitHub Actions παρέχει 2000 δωρεάν λεπτά το μήνα για ιδιωτικά αποθετήρια.
Παράδειγμα: ένα workflow Android περιλαμβάνει checkout κώδικα, ρύθμιση JDK 17, προσωρινή αποθήκευση εξαρτήσεων Gradle, εκτέλεση lint και δοκιμών μονάδας, δημιουργία APK και μεταφόρτωση τεχνουργήματος. Για iOS — checkout, ρύθμιση Xcode, pod install, εκτέλεση XCTest, αρχειοθέτηση και εξαγωγή IPA. Το GitHub Actions ενσωματώνεται με τα GitHub Releases, Slack και Telegram για ειδοποιήσεις.
GitLab CI είναι ένα ενσωματωμένο σύστημα CI/CD στο GitLab, που ρυθμίζεται μέσω .gitlab-ci.yml. Το GitLab CI χρησιμοποιεί runners — πράκτορες που εκτελούν εργασίες. Για ανάπτυξη κινητού μπορείτε να χρησιμοποιήσετε κοινόχρηστους runners (Linux για Android) ή δικούς σας runners (macOS για iOS). Το GitLab CI υποστηρίζει παράλληλες εργασίες, τεχνουργήματα, περιβάλλοντα και μη αυτόματη έγκριση για εκδόσεις παραγωγής.
Bitrise είναι μια πλατφόρμα CI/CD που ειδικεύεται στην αυτοματοποίηση εφαρμογών κινητού. Η Bitrise προσφέρει έτοιμα Steps για Android, iOS, Flutter και React Native: Gradle Runner, Xcode Archive, Flutter Test, CocoaPods Install. Η Bitrise ρυθμίζει αυτόματα την υπογραφή κώδικα για iOS (μέσω Codesigndoc) και παρέχει εικονικές μηχανές με προεγκατεστημένα Xcode, Android SDK, Flutter και άλλα εργαλεία.
Πλεονεκτήματα Bitrise: εύκολη ρύθμιση μέσω του οπτικού επεξεργαστή Workflow, υποστήριξη για παράλληλες δημιουργίες, ενσωμάτωση με Firebase Test Lab, App Store Connect και Google Play Console. Η Bitrise παρέχει 90 δωρεάν λεπτά το μήνα για προσωπικά έργα. Στην IT Sectr χρησιμοποιούμε Bitrise για όλα τα έργα κινητού — απλοποιεί σημαντικά το CI/CD σε σύγκριση με τη μη αυτόματη ρύθμιση του GitHub Actions.
| Κριτήριο | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| Εξειδίκευση | Γενική | Γενική | Κινητό | Γενική |
| macOS για iOS | Ναι (macOS runner) | Δικός runner | Ναι (ενσωματωμένο) | Ναι (macOS) |
| Δωρεάν όριο | 2000 λεπτά/μήνα | 400 λεπτά/μήνα | 90 λεπτά/μήνα | 6000 λεπτά/μήνα |
| Ενσωμάτωση Fastlane | Μέσω run script | Μέσω run script | Έτοιμο Step | Μέσω run script |
| Υπογραφή κώδικα | Μη αυτόματη ρύθμιση | Μη αυτόματη ρύθμιση | Αυτόματη | Μέσω Fastlane |
| Παράλληλες δημιουργίες | Ναι | Ναι | Ναι | Ναι |
Fastlane είναι ένα εργαλείο αυτοματοποίησης εφαρμογών κινητού για iOS και Android, γραμμένο σε Ruby. Το Fastlane αποτελείται από ένα σύστημα έτοιμων ενεργειών (200+) και μια DSL για την περιγραφή σεναρίων μέσω Fastfile. Το Fastlane λύνει εργασίες που κάθε προγραμματιστής κινητού εκτελεί χειροκίνητα: υπογραφή κώδικα, δημιουργία στιγμιότυπων οθόνης, μεταφόρτωση σε TestFlight και Google Play, διαχείριση πιστοποιητικών και προφίλ προμήθειας.
Lane — ένα ονομασμένο σενάριο στο Fastfile. Παράδειγμα: lane :release do — μια αλυσίδα ενεργειών για την κυκλοφορία μιας έκδοσης. Match — ένα εργαλείο για την ασφαλή αποθήκευση και συγχρονισμό πιστοποιητικών και προφίλ προμήθειας μέσω κρυπτογραφημένου αποθετηρίου Git. Gym — δημιουργία και αρχειοθέτηση εφαρμογών iOS (ένα περιτύλιγμα γύρω από το xcodebuild). Pilot — μεταφόρτωση και διαχείριση builds στο TestFlight. Deliver — μεταφόρτωση εφαρμογής και μεταδεδομένων στο App Store Connect. Snapshot — αυτόματη δημιουργία στιγμιότυπων οθόνης σε όλες τις γλώσσες. Screengrab — αυτόματη δημιουργία στιγμιότυπων οθόνης για Android.
Παράδειγμα Fastfile για Android: lane :beta καλεί gradle (assembleRelease), στη συνέχεια firebase_app_distribution για διανομή σε δοκιμαστές. Για iOS: lane :beta καλεί match (λήψη πιστοποιητικών), gym (αρχειοθέτηση) και pilot (μεταφόρτωση στο TestFlight). Το Fastlane μπορεί να εκτελεστεί τοπικά και σε διακομιστή CI — καθιστώντας το ένα καθολικό εργαλείο σε οποιοδήποτε έργο κινητού.
Canary Release είναι μια στρατηγική αυτοματοποίησης CI/CD για τη διάθεση μιας νέας έκδοσης εφαρμογής σε ένα μικρό ποσοστό χρηστών (1–5%) πριν από την πλήρη κυκλοφορία. Στην Κονσόλα Google Play αυτό υλοποιείται μέσω Staged Rollout: κυκλοφορείτε μια ενημέρωση στο 5% του κοινού σας, παρακολουθείτε σφάλματα και μετρήσεις και αυξάνετε το ποσοστό εάν δεν υπάρχουν προβλήματα. Στο App Store Connect — μέσω Phased Release for Automatic Updates.
A/B Testing — σύγκριση δύο εκδόσεων μιας λειτουργίας σε τυχαίες ομάδες χρηστών. Στην ανάπτυξη κινητού, οι δοκιμές A/B πραγματοποιούνται μέσω Feature Flags, Firebase Remote Config ή λογικής διακομιστή. Το Canary Release και οι δοκιμές A/B ελαχιστοποιούν τους κινδύνους κατά τη διάθεση νέων λειτουργιών.
Feature Flag (Feature Toggle) — υπό όρους ενεργοποίηση λειτουργικότητας χωρίς ανάπτυξη νέου κώδικα. Ένα Feature Flag είναι ένας έλεγχος στον κώδικα: if (featureFlag.isEnabled()) { /* νέος κώδικας */ } else { /* παλιός κώδικας */ }. Οι σημαίες διαχειρίζονται μέσω υπηρεσιών: LaunchDarkly, Split.io, Firebase Remote Config. Τα Feature Flags επιτρέπουν στους προγραμματιστές να συγχωνεύουν κώδικα στο main ακόμα κι αν η λειτουργία δεν είναι ακόμη έτοιμη για τους χρήστες.
LaunchDarkly — η πιο δημοφιλής πλατφόρμα διαχείρισης Feature Flags. Η LaunchDarkly παρέχει SDK για iOS, Android, Flutter και React Native. Μπορείτε να ενεργοποιήσετε λειτουργίες για συγκεκριμένους χρήστες, τμήματα, περιοχές ή ποσοστό του κοινού. Τα Feature Flags χρησιμοποιούνται επίσης ως kill switch — άμεση απενεργοποίηση μιας προβληματικής λειτουργίας χωρίς κυκλοφορία νέας έκδοσης της εφαρμογής.
Συχνές Ερωτήσεις
Ξεκινήστε με GitHub Actions — εάν ο κώδικάς σας είναι στο GitHub. Το Actions είναι δωρεάν για δημόσια αποθετήρια, έχει ενσωματωμένη υποστήριξη για Android και iOS (macOS runners) και ένα τεράστιο οικοσύστημα έτοιμων ενεργειών. Για εξειδίκευση σε κινητό — Bitrise.
Όχι, οι υπηρεσίες CI (GitHub Actions, Bitrise, CircleCI) παρέχουν macOS runners. Πληρώνετε ανά λεπτό χρήσης. Για τοπική αποσφαλμάτωση Fastlane χρειάζεται Mac, αλλά το CI μπορεί να λειτουργήσει στο cloud.
Canary Release — διάθεση νέας έκδοσης σε ένα υποσύνολο χρηστών για έλεγχο σταθερότητας. A/B testing — σύγκριση δύο παραλλαγών μιας λειτουργίας για επιλογή της καλύτερης. Το Canary αφορά την αξιοπιστία, το A/B αφορά τη μετατροπή.
Το Fastlane δεν είναι υποχρεωτικό αλλά συνιστάται ανεπιφύλακτα. Χωρίς Fastlane θα πρέπει να εκτελείτε μη αυτόματα το xcodebuild, να διαχειρίζεστε πιστοποιητικά και να μεταφορτώνετε builds μέσω διεπαφής ιστού. Το Fastlane αυτοματοποιεί όλες αυτές τις εργασίες με μία εντολή.
Match είναι ένα εργαλείο Fastlane για τη διαχείριση πιστοποιητικών Code Signing iOS. Το Match αποθηκεύει πιστοποιητικά και προφίλ προμήθειας σε ένα κρυπτογραφημένο αποθετήριο Git και τα συγχρονίζει μεταξύ όλων των προγραμματιστών και του διακομιστή CI.
Περίληψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.