Criar e implantar aplicativos Xamarin com um pipeline
Azure DevOps Services
Introdução com o Xamarin e Azure Pipelines usando um pipeline para implantar um aplicativo Xamarin. Você pode implantar aplicativos Android e iOS nos mesmos pipelines ou separados.
Pré-requisitos
Tenha os seguintes itens:
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Uma organização Azure DevOps ativa. Inscreva-se para Azure Pipelines.
Obter o código
Bifurque o seguinte repositório em GitHub:
https://github.com/MicrosoftDocs/pipelines-xamarin
Este exemplo é o FirstApp exemplo do https://github.com/xamarin/xamarin-forms-samples repositório. Para obter mais informações sobre como começar a usar o Xamarin, consulte Criar seu primeiro aplicativo Xamarin.Forms.
Entrar no Azure Pipelines
Entre no Azure Pipelines. Depois de entrar, o navegador vai para https://dev.azure.com/my-organization-name e exibe o painel do Azure DevOps.
Na organização selecionada, crie um projeto. Se você não tiver nenhum projeto em sua organização, verá uma tela Criar um projeto para começar. Caso contrário, selecione o botão Novo Project no canto superior direito do painel.
Criar o pipeline
Entre em sua organização Azure DevOps e acesse seu projeto.
Acesse Pipelines e selecione Novo pipeline.
Percorra as etapas do assistente selecionando primeiro o GitHub como o local do código-fonte.
Você pode ser redirecionado para o GitHub para então entrar. Nesse caso, insira suas credenciais do GitHub.
Quando a lista de repositórios for exibida, selecione o repositório.
Você poderá ser redirecionado ao GitHub para instalar o aplicativo do Azure Pipelines. Nesse caso, selecione Aprovar & instalar.
Na guia Configurar, selecioneXamarin.Android para criar um projeto Android ou Xamarin.iOS para criar um projeto iOS. Se você quiser usar os arquivos de exemplo
.ymlincluídos, escolha o arquivo YAML Azure Pipelines existente e escolha entre um dos pipelines de exemplo incluídos (Android, iOS ou um pipeline combinado que compila ambos).Quando o novo pipeline aparecer, dê uma olhada no YAML para ver o que ele faz. Ao final, selecione Salvar e executar.

