具有多个应用程序存储库的 CDK 管道

CDK pipelines with several application repositories

我已经使用今年夏天引入的 CDK Pipelines 构造为我的应用程序成功设置了一个管道。该应用程序是使用 CodeBuild 编译的微服务 (UserService),并创建 ECS Fargate 服务。该应用程序的源代码位于 GitHub 存储库中。 GitHub 存储库中存储的项目是这样的:

.
+-- cdk
+-- Dockerfile_OrderService
+-- Dockerfile_ProductService
+-- Dockerfile_UserService
+-- OrderService
+-- ProductService
+-- UserService

OrderService、ProductService和UserService是包含需要使用CodeBuild编译的微服务源代码的文件夹。到目前为止,我只实施了 UserService,而且效果很好。当我从 UserService 文件夹推送更改时,管道被触发,源代码使用 CodeBuild 构建,服务部署到 ECS Fargate。

当我为其他两个服务设置管道时,来自任何服务文件夹的推送都会触发所有三个服务的 CodePipeline。我不想这样,我希望触发特定服务的管道,而不是其他两个,但我不确定该怎么做。

我在考虑每个服务都有自己的存储库,但我还需要存在 cdk 下的基础结构代码。

有没有人有如何执行此操作的示例?

我的团队为我们提供的每个 product/service 使用带有不同 cdk 管道的 monorepo。当我们推送到开发分支时,它确实会触发每个管道,但是如果 'ProductService' 或 'OrderService' 没有变化,那么从技术上讲,我认为让它更新所有这些都没有坏处。

但如果您确实需要单独的触发器,则必须使用单独的分支来触发每个微服务。您可以为 'GitHubSourceActionProps.Branch' 指定一个分支。例如,'UserService' 的管道构造可能如下所示:(C#)

        var pipeline = new Amazon.CDK.Pipelines.CdkPipeline(this, "My-Cdk-Pipeline", new CdkPipelineProps()
        {
            SourceAction = new GitHubSourceAction(new GitHubSourceActionProps()
            {
                ActionName = "GitHubSourceAction",
                Branch = user-service,
                Repo = "my-cool-repo",
                Trigger = GitHubTrigger.WEBHOOK,
            }),                                                                      
        };

aws cdk api reference githubsourceactionprops