Tutorial: Crear una canalización que compile y pruebe la aplicación para Android con AWS Device Farm - AWS CodePipeline

Tutorial: Crear una canalización que compile y pruebe la aplicación para Android con AWS Device Farm

Puede usar AWS CodePipeline para configurar un flujo de integración continua en el que su aplicación se compila y se prueba cada vez que se envía una confirmación. En este tutorial se muestra cómo crear y configurar una canalización para compilar y probar su aplicación Android con código fuente en un repositorio de GitHub. La canalización detecta la llegada de una nueva confirmación de GitHub y, a continuación, usa CodeBuild para compilar la aplicación y Device Farm para probarla.

importante

Como parte de la creación de una canalización en la consola, CodePipeline utilizará un bucket de artefactos de S3 para los artefactos. (Es diferente del bucket que se usa para una acción de origen de S3). Si el bucket de artefactos de S3 se encuentra en una cuenta diferente a la cuenta de su canalización, asegúrese de que el bucket de artefactos de S3 pertenezca a Cuentas de AWS que sean seguras y fiables.

importante

Muchas de las acciones que agrega a su canalización en este procedimiento implican recursos de AWS que debe crear antes de crear la canalización. Los recursos de AWSpara las acciones de origen siempre deben crearse en la misma región de AWS en la que se creó la canalización. Por ejemplo, si crea la canalización en la región Este de EE. UU. (Ohio), el repositorio de CodeCommit debe estar en la región Este de EE. UU. (Ohio).

Puede añadir acciones entre regiones al crear su canalización. Los recursos de AWS para las acciones entre regiones deben estar en la misma región de AWS en la que planea ejecutar la acción. Para obtener más información, consulte Agregar una acción entre regiones en CodePipeline.

Puede probarlo con su aplicación Android actual y las definiciones de prueba, o usar la aplicación de muestra y las definiciones de prueba que proporciona Device Farm.

nota

Antes de empezar

  1. Inicie sesión en la consola de AWS Device Farm y elija Create a new project (Crear un nuevo proyecto).

  2. Elija el proyecto. En el navegador, copie la URL de su nuevo proyecto. La dirección URL contiene el ID del proyecto.

  3. Copie y conserve este ID de proyecto. Lo usará al crear la canalización en CodePipeline.

    Aquí mostramos una URL de ejemplo para un proyecto. Para extraer el ID del proyecto, copie el valor detrás de projects/. En este ejemplo, el ID del proyecto es eec4905f-98f8-40aa-9afc-4c1cfexample.

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