Se você criou um novo arquivo YAML, confirme um novo arquivo azure-pipelines.yml no repositório. Depois de ficar satisfeito com a mensagem, selecione Salvar e executar novamente.
Se você quiser observar o pipeline em ação, selecione o trabalho de build. Agora você tem um pipeline YAML funcional (
azure-pipelines.yml) em seu repositório que está pronto para personalizar!Quando estiver pronto para fazer alterações no pipeline, selecione-o na página Pipelines e edite o
azure-pipelines.ymlarquivo.
Leia mais para saber mais sobre algumas das maneiras mais comuns de personalizar seu pipeline.
Configurar ferramentas do Xamarin
Você pode usar Azure Pipelines para criar seus aplicativos Xamarin sem configurar sua própria infraestrutura. As ferramentas Xamarin são pré-instaladas em agentes hospedados pela Microsoft em Azure Pipelines. Você pode usar agentes macOS ou Windows para executar builds do Xamarin.Android e macOS agentes para executar builds do Xamarin.iOS. Se você estiver usando um agente auto-hospedado, instale uma das seguintes ferramentas:
- Ferramentas do Visual Studio para Xamarin para agentes Windows
- Visual Studio para Mac para agentes macOS
Para versões exatas do Xamarin pré-instaladas, consulte agentes hospedados pela Microsoft.
Crie um arquivo chamado azure-pipelines.yml na raiz do repositório. Em seguida, adicione o seguinte snippet ao arquivo azure-pipelines.yml para selecionar o pool de agentes apropriado:
# https://docs.microsoft.com/azure/devops/pipelines/ecosystems/xamarin
pool:
vmImage: 'macOS-10.15' # For Windows, use 'windows-2019'
Crie um Xamarin. Android aplicativo
Para criar um Xamarin. Android aplicativo, adicione o snippet a seguir ao arquivoazure-pipelines.yml. Altere valores para corresponder à configuração do projeto. Para obter mais informações sobre opções, consulte a tarefa Xamarin.Android.
variables:
buildConfiguration: 'Release'
outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '**/*.sln'
- task: XamarinAndroid@1
inputs:
projectFile: '**/*Droid*.csproj'
outputDirectory: '$(outputDirectory)'
configuration: '$(buildConfiguration)'
msbuildVersionOption: '16.0'
Assine um Xamarin. Android aplicativo
Para obter informações sobre como assinar seu aplicativo, consulte Assinar seu aplicativo de Android móvel durante a CI.
Crie um Xamarin. iOS aplicativo
Para criar um Xamarin. iOS aplicativo, adicione o snippet a seguir ao arquivoazure-pipelines.yml. Altere valores para corresponder à configuração do projeto. Para obter mais informações sobre opções, consulte a tarefa Xamarin.iOS.
variables:
buildConfiguration: 'Release'
steps:
- task: XamariniOS@2
inputs:
solutionFile: '**/*iOS.csproj'
configuration: '$(buildConfiguration)'
packageApp: false
buildForSimulator: true
Assine e provisione um Xamarin. iOS aplicativo – A opção PackageApp
Para gerar um Xamarin assinado e provisionado. iOS pacote .ipa do aplicativo, definido packageApp como true. Verifique se você já instalou o Perfil de Provisionamento da Apple e os Certificados apple corretos que correspondem à ID do Pacote de Aplicativos com o agente que executa o trabalho.
Para atender a esses requisitos obrigatórios, use as tarefas fornecidas pela Microsoft para instalar um Perfil de Provisionamento da Apple e instalar certificados apple.
- task: XamariniOS@2
inputs:
solutionFile: '**/*iOS.csproj'
configuration: 'AppStore'
packageApp: true
Dica
O Xamarin. iOS tarefa de build só gerará um pacote .ipa se o agente que executa o trabalho tiver o perfil de provisionamento apropriado e o certificado apple instalado. Se você habilitar a opção packageApp e o agente não tiver o perfil de provisionamento da apple apropriado(.mobileprovision) e o apple certificate(.p12), o build poderá ter êxito, mas o .ipa não será gerado.
Para agentes hospedados pela Microsoft, o pacote .ipa é, por padrão, localizado no seguinte caminho:
{iOS.csproj root}/bin/{Configuration}/{iPhone/iPhoneSimulator}/
Você pode configurar o caminho de saída adicionando um argumento ao Xamarin. iOS tarefa:
- task: XamariniOS@2
inputs:
solutionFile: '**/*iOS.csproj'
configuration: 'AppStore'
packageApp: true
args: /p:IpaPackageDir="/Users/vsts/agent/2.153.2/work/1/a"
Este exemplo localiza o .ipa no Diretório de Preparo de Artefatos de Build. Ele está pronto para ser empurrado para Azure DevOps como um artefato para cada execução de build. Para enviar por push para Azure DevOps, adicione uma tarefa Publicar Artefato ao final do pipeline.
Para obter mais informações sobre como assinar e provisionar seu aplicativo iOS, consulte Assinar seu aplicativo de iOS móvel durante a CI.
Definir a versão do SDK do Xamarin em macOS
Para definir uma versão específica do SDK do Xamarin a ser usada no pool de agentes do macOS hospedado pela Microsoft, adicione o snippet a seguir antes da XamariniOS tarefa em seu azure-pipelines.yml arquivo. Para obter detalhes sobre como formatar corretamente o número da versão (mostrado como 5_4_1 abaixo), consulte Como posso selecionar manualmente versões das ferramentas no agente de macOS Hospedado?.
- script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_4_1
displayName: 'Select Xamarin SDK version'
Criar Xamarin. Android e Xamarin. iOS aplicativos com um pipeline
Você pode criar e testar seu Xamarin. Android aplicativo, Xamarin. iOS aplicativo e aplicativos relacionados no mesmo pipeline definindo vários trabalhos em azure-pipelines.yml. Esses trabalhos podem ser executados em paralelo para economizar tempo. O exemplo completo a seguir cria um Xamarin. Android aplicativo no Windows e um aplicativo Xamarin.iOS no macOS, usando dois trabalhos.
# Xamarin.Android and Xamarin.iOS
# Build a Xamarin.Android and Xamarin.iOS app.
# Add steps that test, sign, and distribute the app, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/ecosystems/xamarin
jobs:
- job: Android
pool:
vmImage: 'windows-2019'
variables:
buildConfiguration: 'Release'
outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '**/*.sln'
- task: XamarinAndroid@1
inputs:
projectFile: '**/*droid*.csproj'
outputDirectory: '$(outputDirectory)'
configuration: '$(buildConfiguration)'
msbuildVersionOption: '16.0'
- task: AndroidSigning@3
inputs:
apksign: false
zipalign: false
apkFiles: '$(outputDirectory)/*.apk'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(outputDirectory)'
- job: iOS
pool:
vmImage: 'macOS-10.15'
steps:
# To manually select a Xamarin SDK version on the Hosted macOS agent, enable this script with the SDK version you want to target
# https://go.microsoft.com/fwlink/?linkid=871629
- script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_4_1
displayName: 'Select Xamarin SDK version'
enabled: false
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '**/*.sln'
- task: XamariniOS@2
inputs:
solutionFile: '**/*.sln'
configuration: 'Release'
buildForSimulator: true
packageApp: false
Limpar os recursos
Se você não precisar do código de exemplo, exclua seu repositório GitHub e Azure Pipelines projeto.