გადადით შინაარსზე

Xcode-ის პროექტი

plaintext
Help me get started with Tuist. Follow the setup at:
https://tuist.dev/en/docs/guides/get-started/existing-xcode-project

აირჩიეთ ეს გზა, თუ გსურთ შეინარჩუნოთ .xcodeproj ან .xcworkspace უცვლელი და ჩართოთ Tuist-ის შესაძლებლობები პროექტის გენერაციის გარეშე. ქვემოთ მოცემული თითოეული განყოფილება იწყება იმით, რაც ამჟამად აკლია, შემდეგ კი გაჩვენებთ ფუნქციას, რომელიც ამ ხარვეზს აღმოფხვრის.

წინაპირობები#

დააკავშირეთ პროექტი#

გაუშვით tuist init რეპოზიტორიის ძირში. როდესაც Tuist აღმოაჩენს თქვენს სამუშაო სივრცეს, აირჩიეთ <YourApp>-ის ინტეგრაცია, შემდეგ გაიარეთ ავთენტიკაცია ბრაუზერში და აირჩიეთ ანგარიში, რომელსაც უნდა ეკუთვნოდეს პროექტი. Tuist წერს Tuist.swift ძირში, რომელიც ამაგრებს პროექტის სახელს, რათა თქვენმა გუნდის წევრებმა და CI-მ ერთი და იგივე კავშირი გამოიყენონ. შეიტანეთ ის კომიტში.

თუ ამას კოდირების აგენტის ან სკრიპტის მეშვეობით აკეთებთ, ჯერ გაუშვით tuist auth login (ბრაუზერის ნაკადი ელოდება Enter-ის დაჭერას), შემდეგ კი გამოიყენეთ არაინტერაქტიული ფორმა:

bash
tuist init --build-system xcode --name <project-handle> --account <account>

ქვემოთ მოცემული ყველაფერი არასავალდებულო და დამოუკიდებელია.

Xcode-ის კომპილაციის ქეში#

Xcode 26 მოყვება ფაილების მიხედვით კომპილაციის ქეშით, მაგრამ მისი საცავი მდებარეობს მანქანის DerivedData-ში. სუფთა ბილდი ავსებს მას ლოკალურად; გუნდის წევრები და CI გამშვებები თავიდან აწყობენ, რადგან ვერ ხედავენ ამ საცავს.

tuist setup cache მიმართავს Xcode-ის კომპილაციის ქეშს Tuist-ის საერთო ქეშის ქსელისკენ. ნებისმიერ დეველოპერულ მანქანაზე ან CI გაშვებაზე ქეშის მოხვედრა სარგებელს მოუტანს ყველა სხვა მანქანას, რომელიც იმავე რევიზიას აწყობს.

bash
tuist setup cache

ბრძანება ბეჭდავს ბილდის პარამეტრებს, რომლებიც Xcode-ს სჭირდება საერთო ქეშის გამოყენებისთვის. ის არ ცვლის თქვენს პროექტს, ამიტომ დაამატეთ ისინი თქვენი პროექტის ბილდის პარამეტრებში ან .xcconfig ფაილში, როგორც აღწერილია Xcode-ის ბილდის პარამეტრების კონფიგურაცია-ში.

ააწყეთ Xcode-ში, შემდეგ კი ააწყეთ იგივე რევიზია მეორე მანქანაზე ან CI გამშვებზე. მეორე ბილდი დროის ნაწილში სრულდება და Xcode-ის ბილდის ანგარიში აჩვენებს კომპილაციის ქეშის მოხვედრებს.

ბილდის ინსაიტები#

Xcode იწერს თითოეული ტარგეტის ბილდის ხანგრძლივობას ლოგში და ბილდის ანგარიშში. არცერთი არ არის აგრეგირებული გაშვებების ან მანქანების მიხედვით. ბილდის დროის რეგრესია, რომელიც ერთ PR-ში ხვდება, ჩვეულებრივ მხოლოდ როგორც ნელი CI ჩანს, ყოველგვარი აშკარა სიგნალის გარეშე იმის შესახებ, თუ რომელმა ტარგეტმა გამოიწვია ის ან როდის.

ბილდის ინსაიტები იწერს ყოველი ბილდის ხანგრძლივობას და ფაზების დროს, რათა ტენდენცია ხილული იყოს დაშბორდზე. ეს არის ერთხაზიანი post-action თქვენს სქემაზე:

  1. Xcode-ში: Product → Scheme → Edit Scheme…

  2. გაშალეთ Build → Post-actions, დააჭირეთ +, აირჩიეთ New Run Script Action.

  3. Provide build settings from-ის ქვეშ, აირჩიეთ თქვენი აპის ტარგეტი.

  4. ჩასვით ხაზი, რომელიც შეესაბამება Tuist-ის ინსტალაციის მეთოდს: ::: code-group

    bash
    $HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect build
    bash
    tuist inspect build

    :::

    Xcode-ის სქემის სკრიპტები არ იღებენ თქვენი შელის PATH-ს, ამიტომ mise-ის shim თავისთავად არ იძებნება. ზემოთ მოცემული Mise-ის ხაზი იძახებს mise-ს აბსოლუტური გზით და სთხოვს კონფიგურაციის ჩატვირთვას $SRCROOT-დან, რათა აირჩიოს თქვენს პროექტში მიმაგრებული ვერსია.

  5. ააწყეთ ერთხელ. ბილდი რამდენიმე წამში გამოჩნდება დაშბორდის Builds ჩანართზე.

