Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Este artigo mostra como criar e implantar projetos 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 workspace 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.
Build de desenvolvimento:
steps:
- task: Xcode@5
inputs:
actions: 'build'
scheme: ''
sdk: 'iphonesimulator'
configuration: 'Debug'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
xcodeVersion: 'default' # Options: 10, 11, 12, 13, 14, default, specifyPath
Build de produção para App Store:
Para versões de produção, especifique uma versão explícita do Xcode, o esquema do aplicativo e a configuração de versão:
steps:
- task: Xcode@5
inputs:
actions: 'build'
scheme: 'YourAppScheme'
sdk: 'iphoneos'
configuration: 'Release'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
xcodeVersion: '14'
packageApp: true
exportPath: '$(build.artifactStagingDirectory)'
exportOptions: 'automatic'
Principais diferenças para a produção:
-
xcodeVersion: especifique uma versão fixa (por exemplo,
'14') ao invés de'default'para compilações consistentes e reproduzíveis. - esquema: substitua a cadeia de caracteres vazia pelo nome real do esquema do aplicativo.
-
sdk: usar
'iphoneos'para builds de dispositivo; use'iphonesimulator'para builds de simulador. -
configuração: Use
'Release'para produção; use'Debug'para desenvolvimento. -
packageApp: defina para
truegerar um.ipaarquivo para distribuição. - exportPath: direciona a saída do pacote para o diretório de preparo de build para publicação de artefatos.
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 pipeline do Xcode com base em suas necessidades específicas:
- Assinatura e provisionamento: Necessário para implantar em dispositivos físicos ou na App Store.
- Gerenciamento de dependências: Configure a autenticação para repositórios privados.
- Gerenciamento de artefatos: Armazene saídas de build para teste e implantação.
- Distribuição: Automatize a versão no TestFlight ou na App Store.
Adicionar tarefas de assinatura e provisionamento
Para executar seu aplicativo Xcode em um dispositivo físico ou publicá-lo na App Store, você precisa assinar e provisionar o aplicativo. Esse processo envolve o uso de um certificado de assinatura P12 (uma credencial de segurança que verifica a identidade do aplicativo) e perfis de provisionamento (que autorizam seu aplicativo para dispositivos ou distribuição específicos). 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.
Gerenciar dependências
Seu projeto Xcode pode usar gerenciadores de dependência para lidar com estruturas e bibliotecas de terceiros. As seções a seguir descrevem como configurar a autenticação para repositórios privados com diferentes gerenciadores de dependência.
Gerenciador de Pacotes Swift
O SPM (Gerenciador de Pacotes Swift) é o gerenciador de dependências nativo da Apple e é integrado diretamente ao Xcode. Para projetos que usam o SPM com pacotes privados, você precisa configurar a autenticação do Git.
Se os pacotes privados do Swift estiverem hospedados no GitHub, configure a autenticação usando uma variável de ambiente nomeada GITHUB_ACCESS_TOKEN com um valor de um token de acesso pessoal que tenha acesso ao repositório.
Não adicione o token secreto diretamente ao YAML do pipeline, pois essa ação o expõe no código-fonte. 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 autenticação ao resolver dependências do Pacote Swift:
- task: Xcode@5
inputs:
actions: 'build'
scheme: ''
sdk: 'iphoneos'
configuration: 'Release'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
Para pacotes privados hospedados no Azure Repos ou em outros provedores Git, configure as credenciais apropriadas do Git antes da etapa de build.
Cacau
Se o projeto usar CocoaPods, use a tarefa CocoaPods para instalar dependências.
- task: CocoaPods@0
inputs:
workingDirectory: '$(System.DefaultWorkingDirectory)'
forceRepo: false
Carthage
Se o projeto usar o Carthage (um gerenciador de dependências para projetos iOS/macOS) com um repositório carthage privado, configure a autenticação usando uma variável de ambiente nomeada GITHUB_ACCESS_TOKEN com um 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 YAML do pipeline, pois essa ação o expõe no código-fonte. 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
displayName: 'Update Carthage dependencies'
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
Testar em dispositivos hospedados no Azure
O Visual Studio App Center foi desativado em 31 de março de 2025. Saiba mais sobre as alternativas recomendadas.
Manter artefatos com o registro de build
Para armazenar o arquivo IPA (Pacote AppStore) do iOS com o histórico do build ou testá-lo e implantá-lo em pipelines subsequentes, adicione as tarefas Copiar Arquivos e Publicar Artefatos de Pipeline à sua pipeline.
- task: CopyFiles@2
inputs:
contents: '**/*.ipa'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(build.artifactStagingDirectory)'
artifact: 'drop'
Implantar na Apple App Store ou TestFlight
Para distribuir um aplicativo para testadores ou usuários beta, use o TestFlight da Apple ou implante diretamente na App Store. Consulte a seção abaixo para a implantação da Apple App Store.
Para testes beta e comentários do usuário, considere usar:
- Apple TestFlight
- Plataformas de teste beta de terceiros, como a Distribuição de Aplicativos do Firebase
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.
Há limitações ao 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 (credenciais temporárias usadas para autenticar com a Apple) expiram rapidamente e devem ser recriados e reconfigurados periodicamente.
- 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