首页 > 解决方案 > AWS 无法为代码管道“创建新的 DeviceFarm 项目”

问题描述

我正在按照说明创建基于 Android 的 devicefarm 测试管道。

https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-codebuild-devicefarm.html

但是,AWS 似乎对控制台进行了很多更改,并且无法动态创建新的 devicefarm 项目(在管道配置中)。然后我切换到在管道之外创建一个 devicefarm 项目,但我仍然找不到将管道与 devicefarm 连接的方法。我什至找不到 devicefarm 项目 ID(只有“arn”!)。此外,“AppType”和“TestType”只是文本输入,而不是多选菜单。

这是我尝试在代码管道中添加 devicefarm 时的快照:

在此处输入图像描述

标签: amazon-web-servicesaws-codepipelineaws-device-farm

解决方案


AWS 服务团队的回复:

您的理解是正确的,在 Pipeline Stage 创建期间无法创建 DeviceFarm 项目。Device Farm 项目需要从 DeviceFarm 控制台创建并在管道中引用。

但是,我确认 DeviceFarm 项目的创建不需要 .apk 文件。我通过创建一个 Device Farm 项目和一个设备池在我的帐户中复制并验证了该场景,并为 .apk 评估创建了一个管道。

在我的复制中,我创建了一个 CodeCommit 存储库并在其中添加了一个现成的 .apk 文件。您可以选择将代码保留在 CodeCommit/Git 中,并让 CodeBuild 为您将包编译成 .apk 文件,如您共享的指南中所述。[1]

因此,以下是我为设置所遵循的步骤:

  1. 转到 DeviceFarm 控制台并创建一个项目 [2]。在文档 [2] 中,您可以选择跳过 Step4 并选择稍后配置项目。

  2. 创建项目后,在项目内部导航并选择“项目设置”。

  3. 导航到“设备池”选项卡。

  4. 请创建一个新的设备池并选择您想要运行测试的设备 [3]。在我的复制中,我使用了搭载 Android 9 的 Pixel 3。

  5. 要在管道中使用 DeviceFarm 项目和设备池,您需要有关实施的详细信息,例如项目 ID 和设备池 ARN。要获取这些详细信息,请为 us-west-2 [4] 配置 AWS CLI,因为 Device Farm 仅在俄勒冈州可用。

  6. 将 AWS CLI 配置为在 us-west-2 中运行后,请运行命令 [5]:

    aws devicefarm 列表项目

这应该返回可用项目的列表。请使用项目名称找到所需的项目并记下 ARN。

在此示例中 ARN:arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE 这是项目 ID:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE

我们在设置管道时需要项目 ID。

  1. 获得项目 ARN 后,请运行命令 [6]:

    aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345示例

这将为您提供设备池的列表。请从列表中识别设备池并记下它的 ARN。示例:arn:aws:devicefarm:us-west-2:123456789101:devicepool:1ab2c7c3-741e-4df8-af6d-85d3ca1d1234/06d26e98-3b87-1234-9cb3-1234abcde

  1. 请导航到 CodePipeline 控制台并创建一个管道。对于 Source 阶段,我选择了我的 .apk 文件所在的 CodeCommit 存储库和分支。

  2. 我跳过了构建阶段,在部署阶段,我选择了 S3 作为部署提供程序。

  3. 创建管道后,请编辑管道并删除 S3 部署操作。

  4. 您可以添加一个动作组/动作;并在 Action Provider 中选择“AWS Device Farm”。

  5. 请保持 Region 与 Pipeline 相同。

  6. 在输入工件中,选择“源工件”。如果 CodeBuild 正在生成 .apk 文件,那么它应该是“Build Artifact”。这取决于您在管道中的工件名称设置。

  7. 现在,请输入我们之前保留的 Device Farm 项目的项目 ID:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE

  8. 在“DevicePoolArn”中,请输入我们在第 7 步中获取的设备池的 ARN。

  9. 在“AppType”中,由于我在 Pixel 设备上进行测试,因此我使用了值“Android”。如果该应用程序适用于 Apple 设备,您可以选择使用“iOS”。

  10. 在“应用程序 - 可选”字段中,我使用了 .apk 文件的名称,在我的例子中是“SimpleCalculator.apk”。如果您使用 CodeBuild,您可以在 Buildspec 文件的 [artifacts -> files] 部分设置 APK 文件的名称。

  11. 对于 'TestType',我使用了值 'BUILTIN_FUZZ' 。

有关有效值的列表,您可以查看本文档的“类型”部分:https ://docs.aws.amazon.com/devicefarm/latest/APIReference/API_Suite.html

  1. 保存动作和管道配置,你就完成了!:)

您的管道将提供/创建 APK,Device Farm 将动态摄取它们并基于它们生成报告。您可以选择使用更精细的设置配置您的 Device Farm 项目和/或您可以根据您的要求配置您的部署操作。

参考:


[1] https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-codebuild-devicefarm.html#codepipeline-configure-tests

[2] 在 AWS Device Farm 中创建项目 - 创建项目(控制台) - https://docs.aws.amazon.com/devicefarm/latest/developerguide/how-to-create-project.html#how-to-创建项目控制台

[3] 在 AWS Device Farm 中创建设备池 - https://docs.aws.amazon.com/devicefarm/latest/developerguide/how-to-create-device-pool.html

[4] 配置 AWS CLI - 快速配置 AWS CLI - https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration

[5] https://docs.aws.amazon.com/cli/latest/reference/devicefarm/list-projects.html

[6] https://docs.aws.amazon.com/cli/latest/reference/devicefarm/list-device-pools.html


推荐阅读