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.
- Em seu projeto do Azure DevOps, selecione Pipelines>Novo pipeline ou Criar pipeline se esse pipeline for o primeiro no projeto.
- Selecione GitHub como o local do código-fonte.
- Na tela Selecionar um repositório, selecione o repositório para seu projeto Xcode.
- 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.
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
Extensões relacionadas
- Apple App Store da Microsoft
- Segurança Codificada da Segurança Codificada
- MacinCloud da Moboware Inc.
- Tarefas de aplicativos móveis para iOS e Android por James Montemagno
- Laboratório de Testes Móveis da Perfecto Mobile
- Raygun da Raygun
- React Native da Microsoft
- Version Setter por Tom Gilder