Δημοσίευση εφαρμογών iOS στο App Store με το GitLab και το fastlane

Δημοσίευση εφαρμογών iOS στο App Store με το GitLab και το fastlane

Πώς το Gitlab με το Fastlane συλλέγει, σημάδια και δημοσιεύει εφαρμογές iOS στο App Store.

Πρόσφατα είχαμε ανάρτηση σχετικά με το πώς να δημιουργήσετε και να εκτελέσετε γρήγορα μια εφαρμογή Android με Gitlab και λωρίδα ταχείας κυκλοφορίας. Εδώ θα δούμε πώς να δημιουργήσετε και να εκτελέσετε μια εφαρμογή iOS και να τη δημοσιεύσετε στο TestFlight. Δείτε πόσο δροσερό είναι Κάνω μια αλλαγή σε ένα iPad Pro με το Gitlab Web IDE, Παίρνω τη συναρμολόγηση και λαμβάνω μια ενημέρωση στην δοκιμαστική έκδοση της εφαρμογής στο ίδιο iPad Pro όπου την ανέπτυξα.

Εδώ θα πάρουμε απλή εφαρμογή iOS στο Swift, με τον οποίο ηχογράφησε το βίντεο.

Λίγα λόγια για τη διαμόρφωση του Apple Store

Θα χρειαστούμε μια εφαρμογή App Store, πιστοποιητικά διανομής και ένα προφίλ παροχής για να συνδέσετε τα πάντα μαζί.

Το πιο δύσκολο πράγμα εδώ είναι η δημιουργία δικαιωμάτων υπογραφής στο App Store. Ελπίζω να το καταλάβετε μόνοι σας. Εάν είστε νέοι, θα σας δείξω προς τη σωστή κατεύθυνση, αλλά δεν θα μιλήσουμε για τις περιπλοκές της διαχείρισης πιστοποιητικών της Apple εδώ και συνεχώς αλλάζουν. Αυτή η ανάρτηση θα σας βοηθήσει να ξεκινήσετε.

Οι εφαρμογές μου

Χρειάζεστε μια εφαρμογή στο App Store Connect, ώστε να έχετε ένα αναγνωριστικό για διαμόρφωση .xcodebuild. Το προφίλ και το αναγνωριστικό εφαρμογής συνδυάζουν εκδόσεις κώδικα, τιμολόγηση και διαθεσιμότητα και τη διαμόρφωση TestFlight για τη διανομή δοκιμαστικών εφαρμογών στους χρήστες. Μην κάνετε δημόσιες δοκιμές, οι ιδιωτικές δοκιμές θα αρκούν εάν έχετε μια μικρή ομάδα, εύκολη εγκατάσταση και δεν χρειάζεστε πρόσθετες άδειες από την Apple.

Προφίλ αρχικοποίησης

Εκτός από τη ρύθμιση της εφαρμογής, χρειάζεστε κλειδιά διανομής και ανάπτυξης iOS που δημιουργήθηκαν στο τμήμα πιστοποιητικών, αναγνωριστικών και προφίλ της κονσόλας προγραμματιστή Apple. Όλα αυτά τα πιστοποιητικά μπορούν να συνδυαστούν σε ένα προφίλ παροχής.

Οι χρήστες που θα πιστοποιηθούν πρέπει να είναι σε θέση να δημιουργήσουν πιστοποιητικά, διαφορετικά τα βήματα βεβαίωση και αναστεναγμός Θα δείτε ένα σφάλμα.

άλλες επιλογές

Εκτός από αυτή την απλή μέθοδο, υπάρχουν άλλοι τρόποι διαμόρφωσης πιστοποιητικών και προφίλ. Έτσι, εάν εργάζεστε διαφορετικά, ίσως χρειαστεί να προσαρμοστείτε. Το πιο σημαντικό είναι ότι χρειάζεστε διαμόρφωση .xcodebuild, το οποίο θα δείχνει τα απαραίτητα αρχεία και το keychain πρέπει να είναι διαθέσιμο στον υπολογιστή κατασκευής για τον χρήστη με το όνομα του οποίου εκτελείται το πρόγραμμα εκτέλεσης. Για την ψηφιακή υπογραφή χρησιμοποιούμε το fastlane και εάν υπάρχουν προβλήματα ή θέλετε να μάθετε περισσότερα, ελέγξτε τα στοιχεία τους τεκμηρίωση σχετικά με ψηφιακές υπογραφές.

Σε αυτό το παράδειγμα χρησιμοποιώ την προσέγγιση βεβαίωση και αναστεναγμός, αλλά για πραγματική χρήση είναι πιθανώς καλύτερα κατάλληλο ταιριάζω.

