本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:创建用于测试你的 iOS 应用的管道 AWS Device Farm
您可以使用 AWS CodePipeline 来轻松配置持续集成流程,每次源存储桶更改时,都会在该流程中测试您的应用程序。本教程介绍如何创建和配置管道以测试从 S3 存储桶中构建的 iOS 应用程序。该管道通过 Amazon CloudWatch Events 检测已保存更改的到来,然后使用 De vice Farm 来测试构建的应用程序。
重要
作为创建管道的一部分,客户提供的 S3 工件存储桶将 CodePipeline 用于项目。(这与用于 S3 源操作的存储桶不同。) 如果 S3 工件存储桶与您的管道账户位于不同的账户中,请确保 S3 工件存储桶归其所有 AWS 账户 ,该存储桶是安全且可靠的。
重要
在此过程中,您在管道中添加的许多操作都涉及在创建管道之前需要创建的 AWS 资源。 AWS 源操作的资源必须始终在您创建管道的同一 AWS 区域创建。例如,如果您在美国东部(俄亥俄州)地区创建管道,则您的 CodeCommit 存储库必须位于美国东部(俄亥俄州)区域。
您可以在创建管道时添加跨区域操作。 AWS 跨区域操作的资源必须位于您计划执行操作的同一 AWS 区域。有关更多信息,请参阅 在中添加跨区域操作 CodePipeline。
您可以使用现有的 iOS 应用程序或使用示例 iOS 应用程序进行此测试。
注意
开始之前
-
登录 AWS Device Farm 控制台并选择 “创建新项目”。
-
选择您的项目。在浏览器中,URL复制新项目的。URL包含项目 ID。
-
复制并保留此项目 ID。您可以在中创建管道时使用它 CodePipeline。
以下是一个URL项目的示例。要提取项目 ID,请复制
projects/
之后的值。在此示例中,项目 ID 为eec4905f-98f8-40aa-9afc-4c1cfexample
。https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
配置 CodePipeline 为使用您的 Device Farm 测试(Amazon S3 示例)
-
创建或使用已启用版本控制的 S3 存储桶。按照步骤 1:为您的应用程序创建 S3 源存储桶中的说明创建 S3 存储桶。
-
在桶的 Amazon S3 控制台中,选择上传,然后按照说明上传 .zip 文件。
您的示例应用程序必须打包在 .zip 文件中。
-
要创建管道并添加一个源阶段,请执行以下操作:
登录 AWS Management Console 并打开 CodePipeline 控制台,网址为https://console.aws.amazon.com/codepipeline/
。 -
选择 Create pipeline(创建管道)。在步骤 1:选择管道设置页面上,在管道名称中,输入管道的名称。
-
在管道类型中,选择 V2。有关更多信息,请参阅 管道类型。选择下一步。
-
在服务角色中,将新建服务角色保持选中状态,并将角色名称保持不变。您还可以选择使用现有服务角色(如果已有)。
注意
如果您使用在 2018 年 7 月之前创建的 CodePipeline 服务角色,则必须为 Device Farm 添加权限。为此,请打开IAM控制台,找到该角色,然后将以下权限添加到该角色的策略中。有关更多信息,请参阅 向 CodePipeline 服务角色添加权限。
{ "Effect": "Allow", "Action": [ "devicefarm:ListProjects", "devicefarm:ListDevicePools", "devicefarm:GetRun", "devicefarm:GetUpload", "devicefarm:CreateUpload", "devicefarm:ScheduleRun" ], "Resource": "*" }
-
将高级设置中的各项设置保留为默认值,然后选择下一步。
-
在步骤 2:添加源阶段页面上,在源提供程序 中,选择 Amazon S3。
-
在 Amazon S3 位置中,输入 .zip 文件的桶(例如
my-storage-bucket
)和对象键(例如s3-ios-test-1.zip
)。 -
选择下一步。
-
在构建中,为管道创建一个占位符构建阶段。这样,可以在向导中创建管道。在使用向导创建两阶段管道后,将不再需要此占位符生成阶段。完成该管道后,将在步骤 5 中删除第二个阶段并添加新的测试阶段。
-
在构建提供程序中,选择添加 Jenkins。此生成选择是一个占位符。不会使用。
-
在提供商名称中输入名称。该名称是一个占位符。不会使用。
-
在服务器中URL,输入文本。该文本是一个占位符。不会使用。
-
在项目名称中输入名称。该名称是一个占位符。不会使用。
-
选择下一步。
-
在步骤 4:添加部署阶段页面上,选择跳过部署阶段,并通过再次选择跳过接受警告消息。
-
在步骤 5:审核中,选择创建管道。您应看到一个显示源和构建阶段的示意图。
-
-
将 Device Farm 测试操作添加到管道,如下所述:
-
在右上角,选择编辑。
-
选择编辑阶段。选择删除。此操作将删除不再需要用于管道创建的占位符阶段。
-
在示意图底部,选择 + 添加阶段。
-
在“阶段名称”中,输入阶段名称,例如“测试”,然后选择添加阶段。
-
选择 + 添加操作组。
-
在操作名称中,输入一个名称,例如 DeviceFarmTest。
-
在操作提供程序中,选择 AWS Device Farm。允许区域默认为管道区域。
-
在输入构件中,选择与测试阶段之前的那个阶段的输出构件相匹配的输入构件,例如
SourceArtifact
。在 AWS CodePipeline 控制台中,将鼠标悬停在管道图中的信息图标上,可以找到每个阶段的输出工件的名称。如果您的管道直接从 S ourc e 阶段测试您的应用程序,请选择SourceArtifact。如果管道包含 “构建” 阶段,请选择BuildArtifact。
-
在中 ProjectId,选择您的 Device Farm 项目 ID。使用本教程开头的步骤来检索您的项目 ID。
-
在中 DevicePoolArn,ARN输入设备池的。要获取项目的可用设备池ARNs,包括顶级设备ARN的, AWS CLI请使用输入以下命令:
aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:
account_ID
:project:project_ID
-
在中 AppType,输入 iOS。
以下是的有效值列表 AppType:
-
iOS
-
Android
-
Web
-
-
在 App 中,输入已编译的应用程序包的路径。该路径相对于测试阶段的输入构件的根。通常,此路径类似于
ios-test.ipa
。 -
在中 TestType,输入您的测试类型,然后在测试中输入测试定义文件的路径。路径相对于测试的输入项目的根。
如果您使用的是内置的 Device Farm 测试之一,请输入在 Device Farm 项目中配置的测试类型,例如 BUILTIN _ FUZZ。在中 FuzzEventCount,输入以毫秒为单位的时间,例如 6000。在中 FuzzEventThrottle,输入以毫秒为单位的时间,例如 50。
如果没有使用其中一个 Device Farm 内置测试,请选择测试类型,然后在测试中输入测试定义文件的路径。路径相对于测试的输入项目的根。
以下是的有效值列表 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_用户界面
注意
不支持自定义环境节点。
-
-
在其余字段中,提供适合测试和应用程序类型的配置。
-
(可选)在高级中,为测试运行提供配置信息。
-
选择保存。
-
在所编辑的阶段上,选择完成。在 AWS CodePipeline 窗格中,选择保存,然后选择警告消息上的保存。
-
要提交所做的更改并开始管道执行,请选择发布更改,然后选择发布。
-