You need to enable JavaScript to run this app. 如何配置AWS::CodePipeline::Pipeline实现多分支推送自动触发流水线
优惠活动
大模型
产品
解决方案
定价
更多

如何配置AWS::CodePipeline::Pipeline实现多分支推送自动触发流水线

需求实现结论

该需求可实现,无需新增CodePipeline资源,仅需要调整现有CloudFormation模板的两类配置即可。

调整步骤

1. 调整流水线Source阶段配置

原生CodeCommit类型的源动作单实例仅支持指定单个分支,所以需要在Source阶段新增一个针对develop分支的源动作,两个分支的源动作并行配置,任意分支推送更新都会触发流水线启动:

CodePipeline:
    Type: 'AWS::CodePipeline::Pipeline'
    Properties:
      Name: !Sub '${Constructor}-${ApplicationID}-codepipeline'
      ArtifactStore:
        Location: !Ref CodePipelineS3BucketName
        Type: S3
      RestartExecutionOnUpdate: true
      RoleArn: !Sub 'arn:aws:iam::${AWS::AccountId}:role/${CodePipelineRoleName}'
      Stages:
        - Name: Source
          Actions:
            # 原有master分支源配置,调整输出构件名做区分
            - Name: Source-Master
              ActionTypeId:
                Category: Source
                Owner: AWS
                Provider: CodeCommit
                Version: 1
              RunOrder: 1
              OutputArtifacts:
                - Name: SourceArtifact-Master
              Configuration:
                BranchName: master
                PollForSourceChanges: false
                RepositoryName: !GetAtt 
                  - CodeCommitRepo
                  - Name
            # 新增develop分支源配置
            - Name: Source-Develop
              ActionTypeId:
                Category: Source
                Owner: AWS
                Provider: CodeCommit
                Version: 1
              RunOrder: 1
              OutputArtifacts:
                - Name: SourceArtifact-Develop
              Configuration:
                BranchName: develop
                PollForSourceChanges: false
                RepositoryName: !GetAtt 
                  - CodeCommitRepo
                  - Name
        # 后续部署阶段如果两个分支构建逻辑完全一致,可任选一个源构件作为输入即可
        - Name: Deploy-Dev
          Actions:
            - Name: Deploy-Dev
              ActionTypeId:
                Category: Build
                Owner: AWS
                Provider: CodeBuild
                Version: 1
              RunOrder: 2
              InputArtifacts:
                # 此处任选一个源构件即可,触发时对应分支的构件会自动注入
                - Name: SourceArtifact-Master
              OutputArtifacts:
                - Name: DeployArtifactDev
              Configuration:
                ProjectName: !Ref CodeDeployDev
        - Name: Deploy-Int
          Actions:
            - Name: IntPromotionApproval
              ActionTypeId:
                Category: Approval
                Owner: AWS
                Provider: Manual
                Version: 1
              RunOrder: 3
            - Name: Deploy-Int
              ActionTypeId:
                Category: Build
                Owner: AWS
                Provider: CodeBuild
                Version: 1
              RunOrder: 31
              InputArtifacts:
                - Name: SourceArtifact-Master
              OutputArtifacts:
                - Name: DeployArtifactInt
              Configuration:
                ProjectName: !Ref CodeDeployInt

2. 调整EventBridge触发规则

你当前配置中PollForSourceChanges设为false,使用EventBridge事件触发流水线,默认规则仅匹配单个分支的推送事件,需要新增或调整规则的事件匹配逻辑,同时覆盖master和develop分支:

# 新增EventBridge规则资源,替换原有单分支触发规则
CodePipelineMultiBranchTrigger:
  Type: AWS::Events::Rule
  Properties:
    Description: Trigger CodePipeline on master/develop branch push
    EventPattern:
      source:
        - aws.codecommit
      detail-type:
        - CodeCommit Repository State Change
      resources:
        - !GetAtt CodeCommitRepo.Arn
      detail:
        event:
          - referenceCreated
          - referenceUpdated
        referenceType:
          - branch
        referenceName:
          - master
          - develop
    Targets:
      - Arn: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${CodePipeline}
        RoleArn: !Sub 'arn:aws:iam::${AWS::AccountId}:role/${CodePipelineTriggerRoleName}'
        Id: codepipeline-trigger-target

可选优化

如果需要针对两个分支走不同的部署逻辑,可以在CodeBuild项目中通过内置环境变量CODEBUILD_SOURCE_VERSION获取触发分支名,做分支判断逻辑即可。

内容的提问来源于stack exchange,提问作者valerio auricchio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 04:54:03