Partilhar via


Compilar, testar e implementar aplicações Xcode

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Este guia de início rápido mostra como criar e implantar projetos Xcode com pipelines YAML no Azure Pipelines.

Pré-requisitos

  • Uma organização e um projeto do Azure DevOps onde você tem permissão para criar pipelines e implantar aplicativos.
  • Um projeto e aplicativo Xcode 9+ em um repositório GitHub. Para obter mais informações, consulte Criando um projeto Xcode para um aplicativo.

Criar o pipeline

Importante

Durante os procedimentos do GitHub, você pode ser solicitado a criar uma conexão de serviço do GitHub ou ser redirecionado para o GitHub para entrar, instalar o Azure Pipelines ou autorizar o Azure Pipelines. Siga as instruções na tela para concluir o processo. Para obter mais informações, consulte Acesso a repositórios do GitHub.

  1. Em seu projeto de DevOps do Azure, selecione Pipelines>New pipeline ou Create pipeline se esse pipeline for o primeiro do projeto.
  2. Selecione GitHub como o local do seu código-fonte.
  3. Na tela Selecione um repositório, selecione o repositório para seu projeto Xcode.
  4. Na tela Configurar seu pipeline, selecione Xcode.

O Azure Pipelines fornece um pipeline inicial com base no modelo Xcode . Revise o código no azure-pipelines.yml.

Ambiente de construção

O Xcode está pré-instalado nos agentes macOS hospedados pela Microsoft no Azure Pipelines, portanto, você não precisa configurar nenhuma infraestrutura. Para obter as versões exatas do Xcode que estão pré-instaladas, consulte Software de agentes hospedados pela Microsoft.

O pool nó na parte superior do arquivo de azure-pipelines.yml seleciona o pool de agentes apropriado.

pool:
  vmImage: 'macOS-latest'

Tarefa de compilação do Xcode

A tarefa Xcode cria, testa ou arquiva um espaço de trabalho Xcode no macOS e, opcionalmente, pode empacotar um aplicativo. A etapa Xcode no arquivo de azure-pipelines.yml inicial cria o projeto iOS usando seu esquema padrão, para o simulador e sem empacotamento. Você pode alterar valores e adicionar parâmetros para corresponder à configuração do seu projeto.

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

Salve e execute o pipeline

Quando terminar de revisar o código no azure-pipelines.yml, selecione Salvar e executar.

Captura de tela do botão Salvar e executar em um novo pipeline YAML.

Opcionalmente, edite a mensagem de confirmação e forneça uma descrição. Em seguida, selecione Salvar e executar novamente para confirmar o arquivo azure-pipelines.yml no repositório e iniciar uma compilação.

A página de execução da compilação mostra os detalhes e o progresso da compilação. Se quiser ver seu pipeline em ação, selecione Trabalho na parte inferior da página.

Agora você tem um pipeline YAML em funcionamento, azure-pipelines.yml, em seu repositório que está pronto para personalizar.

Personalizar o pipeline

Para fazer alterações no pipeline, selecione Editar na página do pipeline. As seções a seguir descrevem algumas maneiras comuns de personalizar seu pipeline do Xcode.

Adicionar tarefas de assinatura e provisionamento

Um aplicativo Xcode deve ser assinado e provisionado para poder ser executado em um dispositivo ou publicar na App Store. O processo de assinatura e provisionamento deve acessar seu certificado de assinatura P12 e um ou mais perfis de provisionamento. Para obter mais informações, consulte Assinar seu aplicativo móvel.

Para disponibilizar o certificado e o perfil para o Xcode durante uma compilação, adicione as tarefas Instalar Certificado Apple e Instalar Perfil de Provisionamento Apple ao seu pipeline.

Usar uma variável de ambiente Carthage

Se o seu projeto usa Carthage com um repositório Carthage privado, você pode configurar a autenticação usando uma variável de ambiente nomeada GITHUB_ACCESS_TOKEN com um valor de um token que tem acesso ao repositório. Carthage deteta e usa automaticamente essa variável de ambiente.

Não adicione o token secreto diretamente ao seu pipeline YAML. Em vez disso, selecione Variáveis na página do pipeline para abrir o painel Variáveis e criar uma variável para esse token. Certifique-se de ativar o ícone de cadeado para criptografar o valor da variável. Para obter mais informações, consulte Definir variáveis secretas.

O código de pipeline a seguir usa uma variável secreta nomeada myGitHubAccessToken para o valor da variável de GITHUB_ACCESS_TOKEN ambiente.

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

Teste em dispositivos hospedados pelo Azure

Para testar seu aplicativo em um laboratório hospedado de dispositivos iOS no Visual Studio App Center, adicione a tarefa App Center Test ao seu pipeline.

Essa tarefa requer uma conta de avaliação gratuita do App Center , que deve ser convertida em paga após 30 dias para continuar a usar o laboratório de teste. Inscreva-se para obter uma conta do App Center antes de usar esta tarefa.

O exemplo a seguir executa um conjunto de testes do App Center. A tarefa usa uma conexão de serviço que você deve configurar.

Para obter a sintaxe e a referência completas da tarefa, consulte Tarefa de teste do App Center. Para obter mais informações, consulte Usando o Azure DevOps para teste de interface do usuário.

- 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'

Manter artefatos com o registro de compilação

Para armazenar seu arquivo iOS AppStore Package (IPA) com o registro de compilação ou teste e implantá-lo em pipelines subsequentes, adicione as tarefas Copiar arquivos e Publicar artefatos de compilação ao seu pipeline. Para obter mais informações, consulte Publicar e baixar artefatos de pipeline.

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

Implantar no App Center

Para distribuir uma aplicação a um grupo de testadores ou utilizadores beta ou promover a aplicação para o Intune ou para a Apple App Store, adicione a tarefa Distribuir do App Center. A tarefa requer uma conta gratuita do App Center que permanece gratuita.

O exemplo a seguir distribui um aplicativo para os usuários. Para obter a sintaxe e a referência completas da tarefa, consulte Distribuição do App Center. Para obter mais informações, consulte Implantar compilações do Azure DevOps com o App Center.

- 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'

Instale a extensão Apple App Store e implante na Apple App Store

Para automatizar a interação com a Apple App Store, instale a extensão Apple App Store e use as seguintes tarefas no seu pipeline. Por predefinição, estas tarefas são autenticadas na Apple utilizando uma ligação de serviço que tem de configurar.

Para automatizar o lançamento de atualizações para aplicativos beta ou aplicativos de produção existentes do iOS TestFlight na App Store, adicione a tarefa Lançamento da App Store.

Há limitações de usar essa tarefa com a autenticação de dois fatores da Apple. A autenticação da Apple é específica da região e os tokens de sessão fastlane expiram rapidamente e devem ser recriados e reconfigurados.

- 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

Para automatizar a promoção de uma aplicação submetida anteriormente a partir do iTunes Connect para a App Store, adicione a tarefa Promover da 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