Tutorial: Criar um pipeline que desenvolva e teste a aplicação Android com AWS Device Farm - AWS CodePipeline

Tutorial: Criar um pipeline que desenvolva e teste a aplicação Android com AWS Device Farm

É possível usar o AWS CodePipeline para configurar um fluxo de integração contínuo, no qual a aplicação é criada e testada sempre que uma confirmação é enviada. Este tutorial mostra como criar e configurar um pipeline para criar e testar seu aplicativo Android com código-fonte em um repositório GitHub. O pipeline detecta a chegada de um novo commit do GitHub e, em seguida, usa o CodeBuild para criar o aplicativo e o Device Farm para testá-lo.

Importante

Como parte da criação de um pipeline no console, um bucket de artefatos do S3 será usado pelo CodePipeline para artefatos. (Este bucket não é o mesmo utilizado para uma ação de origem do S3.) Se o bucket de artefatos do S3 estiver em uma conta diferente da conta do pipeline, garanta que o bucket de artefatos do S3 seja de propriedade de Contas da AWS seguras e confiáveis.

Importante

Muitas das ações adicionadas ao pipeline neste procedimento envolvem recursos da AWS que você precisa criar antes do pipeline. Os recursos da AWS para as ações de origem sempre devem ser criados na mesma região da AWS na qual o pipeline será criado. Por exemplo, se você criar o pipeline na região Leste dos EUA (Ohio), o repositório do CodeCommit deverá estar na região Leste dos EUA (Ohio).

Você pode adicionar ações entre regiões ao criar seu pipeline. Os recursos da AWS para ações entre regiões devem estar na mesma região da AWS em que você planeja executar a ação. Para obter mais informações, consulte Adicionar uma ação entre regiões no CodePipeline.

Você pode experimentar isso usando seu aplicativo Android e as definições de teste existentes ou pode usar o aplicativo de exemplo e as definições de teste fornecidas pelo Device Farm.

nota

Antes de começar

  1. Faça login no console do AWS Device Farm e escolha Create a new project (Criar novo projeto).

  2. Selecione o projeto. No navegador, copie o URL do novo projeto. O URL contém o ID do projeto.

  3. Copie e retenha esse ID de projeto. Você pode usá-lo ao criar o pipeline no CodePipeline.

    Este é um exemplo de URL para um projeto. Para extrair o ID do projeto, copie o valor depois de projects/. Neste exemplo, o ID do produto é eec4905f-98f8-40aa-9afc-4c1cfexample.

    https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs

