Compartilhar via


Compilar, testar e implantar aplicativos 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 do Xcode com pipelines YAML no Azure Pipelines.

Pré-requisitos

  • Uma organização e um projeto do Azure DevOps em que você tem permissão para criar pipelines e implantar aplicativos.
  • Um projeto e aplicativo Xcode 9+ em um repositório do 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 efetuar o processo. Para obter mais informações, confira Acesso ao repositórios do GitHub.

  1. Em seu projeto do Azure DevOps, selecione Pipelines>Novo pipeline ou Criar pipeline se esse pipeline for o primeiro no projeto.
  2. Selecione GitHub como o local do código-fonte.
  3. Na tela Selecionar 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 baseado no modelo Xcode. Revise o código em azure-pipelines.yml.

Ambiente de build

O Xcode é pré-instalado nos agentes macOS hospedados pela Microsoft no Azure Pipelines, para que você não precise configurar nenhuma infraestrutura. Para obter as versões exatas do Xcode pré-instaladas, confira software de agentes hospedados pela Microsoft.

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

pool:
  vmImage: 'macOS-latest'

Tarefa build do Xcode

A tarefa Xcode cria, testa ou arquiva um espaço de trabalho do Xcode no macOS e, opcionalmente, pode empacotar um aplicativo. A etapa Xcode no arquivo 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

Salvar e executar 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 de compilação mostra detalhes e progresso da compilação. Se quiser ver o seu pipeline em ação, selecione Trabalho na parte inferior da página.

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

Personalizar o pipeline

Para fazer alterações no seu pipeline, selecione Editar na página do pipeline. As seções a seguir descrevem algumas maneiras comuns de personalizar o 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 ser publicado na App Store. O processo de assinatura e provisionamento precisa de acesso ao certificado de assinatura P12, e a um ou mais perfis de provisionamento. Para obter mais informações, consulte cadastre seu aplicativo móvel.

Para disponibilizar o certificado e o perfil para o Xcode durante um build, adicione as tarefas Instalar Certificado Apple e Instalar Perfil de Provisionamento da 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 definindo uma variável de ambiente nomeada GITHUB_ACCESS_TOKEN com o valor de um token que tenha acesso ao repositório. O Carthage irá detectar e usar automaticamente essa variável de ambiente.

Não adicione o token secreto diretamente ao seu YAML do pipeline. 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 habilitar 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)

Testar em dispositivos hospedados no Azure

Para testar seu aplicativo em um laboratório hospedado de dispositivos iOS no Visual Studio App Center, adicione a tarefa Teste do App Center 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 em 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ê deverá configurar.

Para obter a sintaxe e a referência completas da tarefa, consulte Tarefa de teste do App Center. Para saber informações, consulte Usando o Azure DevOps para testes de IU.

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

Para armazenar o arquivo IPA (Pacote da AppStore) do iOS com o registro de build ou teste e implantá-lo em pipelines subsequentes, adicione as tarefas Copiar Arquivos e Publicar Artefatos de Build 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

Adicione a tarefa Distribuição do App Center para distribuir um aplicativo a um grupo de testadores ou usuários beta, ou promova o aplicativo para o Intune ou a Apple App Store. A tarefa requer uma conta gratuita do App Center que permaneça gratuita.

O exemplo a seguir distribui um aplicativo para os usuários. Para obter a sintaxe e a referência completas da tarefa, consulte App Center Distribute. Para obter mais informações, consulte Implantar builds 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 da Apple App Store e implante na Apple App Store

Instale a extensão da Apple App Store e use as tarefas a seguir para automatizar a interação com a Apple App Store no pipeline. Por padrão, essas tarefas são autenticadas na Apple usando uma conexão de serviço que deve ser configurada.

Adicione a tarefa Versão da App Store para automatizar a versão das atualizações para aplicativos beta do iOS TestFlight ou aplicativos de produção existentes na App Store.

Existem limitações ao usar essa tarefa com a autenticação de dois fatores da Apple. A autenticação da Apple é específica por 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

Adicione a tarefa Promover App Store para automatizar a divulgação de um aplicativo enviado anteriormente do iTunes Connect para a 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