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

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

Puede usar AWS CodePipeline para configurar fácilmente un flujo de integración continua en el que su aplicación se prueba cada vez que cambia el bucket de código fuente. En este tutorial se muestra cómo crear y configurar una canalización para probar su aplicación iOS compilada desde un bucket de S3. La canalización detecta la llegada de un cambio guardado a través de Eventos de Amazon CloudWatch y, a continuación, utiliza Device Farm para probar la aplicación compilada.

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 código fuente 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 la aplicación iOS de muestra o usar la suya.

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

Configurar CodePipeline para usar las pruebas de Device Farm (ejemplo de Amazon S3)

  1. Cree o utilice un bucket de S3 con el control de versiones habilitado. Puede seguir las instrucciones de Paso 1: Crear un bucket de S3 para la aplicación para crear un bucket de S3.

  2. En la consola de Amazon S3 para su bucket, elija Cargar y siga las instrucciones para cargar el archivo .zip.

    La aplicación compilada de muestra debe estar empaquetada en un archivo .zip.

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

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

    2. Elija Crear canalización. En la página Step 1: Choose pipeline settings (Paso 1: Elegir configuración de canalización), en Pipeline name (Nombre de canalización), escriba el nombre de la canalización.

    3. En Tipo de canalización, elija V1 para los fines de este tutorial. También puede elegir V2; sin embargo, tenga en cuenta que los tipos de canalización difieren en cuanto a características y precio. Para obtener más información, consulte Tipos de canalización.

    4. 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 Agregar permisos al rol de servicio de CodePipeline.

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

    6. En la página Step 2: Add source stage (Paso 2: Añadir etapa de código fuente), en Source provider (Proveedor de código fuente), elija Amazon S3.

    7. En Ubicación de Amazon S3, escriba el bucket, como my-storage-bucket y la clave de objeto, como s3-ios-test-1.zip para su archivo .zip.

    8. Elija Siguiente.

  4. En Build (Compilar), cree una etapa de compilación de marcador de posición para su canalización. De este modo puede crear la canalización en el asistente. Después de usar el asistente para crear su canalización de dos etapas, no se necesita más esta etapa de compilación de marcador de posición. Una vez completada la canalización, se elimina esta segunda etapa y se añade la nueva etapa de prueba en el paso 5.

    1. En Build provider (Proveedor de compilación), elija Add Jenkins (Añadir Jenkins). Esta selección de compilación es un marcador de posición. No se utiliza.

    2. En Provider name (Nombre del proveedor), escriba un nombre. El nombre es un marcador de posición. No se utiliza.

    3. En Server URL (URL del servidor), escriba el texto. El texto es un marcador de posición. No se utiliza.

    4. En Project name (Nombre del proyecto), escriba un nombre. El nombre es un marcador de posición. No se utiliza.

    5. Elija Siguiente.

    6. En la página Step 4: Add deploy stage (Paso 4: Añadir etapa de implementación), elija Skip deploy stage (Omitir etapa de implementación) y, a continuación, acepte el mensaje de advertencia eligiendo Skip (Omitir) una vez más.

    7. En Step 5: Review (Paso 5: Revisar), seleccione Create pipeline (Crear canalización). Debe ver un diagrama que muestra las etapas de código fuente y de compilación.

      Consulte la canalización.
  5. Añada una acción de prueba de Device Farm a su canalización del siguiente modo:

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

    2. Elija Edit stage (Editar etapa). Elija Eliminar. Esto elimina la etapa de marcador de posición ahora que ya no la necesita para la creación de canalizaciones.

    3. En la parte inferior del diagrama, seleccione + Add stage (Añadir etapa).

    4. En Stage name (Nombre de la etapa), escriba un nombre para esta, por ejemplo, Test, y, a continuación, elija Add stage (Añadir etapa).

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

    6. En Action name (Nombre de acción), escriba un nombre, por ejemplo DeviceFarmTest.

    7. 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.

    8. 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 SourceArtifact.

      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.

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

    10. 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
    11. En AppType, escriba iOS.

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

      • iOS

      • Android

      • Web

    12. 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 ios-test.ipa.

    13. 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.

      Si utiliza una de las pruebas de Device Farm integradas, escriba el tipo de prueba que ha configurado en el proyecto de Device Farm, por ejemplo BUILTIN_FUZZ. En FuzzEventCount, escriba un tiempo en milisegundos, como, por ejemplo, 6000. En FuzzEventThrottle, escriba un tiempo en milisegundos, como, por ejemplo, 50.

      Si no utiliza una de las pruebas de Device Farm integradas, 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.

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

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

    16. Elija Guardar.

    17. 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.

    18. Para enviar los cambios y comenzar una ejecución de la canalización, elija Release change (Publicar modificación) y, a continuación, Release (Publicar).