【问题标题】:CDK pipelines with several application repositories具有多个应用程序存储库的 CDK 管道
【发布时间】:2020-12-23 13:37:20
【问题描述】:

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

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

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

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

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

有没有人可以举例说明如何做到这一点?

【问题讨论】:

    标签: aws-cdk


    【解决方案1】:

    我的团队为我们提供的每种产品/服务使用具有不同 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-12
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      相关资源
      最近更新 更多