在CodePipeline中获取提交ID

Nep*_*ing 7 continuous-integration amazon-web-services continuous-deployment aws-codepipeline aws-codebuild

我使用CodePipelineCodeCommit。按下master分支自动触发构建。在CodePipeline控制台中,可以清楚地看到我正在接收提交ID,但是我需要在构建环境中获取它,以便在构建它时可以将它们作为标签添加到ECS映像中。有没有一种进入构建环境的方法。 这是我要找的身份证

Bar*_*Bar 8

添加一个答案来解释如何在 CloudFormation 中实现此目的,因为我花了一段时间才弄清楚。您需要将您的阶段定义为:

Name: MyStageName
Actions:
    -
        Name: StageName
        InputArtifacts:
            - Name: InputArtifact
        ActionTypeId:
            Category: Build
            Owner: AWS
            Version: '1'
            Provider: CodeBuild
        OutputArtifacts:
            - Name: OutputArtifact
        Configuration:
            ProjectName: !Ref MyBuildProject
            EnvironmentVariables:
                '[{"name":"COMMIT_ID","value":"#{SourceVariables.CommitId}","type":"PLAINTEXT"}]'
Run Code Online (Sandbox Code Playgroud)

在你的行动中你需要有这种语法。请注意,EnvironmentVariablesCodePipeline 阶段的属性与属性不同AWS::CodeBuild::Project。如果您要#{SourceVariables.CommitId}在那里添加为环境变量,它将无法正确解析。


Uns*_*ned 6

您可以使用CODEBUILD_RESOLVED_SOURCE_VERSION环境变量在构建时检索CodePipeline中显示的提交哈希。


Put*_*nik 5

除了@Bar的回答:仅添加EnvironmentVariables是不够的,您还需要设置Namespace

例如:

      pipeBackEnd:
        Type: AWS::CodePipeline::Pipeline
        Properties:
          ...
          Stages:
            - Name: GitSource
              Actions:
                - Name: CodeSource
                  ActionTypeId:
                    Category: Source
                    ...
                  Configuration: (...)
                  Namespace: SourceVariables  # <<< === HERE, in Source
            - Name: Deploy
              Actions:
                - Name: BackEnd-Deploy
                  ActionTypeId:
                    Category: Build
                    Provider: CodeBuild (...)
                  Configuration:
                    ProjectName: !Ref CodeBuildBackEnd
                    EnvironmentVariables: '[{"name":"BranchName","value":"#{SourceVariables.BranchName}","type":"PLAINTEXT"},{"name":"CommitMessage","value":"#{SourceVariables.CommitMessage}","type":"PLAINTEXT"}]'

Run Code Online (Sandbox Code Playgroud)

另外,它可能有用:CodePipeline 变量列表