Tworzenie, testowanie i wdrażanie aplikacji Xcode

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

W tym przewodniku Szybki start pokazano, jak kompilować i wdrażać projekty Xcode za pomocą potoków YAML w usłudze Azure Pipelines.

Wymagania wstępne

  • Organizacja i projekt usługi Azure DevOps, w którym masz uprawnienia do tworzenia potoków i wdrażania aplikacji.
  • Projekt i aplikacja Xcode 9+ w repozytorium GitHub. Aby uzyskać więcej informacji, zobacz Tworzenie projektu Xcode dla aplikacji.

Tworzenie potoku

Ważne

Podczas procedur usługi GitHub może zostać wyświetlony monit o utworzenie połączenia usługi GitHub lub przekierowanie do usługi GitHub w celu zalogowania się, zainstalowania usługi Azure Pipelines lub autoryzowania usługi Azure Pipelines. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby ukończyć proces. Aby uzyskać więcej informacji, zobacz Access to GitHub repozytoria.

  1. W projekcie usługi Azure DevOps wybierz pozycję Potoki>Nowy potok lub Utwórz potok, jeśli ten potok jest pierwszym w projekcie.
  2. Wybierz pozycję GitHub jako lokalizację kodu źródłowego.
  3. Na ekranie Wybieranie repozytorium wybierz repozytorium dla projektu Xcode.
  4. Na ekranie Konfigurowanie potoku wybierz pozycję Xcode.

Usługa Azure Pipelines udostępnia potok początkowy na podstawie szablonu Xcode . Przejrzyj kod w azure-pipelines.yml.

Środowisko kompilacji

Program Xcode jest wstępnie zainstalowany na agentach systemu macOS hostowanych przez firmę Microsoft w usłudze Azure Pipelines, więc nie trzeba konfigurować żadnej infrastruktury. Aby uzyskać dokładne wersje programu Xcode, które są wstępnie zainstalowane, zobacz Oprogramowanie agentów hostowanych przez firmę Microsoft.

Węzeł pool w górnej części pliku azure-pipelines.yml wybiera odpowiednią pulę agentów.

pool:
  vmImage: 'macOS-latest'

Zadanie kompilacji programu Xcode

Zadanie Xcode kompiluje, testuje lub archiwizowa obszar roboczy Xcode w systemie macOS i opcjonalnie może spakować aplikację. Krok Xcode w pliku startowym azure-pipelines.yml kompiluje projekt systemu iOS przy użyciu jego schematu domyślnego dla symulatora i bez tworzenia pakietów. Możesz zmienić wartości i dodać parametry, aby dopasować je do konfiguracji projektu.

steps:
- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: ''
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
    xcodeVersion: 'default' # Options: 10, 11, 12, 13, 14, default, specifyPath

Zapisywanie i uruchamianie potoku

Po zakończeniu przeglądania kodu w azure-pipelines.yml wybierz pozycję Zapisz i uruchom.

Zrzut ekranu przedstawiający przycisk Zapisz i uruchom w nowym potoku YAML.

Opcjonalnie zmodyfikuj komunikat Zatwierdzenia i podaj opis. Następnie wybierz pozycję Zapisz i uruchom ponownie, aby zatwierdzić plik azure-pipelines.yml w repozytorium i uruchomić kompilację.

Strona uruchamiania kompilacji zawiera szczegóły kompilacji i postęp. Jeśli chcesz obserwować działanie potoku, wybierz pozycję Zadanie w dolnej części strony.

Masz teraz działający potok YAML, azure-pipelines.yml, w repozytorium, które jest gotowe do dostosowania.

Dostosowywanie potoku

Aby wprowadzić zmiany w potoku, wybierz pozycję Edytuj na stronie potoku. W poniższych sekcjach opisano kilka typowych sposobów dostosowywania potoku programu Xcode.

Dodawanie zadań podpisywania i aprowizacji

Aplikacja Xcode musi być podpisana i aprowizowana, aby można ją było uruchomić na urządzeniu lub opublikować w sklepie App Store. Proces podpisywania i aprowizacji musi uzyskiwać dostęp do certyfikatu podpisywania P12 i co najmniej jednego profilu aprowizacji. Aby uzyskać więcej informacji, zobacz Podpisywanie aplikacji mobilnej.

Aby udostępnić certyfikat i profil programu Xcode podczas kompilacji, dodaj zadania Zainstaluj certyfikat firmy Apple i Zainstaluj profil aprowizacji firmy Apple do potoku.

Używanie zmiennej środowiskowej Carthage

Jeśli projekt używa carthage z prywatnym repozytorium Carthage, możesz skonfigurować uwierzytelnianie przy użyciu zmiennej środowiskowej o nazwie GITHUB_ACCESS_TOKEN z wartością tokenu, który ma dostęp do repozytorium. Carthage automatycznie wykrywa i używa tej zmiennej środowiskowej.

Nie dodawaj tokenu tajnego bezpośrednio do potoku YAML. Zamiast tego wybierz pozycję Zmienne na stronie potoku, aby otworzyć okienko Zmienne i utworzyć zmienną dla tego tokenu. Pamiętaj, aby włączyć ikonę blokady, aby zaszyfrować wartość zmiennej. Aby uzyskać więcej informacji, zobacz Ustawianie zmiennych tajnych.

