amazon-web-services - 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 时的快照:
解决方案
AWS 服务团队的回复:
您的理解是正确的,在 Pipeline Stage 创建期间无法创建 DeviceFarm 项目。Device Farm 项目需要从 DeviceFarm 控制台创建并在管道中引用。
但是,我确认 DeviceFarm 项目的创建不需要 .apk 文件。我通过创建一个 Device Farm 项目和一个设备池在我的帐户中复制并验证了该场景,并为 .apk 评估创建了一个管道。
在我的复制中,我创建了一个 CodeCommit 存储库并在其中添加了一个现成的 .apk 文件。您可以选择将代码保留在 CodeCommit/Git 中,并让 CodeBuild 为您将包编译成 .apk 文件,如您共享的指南中所述。[1]
因此,以下是我为设置所遵循的步骤:
转到 DeviceFarm 控制台并创建一个项目 [2]。在文档 [2] 中,您可以选择跳过 Step4 并选择稍后配置项目。
创建项目后,在项目内部导航并选择“项目设置”。
导航到“设备池”选项卡。
请创建一个新的设备池并选择您想要运行测试的设备 [3]。在我的复制中,我使用了搭载 Android 9 的 Pixel 3。
要在管道中使用 DeviceFarm 项目和设备池,您需要有关实施的详细信息,例如项目 ID 和设备池 ARN。要获取这些详细信息,请为 us-west-2 [4] 配置 AWS CLI,因为 Device Farm 仅在俄勒冈州可用。
将 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。
获得项目 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
请导航到 CodePipeline 控制台并创建一个管道。对于 Source 阶段,我选择了我的 .apk 文件所在的 CodeCommit 存储库和分支。
我跳过了构建阶段,在部署阶段,我选择了 S3 作为部署提供程序。
创建管道后,请编辑管道并删除 S3 部署操作。
您可以添加一个动作组/动作;并在 Action Provider 中选择“AWS Device Farm”。
请保持 Region 与 Pipeline 相同。
在输入工件中,选择“源工件”。如果 CodeBuild 正在生成 .apk 文件,那么它应该是“Build Artifact”。这取决于您在管道中的工件名称设置。
现在,请输入我们之前保留的 Device Farm 项目的项目 ID:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE
在“DevicePoolArn”中,请输入我们在第 7 步中获取的设备池的 ARN。
在“AppType”中,由于我在 Pixel 设备上进行测试,因此我使用了值“Android”。如果该应用程序适用于 Apple 设备,您可以选择使用“iOS”。
在“应用程序 - 可选”字段中,我使用了 .apk 文件的名称,在我的例子中是“SimpleCalculator.apk”。如果您使用 CodeBuild,您可以在 Buildspec 文件的 [artifacts -> files] 部分设置 APK 文件的名称。
对于 'TestType',我使用了值 'BUILTIN_FUZZ' 。
有关有效值的列表,您可以查看本文档的“类型”部分:https ://docs.aws.amazon.com/devicefarm/latest/APIReference/API_Suite.html
- 保存动作和管道配置,你就完成了!:)
您的管道将提供/创建 APK,Device Farm 将动态摄取它们并基于它们生成报告。您可以选择使用更精细的设置配置您的 Device Farm 项目和/或您可以根据您的要求配置您的部署操作。
参考:
[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
推荐阅读
- r - 从结果与字符向量匹配的不同数据帧中调用信息
- angular - toHaveBeenCalled() 返回未定义
- sum - 乳胶:为什么 \sum 符号会消失?
- r - 与 is.unsorted() 函数混淆
- graphics - 如果滚动为零,如何用四元数表示刚体在空间中的方向
- apache-spark - Spark DataFrame 重新分区和 Parquet 分区
- python - 注册商标符号导致“字符串'xyz'后的未闭合引号”错误
- c# - 为什么我的 ASPxGridView 显示的是空白行而不是我提供的值?
- css - 显示:flex 中断和修复多个 Hugo 页面的对齐方式
- security - 卡夫卡安全中最好的身份验证机制是什么?