Configure CodePipeline para usar sus pruebas de Device Farm

  1. Añada y confirme un archivo llamado buildspec.yml en la raíz del código de la aplicación y envíelo a su repositorio. CodeBuild usa este archivo para realizar comandos y obtener acceso a los artefactos necesarios para compilar su aplicación.

    version: 0.2 phases: build: commands: - chmod +x ./gradlew - ./gradlew assembleDebug artifacts: files: - './android/app/build/outputs/**/*.apk' discard-paths: yes
  2. (Opcional) Si usa Calabash o Appium para probar su aplicación, añada el archivo de definición de prueba al repositorio. Después podrá configurar CodeBuild para usar las definiciones con el fin de llevar a cabo el conjunto de pruebas.

    Si utiliza las pruebas de Device Farm incorporadas, puede omitir este paso.

  3. Para crear la canalización y añadir una etapa de código fuente, haga lo siguiente:

    1. Inicie sesión en la Consola de administración de AWS y abra la consola de CodePipeline en https://console.aws.amazon.com/codepipeline/.

    2. En la página Bienvenido, Introducción o Canalizaciones, elija Crear canalización.

    3. En la página Paso 1: elección de la opción de creación, en Opciones de creación, seleccione la opción Crear una canalización personalizada. Elija Siguiente.

    4. En la página Paso 2: elegir la configuración de la canalización, en Nombre de la canalización, escriba el nombre de la canalización.

    5. CodePipeline proporciona canalizaciones de tipo V1 y V2, que difieren en características y precio. El tipo V2 es el único tipo que puede elegir en la consola. Para obtener más información, consulte Tipos de canalización. Para obtener más información acerca de los precios de CodePipeline, consulte Precios.

    6. En Service role (Rol de servicio), deje la opción New service role (Nuevo rol de servicio) seleccionada y no haga ningún cambio en Role name (Nombre de rol). También puede usar un rol de servicio que haya creado anteriormente.

      nota

      Si utiliza un rol de servicio de CodePipeline creado antes de julio de 2018, debe añadir permisos para Device Farm. Para ello, abra la consola de IAM, busque el rol y, a continuación, añada los siguientes permisos a la política del rol. Para obtener más información, consulte Añadir permisos al rol de servicio de CodePipeline.

      { "Effect": "Allow", "Action": [ "devicefarm:ListProjects", "devicefarm:ListDevicePools", "devicefarm:GetRun", "devicefarm:GetUpload", "devicefarm:CreateUpload", "devicefarm:ScheduleRun" ], "Resource": "*" }
    7. En Advanced settings (Configuración avanzada), deje los valores predeterminados y elija Next (Siguiente).

    8. En el paso 3: agregación de la etapa de origen, en Proveedor de origen, elija GitHub (mediante la aplicación de GitHub).

    9. En Conexión, seleccione una conexión existente o cree una nueva. Para crear o administrar una conexión para su acción de origen de GitHub, consulte Conexiones de GitHub.

    10. En Repository (Repositorio), elija el repositorio de código fuente.

    11. En Branch (Ramificación), elija la ramificación que desea utilizar.

    12. Deje los valores predeterminados restantes para la acción de origen. Elija Siguiente.

  4. En Paso 4: agregación de la etapa de compilación, agregue una etapa de compilación:

    1. En Proveedor de compilación, elija Otros proveedores de compilación y, a continuación, elija AWS CodeBuild. En el campo Region (Región) conserve el valor predeterminado de la región de la canalización.

    2. Elija Crear proyecto.

    3. En Project name (Nombre de proyecto), escriba un nombre para este proyecto de compilación.

    4. En Environment image (Imagen de entorno), elija Managed image (Imagen administrada). En Operating system (Sistema operativo), elija Ubuntu.

    5. En Runtime, elija Standard (Estándar). En Imagen, elija aws/codebuild/standard:5.0.

      CodeBuild utiliza esta imagen de sistema operativo, que tiene instalado Android Studio, para compilar su aplicación.

    6. En Rol de servicio, elija el rol de servicio de existente o cree uno nuevo.

    7. En Build specifications (Especificaciones de compilación), elija Use a buildspec file (Usar un archivo buildspec).

    8. Elija Continue to CodePipeline (Continuar en CodePipeline). Esto le devuelve a la consola de CodePipeline y crea un proyecto de CodeBuild que utiliza el archivo buildspec.yml del repositorio para la configuración. El proyecto de compilación utiliza un rol de servicio para administrar los permisos del Servicio de AWS. Es posible que este paso tarde un par de minutos.

    9. Elija Siguiente.

  5. En Paso 5: agregación de la etapa de prueba, elija Omitir la etapa de prueba y, a continuación, acepte el mensaje de advertencia eligiendo Omitir una vez más.

    Elija Siguiente.

  6. En la página Paso 6: agregar la etapa de implementación, elija Omitir la etapa de implementación y, a continuación, acepte el mensaje de advertencia eligiendo Omitir una vez más. Elija Siguiente.

  7. En el Paso 7: revisión, elija Crear la canalización. Debe ver un diagrama que muestra las etapas de código fuente y de compilación.

  8. Añada una acción de prueba de Device Farm a su canalización:

    1. En la parte superior derecha, elija Edit (Editar).

    2. En la parte inferior del diagrama, seleccione + Add stage (Añadir etapa). En Nombre de la etapa, escriba un nombre; por ejemplo, Test.

    3. Elija + Add action group (Añadir grupo de acciones).

    4. En Nombre de la acción, escriba un nombre.

    5. En Proveedor de la acción, elija AWS Device Farm. En el campo Region (Región) conserve el valor predeterminado de la región de la canalización.

    6. En Input artifacts (Artefactos de entrada), elija el artefacto de entrada que coincida con el artefacto de salida de la etapa anterior a la de prueba, como BuildArtifact.

      En la consola de AWS CodePipeline, puede encontrar el nombre del artefacto de salida de cada etapa si pasa el ratón sobre el icono de información en el diagrama de canalizaciones. Si la canalización prueba la aplicación directamente desde la etapa Source (Código fuente), elija SourceArtifact. Si la canalización incluye una etapa Build (Compilación), elija BuildArtifact.

    7. En ProjectId, escriba el ID del proyecto de Device Farm. Siga los pasos que se indican al principio de este tutorial para recuperar el ID del proyecto.

    8. En DevicePoolArn, escriba el ARN del grupo de dispositivos. Para obtener los ARN del grupo de dispositivos disponibles para el proyecto, incluido el ARN de los principales dispositivos, utilice la CLI de AWS para introducir el siguiente comando:

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

      A continuación, se muestra una lista de valores válidos para AppType:

      • iOS

      • Android

      • Web

    10. En App (Aplicación), escriba la ruta del paquete de la aplicación compilado. La ruta es relativa a la raíz del artefacto de entrada de la etapa de prueba. Típicamente, esta ruta es similar a app-release.apk.

    11. In Tipo de prueba, escriba el tipo de prueba y, en Prueba, escriba la ruta del archivo de definición de prueba. La ruta es relativa a la raíz del artefacto de entrada de la prueba.

      A continuación, se muestra una lista de valores válidos para TestType:

      • APPIUM_JAVA_JUNIT

      • APPIUM_JAVA_TESTNG

      • APPIUM_NODE

      • APPIUM_RUBY

      • APPIUM_PYTHON

      • APPIUM_WEB_JAVA_JUNIT

      • APPIUM_WEB_JAVA_TESTNG

      • APPIUM_WEB_NODE

      • APPIUM_WEB_RUBY

      • APPIUM_WEB_PYTHON

      • BUILTIN_FUZZ

      • INSTRUMENTATION

      • XCTEST

      • XCTEST_UI

      nota

      No se admiten los nodos de entorno personalizados.

    12. En los campos restantes, proporcione la configuración que sea adecuada para su prueba y tipo de aplicación.

    13. (Opcional) En Advanced (Avanzado), proporcione información acerca de la configuración en la ejecución de prueba.

    14. Seleccione Save.

    15. En la etapa que está editando, elija Done (Listo). En el panel de AWS CodePipeline, elija Save (Guardar) y, a continuación, elija Save (Guardar) cuando aparezca el mensaje de advertencia.

    16. Para enviar los cambios y comenzar una compilación de canalización, seleccione Publicar modificación y, a continuación, Publicar.