Poniższy kod potoku używa zmiennej tajnej o nazwie myGitHubAccessToken dla wartości zmiennej środowiskowej GITHUB_ACCESS_TOKEN .

- script: carthage update --platform iOS
  env:
    GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)

Testowanie na urządzeniach hostowanych na platformie Azure

Aby przetestować aplikację w hostowanym laboratorium urządzeń z systemem iOS w centrum aplikacji programu Visual Studio, dodaj zadanie Test centrum aplikacji do potoku.

To zadanie wymaga bezpłatnego konta wersji próbnej usługi App Center , które musi zostać przekonwertowane na płatne po upływie 30 dni, aby nadal korzystać z laboratorium testowego. Przed rozpoczęciem korzystania z tego zadania utwórz konto usługi App Center.

W poniższym przykładzie uruchomiono pakiet testowy usługi App Center. Zadanie używa połączenia z usługą, które należy skonfigurować.

Aby uzyskać pełną składnię i dokumentację zadania, zobacz App Center Test task (Zadanie testowe usługi App Center). Aby uzyskać więcej informacji, zobacz Using Azure DevOps for UI Testing (Używanie usługi Azure DevOps do testowania interfejsu użytkownika).

- task: AppCenterTest@1
  inputs:
    appFile: path/myapp.ipa
    artifactsDirectory: '$(Build.ArtifactStagingDirectory)/AppCenterTest'
    frameworkOption: 'appium'
    appiumBuildDirectory: test/upload
    serverEndpoint: 'My App Center service connection'
    appSlug: username/appIdentifier
    devices: 'devicelist'

Zachowaj artefakty przy użyciu rekordu kompilacji

Aby zapisać plik pakietu AppStore systemu iOS z rekordem kompilacji lub testem i wdrożyć go w kolejnych potokach, dodaj zadania Copy Files (Kopiowanie plików ) i Publish Build Artifacts (Publikuj artefakty kompilacji ) do potoku. Aby uzyskać więcej informacji, zobacz Publikowanie i pobieranie artefaktów potoku.

- task: CopyFiles@2
  inputs:
    contents: '**/*.ipa'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

Wdrażanie w centrum aplikacji

Aby dystrybuować aplikację do grupy testerów lub użytkowników wersji beta, lub podwyższyć poziom aplikacji do usługi Intune lub sklepu Apple App Store, dodaj zadanie Dystrybucji centrum aplikacji. Zadanie wymaga bezpłatnego konta usługi App Center , które pozostaje bezpłatne.

Poniższy przykład dystrybuuje aplikację do użytkowników. Aby uzyskać pełną składnię zadań i dokumentację, zobacz Dystrybucja centrum aplikacji. Aby uzyskać więcej informacji, zobacz Deploy Azure DevOps Builds with App Center (Wdrażanie kompilacji usługi Azure DevOps za pomocą centrum aplikacji).

- task: AppCenterDistribute@3
  inputs:
    serverEndpoint: 'AppCenter'
    appSlug: '$(APP_CENTER_SLUG)'
    appFile: '$(APP_FILE)' # Relative path from the repo root to the IPA file you want to publish
    symbolsOption: 'Apple'
    releaseNotesOption: 'input'
    releaseNotesInput: 'Here are the release notes for this version.'
    destinationType: 'groups'

Instalowanie rozszerzenia sklepu Apple App Store i wdrażanie w sklepie Apple App Store

Aby zautomatyzować interakcję ze sklepem Apple App Store, zainstaluj rozszerzenie sklepu Apple App Store, a następnie wykonaj następujące zadania w potoku. Domyślnie te zadania uwierzytelniają się w usłudze Apple przy użyciu połączenia usługi, które należy skonfigurować.

Aby zautomatyzować wydawanie aktualizacji istniejących aplikacji beta testflight systemu iOS lub aplikacji produkcyjnych w sklepie App Store, dodaj zadanie Wydanie ze sklepu App Store.

Istnieją ograniczenia dotyczące używania tego zadania z uwierzytelnianiem dwuskładnikowym firmy Apple. Uwierzytelnianie firmy Apple jest specyficzne dla regionu, a tokeny sesji fastlane wygasają szybko i muszą zostać ponownie skonfigurowane i ponownie skonfigurowane.

- task: AppStoreRelease@1
  displayName: 'Publish to the App Store TestFlight track'
  inputs:
    serviceEndpoint: 'My Apple App Store service connection' 
    appIdentifier: com.yourorganization.testapplication.etc
    ipaPath: '$(build.artifactstagingdirectory)/**/*.ipa'
    shouldSkipWaitingForProcessing: true
    shouldSkipSubmission: true

Aby zautomatyzować podwyższenie poziomu wcześniej przesłanej aplikacji ze sklepu iTunes Connect do sklepu App Store, dodaj zadanie Podwyższanie poziomu sklepu App Store.

- task: AppStorePromote@1
  displayName: 'Submit to the App Store for review'
  inputs:
    serviceEndpoint: 'My Apple App Store service connection'
    appIdentifier: com.yourorganization.testapplication.etc
    shouldAutoRelease: false