amazon-web-services - 使用 AWS codebuild 实施多个构建,以及相关的工件
问题描述
我目前正在处理一个将 AWS CodeBuild 用于我们的 CI 工作流程的项目。目前有一个大型构建,它需要相当多的时间,因为它包含一个需要一些时间运行的 e2e 测试套件,有时可能会不稳定,导致整个构建失败并需要重新启动。
我希望我们可以将构建拆分成更小的模块化构建,这些构建可以独立运行(并且还可以向 GitHub 上的相关 PR 提供独立的状态反馈)。
我正在考虑使用 CodePipeline 来实现这一点,但是似乎 CodePipeline 只能配置为针对 master(或指定的分支)运行,而不是基于每个 PR。我们希望我们的测试能够针对 PR 运行,并首先防止错误代码被合并到 master 中。
我在想,是否有可能只使用 codebuild 来实现这一点,多个构建器负责不同的构建任务(例如,linting/unit testing 可能发生在一个构建器中,与编译应用程序和运行 e2e 测试分开)。
我会喜欢这样的东西:
|----------| |---------|
| Compiler | | Linter |
| Builder | | Builder |
|----------| |---------|
| \
| \
|-----------| |----------|
| Unit Test | | E2E Test |
| Builder | | Builder |
|-----------| |----------|
其中每个框代表一个 CodeBuild 构建器/构建规范,而该行代表一个人工制品依赖项。
在这里,“Compiler Builder”和“Linter Builder”在推送到 PR 时启动。当“Compiler Builder”完成时,它将已编译代码的构建工件传输到“Unit Test Builder”,以及用于运行每个测试套件的“e2e Builder”,它们都向 PR 报告独立状态。
看起来 CodePipeline 是处理这类事情的理想工具,只是它不适用于我们团队的兼容工作流。
我不清楚如何为 CodeBuild 设置这样的东西,尽管我看到人们在其他帖子/SO 问题上提到它,你可以使用其他 AWS 服务来编排这种事情(AWS Lambda/ AWS 步骤函数)。我对 AWS 服务并不是特别了解,什么是可能的,什么是不可能的,这就是我在这里问的原因。我只想确认我上面描述的内容是可能的,以及需要使用哪些服务来实现这一点。
我认为我正在努力解决的关键障碍之一是如何使一个 codebuild 构建的输出成为另一个的输入,我已经研究过使用 S3 来存储构建工件,尽管我不确定如何在另一个中使用它build,然后连接到 GitHub,并能够将状态报告回 PR。
解决方案
推荐阅读
- python - PermissionError: [Errno 13] 当我尝试将所有 pdf 文件复制到新文件夹时
- python - 如何用聚合值注释 seaborn barplot
- java - 为什么字节和字符串之间的转换过程中字节数据会发生变化?
- python - 无法序列化从python中的rest api返回的json数组对象
- python-3.x - 使用带有 python3 的子进程模块管道两个命令时遇到问题
- scala - Scala中的协变和逆变
- python - 使用额外的字典字段自定义 Python 记录器会产生带有 KeyError 的外部模块的回溯
- react-native - 使用 Expo 时,闪屏后,闪烁(Flash)白屏
- java - 如何在 JPA 上加入键值表
- tableau-api - 如何在画面上制作额外的过滤器