ტესტების ინსაიტები#

Xcode-ის ტესტის ლოგი ჩამოთვლის თითოეული ტესტის შედეგებს ერთი გაშვებით. ის არ აგრეგირებს გაშვებებს შორის სიგნალს, რომელიც რეალურად გჭირდებათ: რამდენად ხშირად მარცხდება ტესტი, რამდენად შენელდა ის გასულ კვირას, მარცხდება თუ არა მხოლოდ გარკვეულ სიმულატორებზე. ტესტი, რომელიც ათი CI გაშვების განმავლობაში სანდოდან არასტაბილურად გადადის, იგივედ ჩანს, როგორც ერთი არაიღბლიანი გაშვება.

ტესტების ინსაიტები იწერს ყოველი ტესტის შედეგს და ხანგრძლივობას და აკორელირებს შედეგებს გაშვებებს შორის. ნელი ტესტები, მარცხები და არასტაბილურობა ჩანს დაშბორდის Tests ჩანართზე.

  1. Product → Scheme → Edit Scheme…
  2. Test → Post-actions → + → New Run Script Action.
  3. Provide build settings from თქვენი აპის ტარგეტი.
  4. ჩასვით: ::: code-group
    bash
    $HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect test
    bash
    tuist inspect test
    :::
  5. გაუშვით ტესტის მოქმედება ერთხელ. შედეგები გამოჩნდება დაშბორდის Tests ჩანართზე.

ბანდლის ინსაიტები#

IPA-ს ინსტალაციისა და ჩამოტვირთვის ზომა იცვლება ყოველი დამატებული ასეტისა და დაკავშირებული სიმბოლოსთან ერთად. Xcode აჩვენებს ზომებს მოთხოვნით Product → Show Archive-ში, არა როგორც სერიას. PR, რომელიც დიდ ასეტს ამატებს, განურჩეველია ნებისმიერი სხვა PR-ისგან შერწყმის რიგში.

ბანდლის ინსაიტები იწერს ინსტალაციისა და ჩამოტვირთვის ზომებს ყოველი ანალიზირებული ბილდისთვის და შეუძლია ჩააგდოს PR-ის შემოწმება, როდესაც ბრენჩის ზღვარი გადაიჭრება. დაამატეთ ეს თქვენს CI-ში ბილდის ნაბიჯის შემდეგ:

bash
tuist inspect bundle App.ipa

გახსენით Bundle insights დაშბორდზე ტენდენციის სანახავად და ზღვრების კონფიგურაციისთვის.

პრივიუები#

TestFlight ყოველ გაზიარებაზე ამატებს ბილდისა და გადახედვის ციკლს. ხელმოწერილი .ipa-ის პირდაპირ გაგზავნა მოითხოვს მიმღების UDID-ს პროვიზინგის პროფილში. არცერთი არ არის მოსახერხებელი დიზაინერის ან QA-სთვის, ვისაც უბრალოდ სურს მიმდინარე ბრენჩის გამოცდა.

პრივიუები ბილდს აქცევს გაზიარებად ბმულად, რომელიც ერთი ბრძანებით გაეშვება სიმულატორზე ან მოწყობილობაზე:

bash
tuist xcodebuild build -scheme App -workspace App.xcworkspace -configuration Debug -sdk iphonesimulator
tuist share App

გაუგზავნეთ ბმული. მიმღებები გაუშვებენ მას tuist run <url>-ით ან Tuist macOS აპით.

გუნდის ჩართვა#

ქეში და ინსაიტები უფრო ეფექტური ხდება პროექტთან დაკავშირებული ადამიანების რაოდენობის ზრდასთან ერთად. მიიწვიეთ თქვენი გუნდის წევრები ორგანიზაციაში დაშბორდის ანგარიშის პარამეტრებიდან და დააყენეთ Single Sign-On (Google, Okta, Microsoft), რათა ახალი მომხმარებლების დამატება იყოს ერთი დაწკაპუნება და არა თითოეული ადამიანისთვის tuist auth login.

რა არის შემდეგი ნაბიჯი#

თუ ამ მიდგომას გადაიზრდებით, უდიდესი ნაბიჯი იქნება Tuist-ით გენერირებული პროექტები. ეს ნამდვილი ცვლილებაა (მიზნები აღწერილია Swift მანიფესტებში .xcodeproj-ის ნაცვლად), მაგრამ სწორედ ეს ხსნის მოდულის ქეშს და შერჩევით ტესტირებას. სრულად განხილულია Generated Xcode project სახელმძღვანელოში.