Προετοιμασία gitlab και fastlane

Προετοιμασία CI Runner

Έχοντας συλλέξει όλα αυτά τα δεδομένα, προχωράμε στη διαμόρφωση του προγράμματος εκτέλεσης GitLab στη συσκευή MacOS. Δυστυχώς, μπορείτε να δημιουργήσετε εφαρμογές iOS μόνο σε MacOS. Αλλά όλα μπορούν να αλλάξουν, και αν περιμένετε πρόοδο σε αυτόν τον τομέα, παρακολουθήστε έργα όπως xcbuild и σημάδι, και η εσωτερική μας εργασία Gitlab-Ce#57576.

Η ρύθμιση του δρομέα είναι πολύ απλή. Ακολουθήστε το τρέχον οδηγίες για τη ρύθμιση του GitLab Runner στο macOS.

Σημείωση. Ο δρομέας πρέπει να χρησιμοποιεί ένα εκτελέσιμο πρόγραμμα shell. Αυτό απαιτείται για την κατασκευή του iOS στο MacOS για να εργαστεί άμεσα ως χρήστης και όχι μέσω δοχείων. Εάν χρησιμοποιείτε shell, η οικοδόμηση και οι δοκιμές εκτελούνται ως χρήστης του δρομέα, απευθείας στον οικοδεσπότη. Δεν είναι τόσο ασφαλές όσο τα δοχεία, τόσο καλύτερα περιηγηθείτε τεκμηρίωση ασφαλείαςΈτσι δεν χάσετε τίποτα.

sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner start

Το Apple Keychain πρέπει να διαμορφωθεί σε αυτόν τον κεντρικό υπολογιστή με πρόσβαση στα κλειδιά που χρειάζεται να δημιουργήσει το Xcode. Ο ευκολότερος τρόπος για να το δοκιμάσετε είναι να συνδεθείτε ως χρήστης που θα εκτελέσει το build και να προσπαθήσετε να το δημιουργήσετε χειροκίνητα. Εάν το σύστημα ζητά πρόσβαση με μπρελόκ, επιλέξτε Να επιτρέπεται πάντα η λειτουργία του CI. Ίσως αξίζει να μπείτε και να παρακολουθήσετε τους πρώτους σωλήνες για να βεβαιωθείτε ότι δεν ζητούν πια το μπρελόκ. Το πρόβλημα είναι ότι η Apple δεν μας διευκολύνει τη χρήση της Αυτόματης λειτουργίας, αλλά μόλις το ξεκινήσετε, όλα θα πάνε καλά.

fastlane init

Για να χρησιμοποιήσετε το FastLane σε ένα έργο, εκτελέστε fastlane init. Απλά ακολούθα οδηγίες εγκατάστασης και λειτουργίας fastlane, ειδικά στο τμήμα gemfile, γιατί χρειαζόμαστε γρήγορη και προβλέψιμη εκκίνηση μέσω ενός αυτοματοποιημένου αγωγού CI.

Στον κατάλογο του έργου σας, εκτελέστε αυτές τις εντολές:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

Το FastLane θα ζητήσει μια βασική διαμόρφωση και, στη συνέχεια, θα δημιουργήσει ένα φάκελο Fastlane στο έργο με τρία αρχεία:

1. fastlane/Appfile

Δεν υπάρχει τίποτα περίπλοκο εδώ. Απλά βεβαιωθείτε ότι το αναγνωριστικό της Apple και το αναγνωριστικό εφαρμογής σας είναι σωστές.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile Ορίζει τα βήματα κατασκευής. Χρησιμοποιούμε πολλά ενσωματωμένα χαρακτηριστικά του Fastlane, οπότε όλα είναι καθαρά και εδώ. Δημιουργούμε μια γραμμή που λαμβάνει πιστοποιητικά, εκτελεί τη συναρμολόγηση και το μεταφορτώνει στην πτήση TestFlight. Μπορείτε να διαιρέσετε αυτή τη διαδικασία σε διαφορετικές εργασίες εάν είναι απαραίτητο. Όλες αυτές οι λειτουργίες (get_certificates, get_provisioning_profile, gym и upload_to_testflight) περιλαμβάνονται ήδη στο fastlane.

Δραστηριότητα get_certificates и get_provisioning_profile Σχετικά με την προσέγγιση υπογραφής βεβαίωση και αναστεναγμός. Εάν χρησιμοποιείτε ταιριάζω ή οτιδήποτε άλλο, κάντε αλλαγές.

