amazon-web-services - AWS CDK Codepipeline 在 cdk-synth 之前构建 docker
问题描述
我的用例如下:
- Github 存储库 A、B 和 C 有 Lambda 的源代码。A 和 B 是库,C 是使用库 A 和 B 的应用程序。
- GitHub 存储库 X 具有 AWS CDK 源代码
- 每次对 A、B、C 或 X 中的任何一个进行 git 提交时,都需要在 Docker 中重新构建应用程序 C,并将工件(应用程序和编译的库)打包到生产 Docker 中——通常的多阶段 Docker .
- 生产 Docker 需要推送到 ECR
- 由于 X 中的任何更改而导致的任何基础设施更改现在也必须进行 cdk-synthesised 和 cdk-deployed。
- 最后 Lambda 需要使用来自 ECR 的更新图像,我想这会在
cdk-deploy
上面自动发生
我希望通过 CDK 通过自变异 CodePipeline 完成此操作。
我无法弄清楚如何设置这个多存储库 cdk 代码管道的详细信息。有带有属性的新(er)aws_cdk.pipelines
模块。synth
我是否应该使用单个按上述给定顺序依次指定所有构建步骤ShellStep
?AShellStep
只能指定一个input
来源,而我需要全部 4 个(A、B、C 和 X)。
例如(蟒蛇):
aws_cdk.pipelines.CodePipeline(self, 'Pipeline',
...,
synth=ShellStep("<...>",
input=<only one repo allowed to be specified>
Q1)实现上述代码构建和自我变异步骤的正确方法是什么?
Q2)由于cdk synth
其他构建可能会在提交到 GitHub 之前在本地运行,我正在考虑创建一个带有构建环境的 docker 映像,作为本地构建的一部分,我可以在本地构建和测试所有需要的存储库。这将为每个人提供一个编译和工件生成正常工作的环境。然后这个 Docker dev-image 可以被推送到 ECR。在这种情况下,CodePipeline 将只读取 Dockerfile(存在于 X 中),在 docker 中构建 A、B 和 C,然后像往常一样使用工件创建生产 Docker 映像(多阶段 Docker 构建),将其推送到ECR,再次重启dev-docker,这次运行cdk-synth
+cdk-deploy
,将凭据作为环境变量传递给 dev-docker 容器。这种方法会奏效吗?如何获取要传递CodePipeline
给 docker 容器的凭据?
解决方案
推荐阅读
- python - Tkinter mainloop()在关闭窗口后没有退出
- javascript - 我试图在 Electron.js 中单击按钮时打开新窗口,但未捕获 ReferenceError: require is not defined
- c - 我在使用 strcmp 时遇到问题。由于某种原因,它检测到了错误的单词,但仍然继续使用代码
- powershell - 尝试在列表上使用 Import-Clixml 时
,返回值为 System.Object - javascript - 作为有序树的产品选择
- android - 就地修改 MediaStore 的外部图像文件的最佳做法是什么?
- javascript - JavaScript 递归识别最后一个元素
- python - 如何使用组均值填充 df 中的 nan 值?
- swift - 具有可观察对象的类已被用于未初始化
- python - Kivy ImageButton 填满整个屏幕