boto3 - 如何在完成 Boto3 单元测试之前等待 CodeBuild 项目完成构建?
问题描述
在为 CodeBuild 编写 Python Boto3 单元测试时,是否可以 start_build() 然后 wait() 在评估我的测试是否通过之前完成构建?通常,我只会使用服务员,但据我所知,CodeBuild 没有任何服务员(我做了 client.waiter_names 并得到了一个空数组,而 Boto3 文档没有列出 CodeBuild 客户端的任何服务员)。
我发现了这个(重复的)问题,但答案并没有解决如何实际解决等待问题 - 它只是说如何检查构建的状态。如果我能以某种方式 wait() 直到状态更改为某个值,那将很有用。
解决方案
我最终没有找到一个好的解决方案,所以我只是做了一个循环来轮询状态直到它完成。
client = boto3.client(service_name='codebuild', region_name='us-east-1')
new_build = client.start_build(projectName='fooProject')
buildId = new_build['build']['id']
buildSucceeded = False
counter = 0
while counter < 10: #capped this, so it just fails if it takes too long
time.sleep(5)
counter = counter + 1
theBuild = client.batch_get_builds(ids=[buildId])
buildStatus = theBuild['builds'][0]['buildStatus']
if buildStatus == 'SUCCEEDED':
buildSucceeded = True
break
elif buildStatus == 'FAILED' or buildStatus == 'FAULT' or buildStatus == 'STOPPED' or buildStatus == 'TIMED_OUT':
break
self.assertTrue(buildSucceeded)
推荐阅读
- java - Springboot findBy 列表
休眠@Query - android - 使用导航时如何不刷新列表?
- html - 使用 XPATH 在 div 中查找 div 中的文本
- apache-kafka-streams - 从转换中的数据更新全局存储
- c# - 使用 Vision 框架 NSInvalidArgumentException 的 xamarin iOS 人脸检测
- r - 转置一个df,每行作为R中的一列
- javascript - 根据子字符串选择 ID
- c++ - `cin.clear()` 使输入流处于失败状态
- git - 如何在 git 日志中查询 Co-Authored-By
- php - 将选项值设置为选择文本