Fastlane — εργαλείο αυτοματοποίησης builds και δημοσιεύσεων εφαρμογών για κινητά για iOS και Android. Το Fastlane διαχειρίζεται την υπογραφή κώδικα, το build, την εκτέλεση δοκιμών, τη δημιουργία στιγμιότυπων οθόνης και τη μεταφόρτωση στο App Store Connect και στο Google Play Console. Είναι το de facto πρότυπο για CI/CD στην ανάπτυξη εφαρμογών για κινητά.
Βασικά συμπεράσματα
Το Fastlane — είναι ένα εργαλείο ανοιχτού κώδικα που αυτοματοποιεί τις καθημερινές εργασίες ανάπτυξης εφαρμογών για κινητά: το build της εφαρμογής, την εκτέλεση δοκιμών, τη δημιουργία στιγμιότυπων οθόνης, τη διαχείριση πιστοποιητικών, τη μεταφόρτωση builds στο TestFlight, το App Store και το Google Play. Το Fastlane είναι γραμμένο σε Ruby και διανέμεται μέσω RubyGems με την εντολή gem install fastlane.
Το Fastlane εμφανίστηκε το 2015 ως εργαλείο iOS, αλλά γρήγορα επεκτάθηκε στο Android. Σήμερα είναι ένα οικοσύστημα δεκάδων ενεργειών — ενσωματωμένων εντολών που μπορούν να συνδυαστούν σε σενάρια, που ονομάζονται lanes. Κάθε lane εκτελεί μια συγκεκριμένη εργασία: για παράδειγμα, το build_release δημιουργεί την έκδοση release και το deploy_beta μεταφορτώνει το build στο TestFlight.
Το Fastlane χρησιμοποιείται από εταιρείες όπως Uber, Airbnb, Snapchat, Twitter και Shopify. Σύμφωνα με έρευνα του 2024, πάνω από το 60% των προγραμματιστών iOS χρησιμοποιούν το Fastlane στα έργα τους. Το εργαλείο υποστηρίζει τόσο τοπική εκτέλεση όσο και ενσωμάτωση με συστήματα CI cloud, καθιστώντας το το de facto πρότυπο για CI/CD σε κινητές συσκευές.
# Εγκατάσταση Fastlane
sudo gem install fastlane -NV
# Αρχικοποίηση στο έργο
fastlane init
Μετά την αρχικοποίηση, το Fastlane δημιουργεί τον κατάλογο fastlane/ με τρία αρχεία: Fastfile (σενάρια), Appfile (ρυθμίσεις εφαρμογής) και Matchfile (ρυθμίσεις πιστοποιητικών). Αυτή η δομή παραμένει ίδια και για τις δύο πλατφόρμες — iOS και Android.
Το κύριο αρχείο ρυθμίσεων του Fastlane — Fastfile. Βρίσκεται στον κατάλογο fastlane/ στη ρίζα του έργου. Το Fastfile γράφεται σε Ruby: κάθε lane είναι ένα ονομασμένο μπλοκ με μια ακολουθία ενεργειών. Το lane μπορεί να δέχεται παραμέτρους, να καλεί άλλα lanes και να επιστρέφει τιμές.
# fastlane/Fastfile — παράδειγμα για iOS
default_platform(:ios)
platform :ios do
desc "Build and upload to TestFlight"
lane :beta do
match(type: "appstore")
gym(scheme: "MyApp", configuration: "Release")
pilot(skip_waiting_for_build: true)
end
desc "Deploy to App Store"
lane :release do
ensure_git_status_clean
match(type: "appstore")
gym(scheme: "MyApp")
deliver(
skip_metadata: true,
skip_screenshots: true
)
push_to_git_remote(tags: true)
end
end
Κάθε lane εκτελείται με την εντολή fastlane ios beta ή fastlane ios release. Το Fastfile υποστηρίζει μεταβλητές, συνθήκες, βρόχους και κλήση εξωτερικών σεναρίων — είναι ένα πλήρες αρχείο Ruby. Οι προγραμματιστές μπορούν να επαναχρησιμοποιούν κώδικα μέσω private_lane (τοπικές μέθοδοι) και import από άλλα Fastfile.
Το Fastlane παρέχει πάνω από 200 ενσωματωμένες ενέργειες για τις περισσότερες εργασίες. Εάν η απαιτούμενη ενέργεια δεν υπάρχει, μπορείτε να γράψετε τη δική σας σε Ruby ή να καλέσετε μια εντολή κελύφους μέσω sh("..."). Οι ενέργειες μπορούν να δέχονται παραμέτρους — ρυθμίσεις build, διαδρομές, διακριτικά πρόσβασης — και να επιστρέφουν το αποτέλεσμα για χρήση σε επόμενα βήματα.
Το Fastlane για iOS λύνει τρία βασικά προβλήματα: διαχείριση πιστοποιητικών και provisioning profiles, build IPA μέσω Xcode και δημοσίευση σε App Store Connect και TestFlight. Κάθε μία από αυτές τις εργασίες καλύπτεται από μια ξεχωριστή ενέργεια.
match — ενέργεια για τη διαχείριση πιστοποιητικών. Αποθηκεύει όλα τα πιστοποιητικά και τα provisioning profiles σε ένα κρυπτογραφημένο αποθετήριο Git. Κάθε προγραμματιστής και διακομιστής CI χρησιμοποιούν το ίδιο σύνολο αρχείων, εξαλείφοντας συγκρούσεις και προβλήματα με ληγμένα πιστοποιητικά. Το match ενημερώνει αυτόματα τα προφίλ όταν προστίθενται νέες συσκευές.
sigh — δημιουργεί και κατεβάζει provisioning profile μέσω του Apple Developer Portal. Χρησιμοποιείται όταν χρειάζεται γρήγορα ένα προφίλ για συγκεκριμένο τύπο: development, ad-hoc ή appstore.
gym — build IPA. Το Gym περιβάλλει το xcodebuild με βέλτιστες παραμέτρους, επιλέγει αυτόματα σχήμα, διαμόρφωση, επιλογές εξαγωγής και δημιουργεί ένα υπογεγραμμένο IPA. Παράδειγμα: gym(scheme: "MyApp", export_method: "app-store").
pilot — διαχείριση TestFlight. Μεταφορτώνει το build, προσθέτει δοκιμαστές, παρακολουθεί την κατάσταση αναθεώρησης. deliver — πλήρης δημοσίευση στο App Store, συμπεριλαμβανομένων μεταδεδομένων, στιγμιότυπων οθόνης, τιμής και εκδόσεων.
# Build και δημοσίευση εφαρμογής iOS
lane :deploy_ios do
cocoapods
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(changelog: "Bug fixes and performance improvements")
end
Για εργασία με το App Store Connect απαιτούνται διακριτικά πρόσβασης. Το Fastlane υποστηρίζει δύο μεθόδους αυθεντικοποίησης: App Store Connect API Key (συνιστάται) και Apple ID με έλεγχο ταυτότητας δύο παραγόντων. Τα κλειδιά API είναι πιο βολικά για CI/CD, καθώς δεν απαιτούν διαδραστική εισαγωγή κωδικού πρόσβασης.
| Ενέργεια | Σκοπός | Χειροκίνητο αντίστοιχο |
|---|---|---|
match | Διαχείριση πιστοποιητικών και προφίλ | Apple Developer Portal |
sigh | Δημιουργία provisioning profile | Xcode + Developer Portal |
gym | Build IPA | xcodebuild + xcrun |
pilot | Μεταφόρτωση στο TestFlight | Xcode Organizer |
deliver | Δημοσίευση στο App Store | App Store Connect Web |
scan | Εκτέλεση δοκιμών UI | xcodebuild test |
Στο Android, το Fastlane αυτοματοποιεί το build μέσω Gradle, την υπογραφή APK και AAB, τη μεταφόρτωση στο Google Play Console και το Firebase App Distribution.
gradle — η κύρια ενέργεια για build Android. Καλεί το Gradle wrapper με τις απαιτούμενες εργασίες: gradle(task: "assembleRelease") ή gradle(task: "bundleRelease") για AAB. Μπορούν να μεταβιβαστούν σημαίες, μεταβλητές περιβάλλοντος και η διαδρομή προς το gradle.properties.
supply — μεταφόρτωση APK ή AAB στο Google Play Console. Το Supply διαχειρίζεται εκδόσεις, κομμάτια (internal, alpha, beta, production), σημειώσεις έκδοσης, τιμή και χώρα διανομής. Παράδειγμα: supply(track: "beta", release_status: "completed").
screengrab — δημιουργία στιγμιότυπων οθόνης για το Google Play. Εκτελεί δοκιμές οργάνων που τραβούν στιγμιότυπα οθόνης της εφαρμογής σε διαφορετικές συσκευές και γλώσσες. Τα ληφθέντα στιγμιότυπα μεταφορτώνονται μέσω supply.
# Build και δημοσίευση εφαρμογής Android
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Ενέργεια | Σκοπός | Χειροκίνητο αντίστοιχο |
|---|---|---|
gradle | Build μέσω Gradle | ./gradlew assembleRelease |
supply | Μεταφόρτωση στο Google Play | Google Play Console Web |
screengrab | Δημιουργία στιγμιότυπων οθόνης | Χειροκίνητο στιγμιότυπο + ImageMagick |
firebase_app_distribution | Διανομή μέσω Firebase | Firebase Console Upload |
Το Fastlane είναι σχεδιασμένο για εργασία σε pipeline CI/CD. Χειρίζεται σωστά τη μη διαδραστική λειτουργία, τις μεταβλητές περιβάλλοντος και τα τεχνουργήματα build. Παρακάτω — παραδείγματα ενσωμάτωσης με δημοφιλή συστήματα CI.
Στο GitHub Actions, το Fastlane εκτελείται ως σενάριο Ruby. Τυπική ροή εργασίας: εγκατάσταση Ruby και Fastlane, ρύθμιση κλειδιών (πιστοποιητικά, διακριτικά API μέσω secrets), εκτέλεση lane. Για iOS απαιτείται macOS runner; το Android λειτουργεί σε ubuntu-latest.
Στο GitLab CI, το Fastlane χρησιμοποιείται στο .gitlab-ci.yml με παρόμοιο σχήμα: εγκατάσταση εξαρτήσεων, εκτέλεση fastlane, μεταφορά τεχνουργημάτων. Το GitLab CI υποστηρίζει macOS και Linux runners.
Bitrise — εξειδικευμένο CI/CD για εφαρμογές κινητών — έχει ενσωματωμένη υποστήριξη για Fastlane. Το Bitrise Workflow μπορεί να καλέσει το Fastlane Step ή να εκτελέσει αυθαίρετα σενάρια με fastlane. Το Bitrise διαχειρίζεται πιστοποιητικά μέσω του δικού του Code Signing Manager.
# Fastfile για CI/CD με υπό όρους εκτέλεση δοκιμών
lane :ci_test do
scan(scheme: "MyApp", code_coverage: true)
end
lane :ci_beta do
ensure_git_status_clean
version_bump_podspec(path: "MyApp.podspec")
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(distribute_external: true)
end
Μια σημαντική πτυχή της ενσωμάτωσης CI/CD — η αποθήκευση μυστικών. Το Fastlane χρησιμοποιεί το αρχείο .env μέσω dotenv και μεταβλητές περιβάλλοντος. Για iOS, κρίσιμες μεταβλητές: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Για Android: SUPPLY_JSON_KEY_DATA — το περιεχόμενο του λογαριασμού υπηρεσίας Google Play.
Το Fastlane περιλαμβάνει πάνω από 200 ενσωματωμένες ενέργειες. Παρακάτω — μια επισκόπηση των πιο δημοφιλών με ένδειξη πλατφόρμας και σκοπού.
| Ενέργεια | Πλατφόρμα | Περιγραφή |
|---|---|---|
gym | iOS | Build IPA με βελτιστοποιημένες παραμέτρους xcodebuild |
match | iOS | Συγχρονισμός πιστοποιητικών και provisioning profiles μέσω Git |
pilot | iOS | Μεταφόρτωση build στο TestFlight και διαχείριση δοκιμαστών |
deliver | iOS | Δημοσίευση εφαρμογής στο App Store με μεταδεδομένα |
scan | iOS | Εκτέλεση δοκιμών unit και UI με δημιουργία αναφοράς |
gradle | Android | Εκτέλεση εργασιών Gradle: assemble, bundle, test |
supply | Android | Μεταφόρτωση APK και AAB στο Google Play Console |
screengrab | Android | Αυτόματα στιγμιότυπα οθόνης για το Google Play |
firebase_app_distribution | Android | Διανομή builds μέσω Firebase |
snapshot | iOS | Αυτόματα στιγμιότυπα οθόνης σε προσομοιωτές για το App Store |
increment_build_number | iOS | Αυτόματη αύξηση αριθμού build στο έργο Xcode |
appcenter_upload | Και τα δύο | Μεταφόρτωση build στο App Center |
Για αναζήτηση της απαιτούμενης ενέργειας χρησιμοποιείται η εντολή fastlane action [όνομα], η οποία εμφανίζει τεκμηρίωση, παραμέτρους και παραδείγματα. Η πλήρης λίστα είναι διαθέσιμη τοπικά: fastlane actions.
Το Fastlane υποστηρίζει επίσης πρόσθετα — επεκτάσεις κοινότητας που προσθέτουν νέες ενέργειες. Τα πρόσθετα εγκαθίστανται μέσω fastlane add_plugin [όνομα] και είναι διαθέσιμα στο μητρώο RubyGems. Παραδείγματα δημοφιλών προσθέτων: fastlane-plugin-versioning (διαχείριση εκδόσεων), fastlane-plugin-sentry (μεταφόρτωση debug symbols στο Sentry), fastlane-plugin-teams (ειδοποιήσεις στο Microsoft Teams).
Frequently Asked Questions
Fastlane — είναι ένα εργαλείο αυτοματοποίησης builds και δημοσιεύσεων εφαρμογών για κινητά. Χρησιμεύει για να αντικαθιστά χειροκίνητες λειτουργίες — build, υπογραφή, μεταφόρτωση σε καταστήματα — με μία εντολή. Το Fastlane μειώνει τον χρόνο κυκλοφορίας από ώρες σε λεπτά και εξαλείφει τα ανθρώπινα λάθη κατά τη δημοσίευση.
Ναι. Το Fastlane υποστηρίζει και τις δύο πλατφόρμες ανεξάρτητα. Για iOS απαιτείται macOS, για Android αρκεί Linux. Σε ένα Fastfile, τα lanes μπορούν να διαχωριστούν ανά πλατφόρμα: platform :ios do ... end και platform :android do ... end.
Μέσω της ενέργειας match. Αποθηκεύει κρυπτογραφημένα πιστοποιητικά και provisioning profiles σε ένα αποθετήριο Git. Κάθε προγραμματιστής κλωνοποιεί το αποθετήριο, το match αποκρυπτογραφεί τα αρχεία με τον κωδικό πρόσβασης από τη μεταβλητή MATCH_PASSWORD και τα εγκαθιστά στην αλυσίδα κλειδιών. Αυτό λύνει το πρόβλημα "κάνει build στο μηχάνημά μου".
Ναι. Το Fastlane έχει ενσωματωμένη ενέργεια firebase_app_distribution για μεταφόρτωση APK και IPA στο Firebase App Distribution. Διατίθεται επίσης το firebase_app_distribution_add_testers για προσθήκη δοκιμαστών. Εναλλακτικά — η ενέργεια appcenter_upload για το App Center.
Το Fastlane εγκαθίσταται μέσω RubyGems: gem install fastlane -NV. Για iOS απαιτείται macOS με Xcode; για Android — Linux ή macOS με JDK και Android SDK. Στο GitHub Actions υπάρχει έτοιμη ενέργεια ruby/setup-ruby για εγκατάσταση Ruby και Fastlane. Οι μεταβλητές περιβάλλοντος μεταβιβάζονται μέσω secrets του συστήματος CI.
Fastlane — είναι μια βιβλιοθήκη και CLI για αυτοματοποίηση εργασιών build και δημοσίευσης. Bitrise και Jenkins — είναι πλήρεις πλατφόρμες CI/CD. Το Fastlane λειτουργεί εντός τους: το Jenkins εκτελεί το Fastlane ως βήμα pipeline, το Bitrise καλεί το Fastlane μέσω ενός ειδικού Step. Το Fastlane δεν αντικαθιστά το σύστημα CI, αλλά το συμπληρώνει με κινητή ειδικότητα.
Summary
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης