Amazon web services 如何跳过代码管道阶段?

Amazon web services 如何跳过代码管道阶段?,amazon-web-services,continuous-integration,aws-codepipeline,Amazon Web Services,Continuous Integration,Aws Codepipeline,我使用AWS代码管道作为CI/CD管道工具。在我的yml文件中有许多阶段。codepipeline的cloudformation参考是: 管道中有一个阶段列表,但并非每个分支都需要运行所有阶段。如何根据分支名称跳过其中一些 我尝试了以下配置,该配置由参数通过aws cloudformation deploy--parameter overrides…命令传递。它可以工作,但是如果我在deploy命令中更改参数,它将显示没有要部署的更改。。模板似乎没有更新参数更改 Parameters:

我使用AWS代码管道作为CI/CD管道工具。在我的yml文件中有许多阶段。codepipeline的cloudformation参考是:

管道中有一个阶段列表,但并非每个分支都需要运行所有阶段。如何根据分支名称跳过其中一些

我尝试了以下配置,该配置由参数通过
aws cloudformation deploy--parameter overrides…
命令传递。它可以工作,但是如果我在deploy命令中更改参数,它将显示
没有要部署的更改。
。模板似乎没有更新参数更改

Parameters:
    ShouldRunTest:
       Type: String
       Default: false

Conditions:
    ShouldRunTest: !Equals [!Ref ShouldRunTest, "true"]

...


        - !If
          - ShouldRunTest
          - Name: test
            Actions:
              - Name: Deploy
                ActionTypeId:
                  Category: Deploy
                  Owner: AWS
                  Provider: CloudFormation
                  Version: 1
                InputArtifacts:
                  - Name: SourceOutput
                Configuration:
                  Capabilities: CAPABILITY_NAMED_IAM
                 
                  ActionMode: REPLACE_ON_FAILURE
                  RoleArn: !GetAtt CodePipelineServiceRole.Arn
                  StackName: codeBuild
                RunOrder: 1
          - !Ref "AWS::NoValue"

您可以使用CFN模板中的条件跳过整个CP操作或阶段

例如:

Conditions:

  HaveCodeDeployStage:
    !Not [ !Equals [!Ref CodeDeployAppName, ''] ]  

Resources:

  MyCodePipepline:
    Type: AWS::CodePipeline::Pipeline
    Properties:
      #... 
      Stages: 
        - !If
          - HaveCodeDeployStage
          - Name: DeployStage
            Actions: 
              - ActionTypeId: 
                  Category: Deploy
                  Owner: AWS
                  Provider: CodeDeployToECS
                  Version: 1
                  #....
          - !Ref "AWS::NoValue"
        # ...

是cloudformation yaml吗?是的,是cloudformation yaml。我尝试了您的方法,但得到错误
“null”值在模板中是不允许的。我已将我的配置粘贴到问题中。@Joey Yizhao嗨。我的方法有效。但是,由于您没有提供任何实际的代码来工作,因此对于我来说,没有任何具体的代码可供使用。所以我也提供了非常一般的答案。嗨,我找到了失败的原因。这是关于我的配置问题。但是,我通过
aws cloudformation deploy--parameter overrides
命令行参数传递了条件变量。它第一次起作用。当我更改参数并部署时,它会显示没有要部署的更改。情况似乎没有更新。好的,你的方法有效。这是我的错。我接受了你的回答。谢谢。@Joeyizhao很高兴它成功了:-)谢谢。
Conditions:

  HaveCodeDeployStage:
    !Not [ !Equals [!Ref CodeDeployAppName, ''] ]  

Resources:

  MyCodePipepline:
    Type: AWS::CodePipeline::Pipeline
    Properties:
      #... 
      Stages: 
        - !If
          - HaveCodeDeployStage
          - Name: DeployStage
            Actions: 
              - ActionTypeId: 
                  Category: Deploy
                  Owner: AWS
                  Provider: CodeDeployToECS
                  Version: 1
                  #....
          - !Ref "AWS::NoValue"
        # ...