default_platform(:ios)

platform :ios do
  desc "Build the application"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Αυτό είναι ένα προαιρετικό αρχείο, αλλά το δημιούργησα με μη αυτόματο τρόπο για να αλλάξω τον προεπιλεγμένο κατάλογο εξόδου και να τοποθετήσω την έξοδο στον τρέχοντα φάκελο. Αυτό απλοποιεί το CI. Εάν ενδιαφέρεστε, διαβάστε για gym και τις παραμέτρους του σε τεκμηρίωση.

https://docs.fastlane.tools/actions/gym/

Το δικό μας .gitlab-ci.yml

Έτσι, έχουμε έναν δρομέα CI για το έργο και είμαστε έτοιμοι να δοκιμάσουμε τον αγωγό. Ας δούμε τι έχουμε .gitlab-ci.yml:

stages:
  - build

variables:
  LC_ALL: "en_US.UTF-8"
  LANG: "en_US.UTF-8"
  GIT_STRATEGY: clone

build:
  stage: build
  script:
    - bundle install
    - bundle exec fastlane flappybuild
  artifacts:
    paths:
    - ./FlappyBird.ipa

Все отлично! Ορίσαμε τη μορφή στο UTF-8 για το Fastlane όπως απαιτείται, στρατηγική χρήσης clone με πρόγραμμα εκτέλεσης shell, ώστε να έχουμε έναν καθαρό χώρο εργασίας για κάθε συναρμολόγηση και απλά να καλέσουμε flappybuild fastlane, όπως φαίνεται παραπάνω. Ως αποτέλεσμα, έχουμε τη συναρμολόγηση, την υπογραφή και την ανάπτυξη της πιο πρόσφατης συναρμολόγησης στο TestFlight.

Παίρνουμε επίσης το τεχνούργημα και το σώζουμε με τη συναρμολόγηση. Σημειώστε ότι η μορφή .ipa είναι ένα υπογεγραμμένο εκτελέσιμο αρχείο ARM που δεν εκτελείται στον προσομοιωτή. Εάν θέλετε έξοδο για τον προσομοιωτή, απλώς προσθέστε τον στόχο κατασκευής που τον παράγει και, στη συνέχεια, συμπεριλάβετέ τον στη διαδρομή τεχνουργήματος.

Άλλες μεταβλητές περιβάλλοντος

Υπάρχουν μερικές μεταβλητές περιβάλλοντος εδώ που κάνουν τα πάντα να λειτουργούν.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Απαιτείται έλεγχος ταυτότητας για fastlane για έλεγχο ταυτότητας στο App Store και μεταφόρτωση στο TestFlight. Για να το κάνετε αυτό, δημιουργήστε έναν κωδικό πρόσβασης για την εφαρμογή που θα χρησιμοποιηθεί στο CI. Λεπτομέριες εδώ.

Εάν έχετε έλεγχο ταυτότητας δύο παραγόντων, δημιουργήστε μια μεταβλητή FASTLANE_SESSION (Οδηγίες εκεί).

FASTLANE_USER и FASTLANE_PASSWORD

Ότι βεβαίωση και αναστεναγμός που ονομάζεται προφίλ αρχικοποίησης και πιστοποιητικά κατόπιν αιτήματος, πρέπει να ορίσετε τις μεταβλητές FASTLANE_USER и FASTLANE_PASSWORD. Λεπτομέριες εδώ. Αυτό δεν είναι απαραίτητο εάν χρησιμοποιείτε διαφορετική μέθοδο υπογραφής.

Εν κατακλείδι

Μπορείτε να δείτε πώς λειτουργούν όλα Στο απλό μου παράδειγμα.

Ελπίζω ότι αυτό ήταν χρήσιμο και σας ενέπνευσε να εργαστείτε με εκδόσεις iOS σε ένα έργο GitLab. Εδώ είναι ένα άλλο Συμβουλές CI Για το Fastlane, για κάθε περίπτωση. Ίσως θελήσετε να χρησιμοποιήσετε CI_BUILD_ID (για σταδιακά κτίσματα) σε αυτοματοποιημένη έκδοση.

Ένα άλλο ωραίο χαρακτηριστικό του fastlane είναι αυτόματα στιγμιότυπα οθόνης για το App Store, τα οποία είναι πολύ εύκολο να ρυθμιστούν.

Πείτε μας στα σχόλια σχετικά με την εμπειρία σας και μοιραστείτε τις ιδέες σας για τη βελτίωση της Gitlab για την ανάπτυξη εφαρμογών iOS.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο