12

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

4

5 回答 5

14

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

于 2017-11-15T05:24:42.577 回答
5

添加一个答案来解释如何在 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"}]'

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

于 2020-10-20T05:12:57.790 回答
4

CodePipeline 现在还允许您使用在执行时生成的变量来配置管道。在此示例中,您的 CodeCommit 操作将生成一个名为 CommitId 的变量,您可以通过 CodeBuild 操作配置将其传递给 CodeBuild 环境变量。

以下是该功能的概念概述:https ://docs.aws.amazon.com/codepipeline/latest/userguide/reference-variables.html

有关将提交 id 传递到构建操作的示例,您可以访问此处: https ://docs.aws.amazon.com/codepipeline/latest/userguide/actions-variables.html

还值得考虑使用 CodePipeline 执行 id 而不是提交 id 来标记图像,这样可以防止未来使用相同提交的构建覆盖图像。使用 CodePipeline 执行 ID 也显示在上面的示例中。

于 2019-12-18T14:57:48.103 回答
3

这是你要找的吗?

http://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring-source-revisions-view.html#monitoring-source-revisions-view-cli

大多数(如果不是全部)语言 SDK 也内置了这个 API。

于 2017-11-13T15:40:14.967 回答
1

除了@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"}]'

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

于 2021-08-06T14:16:59.750 回答