【问题标题】:How can I skip a codepipeline stage?如何跳过代码管道阶段?
【发布时间】:2020-12-02 11:03:01
【问题描述】:

我使用 AWS codepipeline 作为 CI/CD 管道工具。我的 yml 文件中有很多阶段。 codepipeline 的 cloudformation 参考是:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html

...
Stages:
  - Name: ...
  Actions: ...

...

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

我尝试了以下通过aws cloudformation deploy --parameter-overrides ... 命令通过参数传递的配置。它可以工作,但如果我更改部署命令中的参数,它会显示No changes to 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"

【问题讨论】:

  • 是cloudformation yaml吗?
  • 是的,它是 cloudformation yaml。

标签: amazon-web-services continuous-integration aws-codepipeline


【解决方案1】:

您可以使用 AWS CloudFormation 模板中的条件跳过整个 AWS CodePipeline 操作或阶段。

例如:

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"
        # ...

【讨论】:

  • 我尝试了你的方法,但得到了错误'null' values are not allowed in templates。我已将我的配置粘贴到问题中。
  • @JoeyYiZhao 你好。我的方法有效。但是由于您没有提供任何真正的代码来工作,所以对我来说没有具体的工作。所以我也提供了非常笼统的答案。
  • 嗨,我知道它为什么会失败。这是关于我的配置问题。但是,我通过aws cloudformation deploy --parameter-overrides 命令行参数传递了条件变量。它第一次起作用。当我更改参数并部署时,它会显示there is no change to deploy。条件似乎不需要更新。
猜你喜欢
  • 1970-01-01
  • 2021-03-18
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
相关资源
最近更新 更多