Configurar o CodePipeline para usar os testes do Device Farm

  1. Adicione e confirme um arquivo chamado buildspec.yml na raiz do código do aplicativo e envie-o ao seu repositório. O CodeBuild usa esse arquivo para executar comandos e acessar os artefatos necessários para compilar o aplicativo.

    version: 0.2 phases: build: commands: - chmod +x ./gradlew - ./gradlew assembleDebug artifacts: files: - './android/app/build/outputs/**/*.apk' discard-paths: yes
  2. (Opcional) Se você usa o Calabash ou o Appium para testar seu aplicativo, adicione o arquivo de definição de teste ao seu repositório. Em uma etapa posterior, você pode configurar o Device Farm para usar as definições que executarão o pacote de teste.

    Se você usar os testes integrados do Device Farm, poderá ignorar esta etapa.

  3. Para criar seu pipeline e adicionar um estágio de origem, faça o seguinte:

    1. Faça login no Console de gerenciamento da AWS e abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline.

    2. Na página Welcome (Bem-vindo), Getting started (Conceitos básicos) ou Pipelines, selecione Create pipeline (Criar pipeline).

    3. Na página Etapa 1: Escolher opção de criação, em Opções de criação, selecione a opção Criar pipeline personalizado. Escolha Próximo.

    4. Em Etapa 2: escolher a página de configurações do pipeline, em Nome do pipeline, insira o nome do seu pipeline.

    5. O CodePipeline disponibiliza pipelines dos tipos V1 e V2, que apresentam características e custos diferentes. O tipo V2 é o único tipo que você pode escolher no console. Para ter mais informações, consulte Pipeline types. Para obter informações sobre preços do CodePipeline, consulte Preços.

    6. Em Service role (Função de serviço), deixe New service role (Nova função de serviço) selecionado e não altere Role name (Nome da função). Você também pode optar por usar uma função de serviço existente se tiver criado uma.

      nota

      Se você usar um perfil de serviço do CodePipeline criado antes de julho de 2018, será necessário adicionar permissões para o Device Farm. Para fazer isso, abra o console do IAM, localize o perfil e, em seguida, adicione as seguintes permissões à política do perfil. Para obter mais informações, consulte Adicionar permissões ao perfil de serviço do CodePipeline.

      { "Effect": "Allow", "Action": [ "devicefarm:ListProjects", "devicefarm:ListDevicePools", "devicefarm:GetRun", "devicefarm:GetUpload", "devicefarm:CreateUpload", "devicefarm:ScheduleRun" ], "Resource": "*" }
    7. Deixe as configurações em Advanced settings (Configurações avançadas) como padrão e escolha Next (Próximo).

    8. Na página Etapa 3: Adicionar etapa de origem, em Provedor de origem, escolha GitHub (por meio do aplicativo do GitHub).

    9. Em Conexão, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação de origem do GitHub, consulte Conexões do GitHub.

    10. Em Repository (Repositório), selecione o repositório de origem.

    11. Em Branch (Ramificação), selecione a ramificação que você deseja usar.

    12. Deixe os padrões restantes para a ação de origem. Escolha Próximo.

  4. Em Etapa 4: Adicionar etapa de compilação, adicione um estágio de compilação:

    1. Em Provedor de compilação, escolha Outros fornecedores de compilação e AWS CodeBuild. Permita que Region (Região) seja definida para a região do pipeline.

    2. Escolha Criar projeto.

    3. Em Nome do projeto, insira um nome para esse projeto de compilação.

    4. Em Environment image (Imagem do ambiente), escolha Managed image (Imagem gerenciada). Para Operating system, selecione Ubuntu.

    5. Em Runtime (Tempo de execução), selecione Standard (Padrão). Em Imagem, selecione aws/codebuild/standard:5.0.

      O CodeBuild usa essa imagem do sistema operacional, que tem o Android Studio instalado, para criar o aplicativo.

    6. Em Perfil de serviço, selecione o perfil de serviço do CodeBuild existente ou crie outro.

    7. Para Build specifications (Especificações da compilação), escolha Use a buildspec file (Usar um arquivo buildspec).

    8. Escolha Continue to CodePipeline (Continuar para CodePipeline). O console do CodePipeline será exibido e será criado um projeto do CodeBuild que use o buildspec.yml no repositório para configuração. O projeto de criação usa um perfil de serviço para gerenciar permissões de AWS service (Serviço da AWS). Essa etapa pode levar alguns minutos.

    9. Escolha Próximo.

  5. Em Etapa 5: Adicionar etapa de teste, escolha Ignorar etapa de teste e aceite a mensagem de aviso escolhendo Ignorar novamente.

    Escolha Próximo.

  6. Na página Etapa 6: adicionar estágio de implantação, escolha Ignorar estágio de implantação e aceite a mensagem de aviso escolhendo Ignorar novamente. Escolha Próximo.

  7. Em Etapa 7: revisar, escolha Criar pipeline. Você deve ver um diagrama que mostra a origem e os estágios de compilação.

  8. Adicione uma ação de teste do Device Farm ao pipeline:

    1. No canto superior direito, escolha Edit (Editar).

    2. Na parte inferior do diagrama, escolha + Add stage (+ Adicionar estágio). Em Nome do estágio, insira um nome, como Test.

    3. Escolha + Add action group (Adicionar grupo de ação).

    4. Em Nome da ação, insira um nome.

    5. Em Provedor de ação, selecione AWS Device Farm. Permita que Region (Região) seja definida para a região do pipeline.

    6. Em Input artifacts (Artefatos de entrada), selecione o artefato de entrada que corresponde ao artefato de saída do estágio que vem antes do estágio de teste, como BuildArtifact.

      No console do AWS CodePipeline, você pode encontrar o nome do artefato de saída para cada estágio passando o mouse sobre o ícone de informações no diagrama do pipeline. Se o pipeline testa o aplicativo diretamente no estágio Source (Origem), selecione SourceArtifact. Se o pipeline inclui um estágio Build (Compilação), selecione BuildArtifact.

    7. Em ProjectId, insira o ID de projeto do Device Farm. Use as etapas no início deste tutorial para recuperar o ID do projeto.

    8. Em DevicePoolArn, insira o ARN do grupo de dispositivos. Para obter os ARNs de grupo de dispositivos disponíveis para o projeto, incluindo o ARN dos principais dispositivos, use a AWS CLI para inserir o seguinte comando:

      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
    9. Em AppType, insira Android.

      A seguir está uma lista de valores válidos para AppType:

      • iOS

      • Android

      • Web

    10. Em App (Aplicativo), insira o caminho do pacote do aplicativo compilado. O caminho é relativo à raiz do artefato de entrada do estágio de teste. Normalmente, esse caminho é semelhante a app-release.apk.

    11. Em TestType, insira o tipo de teste e, depois, em Teste, insira o caminho do arquivo de definição do teste. O caminho é relativo à raiz do artefato de entrada para o teste.

      A seguir está uma lista de valores válidos para TestType:

      • APPIUM_JAVA_JUNIT

      • APPIUM_JAVA_TESTING

      • APPIUM_NODE

      • APPIUM_RUBY

      • APPIUM_PYTHON

      • APPIUM_WEB_JAVA_JUNIT

      • APPIUM_WEB_JAVA_TESTING

      • APPIUM_WEB_NODE

      • APPIUM_WEB_RUBY

      • APPIUM_WEB_PYTHON

      • BUILTIN_FUZZ

      • INSTRUMENTATION

      • XCTEST

      • XCTEST_UI

      nota

      Os nós de ambiente personalizados não são compatíveis.

    12. Nos campos restantes, forneça a configuração que seja apropriada para seu teste e tipo de aplicativo.

    13. (Opcional) Em Advanced (Avançado), forneça informações de configuração para a execução do teste.

    14. Escolha Salvar.

    15. No estágio que está editando, escolha Done (Concluído). No painel do AWS CodePipeline, escolha Save (Salvar) e selecione Save (Salvar) na mensagem de aviso.

    16. Para enviar suas alterações e iniciar uma compilação do pipeline, selecione Liberar alteração e, depois, Liberar.