AWS 无法 "create new DeviceFarm project" 用于代码管道

AWS cannot "create new DeviceFarm project" for code pipeline

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

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

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

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

AWS服务团队回复:

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

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

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

因此,这是我在设置时遵循的步骤:

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

  2. 创建项目后,在项目中导航并 select 'Project settings'。

  3. 导航到 'Device Pools' 选项卡。

  4. 请创建新的设备池和 select 设备 [3],您将要 运行 进行测试。在我的复制中,我使用了 Android 9 的 Pixel 3。

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

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

    aws devicefarm 列表项目

这应该是 return 可用项目的列表。请使用项目名称找到所需的项目并记下 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-12345EXAMPLE

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

  1. 请导航到 CodePipeline 控制台并创建管道。对于源代码阶段,我 select 编辑了我的 .apk 文件所在的 CodeCommit 存储库和分支。

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

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

  4. 您可以添加一个动作组/动作;并在 Action Provider Select 'AWS Device Farm' 中。

  5. 请保持Region与Pipeline相同。

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

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

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

  9. 在 'AppType' 中,因为我是在 Pixel 设备上测试的,所以我使用了值 'Android'。如果应用程序适用于 Apple 设备,您可以选择使用 'iOS'。

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

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

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

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

您的管道将 provide/create APK,Device Farm 将动态提取它们并根据它们生成报告。您可以选择使用更精细的设置配置您的 Device Farm 项目 and/or 您可以根据您的要求配置部署操作。

参考文献:


[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-create-project-console

[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