你是对的。在这种特殊情况下,CodePipeline 是调用 start-build API 来开始构建的人。CODEBUILD_WEBHOOK_TRIGGER 是 CodeBuild 特定的,只有在 webhook 调用 CodeBuild 时才会设置。
如果您想知道触发管道的 webhook,您可以使用 list-webhooks [1] API 调用和基于管道名称的附加过滤器来获取 webhook 详细信息。
参考:[1] https://docs.aws.amazon.com/cli/latest/reference/codepipeline/list-webhooks.html
编辑1:
我错了 list-webhooks 会为您提供所需的信息。我做了一些测试,它只为您提供了为 Source 操作定义的 webhook 列表。
我能得到的最接近的是在您的 CodeBuild 构建规范中使用“list-pipeline-executions”[2] CLI 调用。
如果您运行此命令:
$ aws codepipeline list-pipeline-executions --pipeline-name <Pipeline_Name> --region us-east-1 --max-items 1
它会给你类似这样的输出:
{
"pipelineExecutionSummaries": [
{
"pipelineExecutionId": "ccdd87a0-41e4-4489-9332-0720dc526b37",
"status": "InProgress",
"startTime": 1573037463.245,
"lastUpdateTime": 1573037463.245,
"sourceRevisions": [
{
"actionName": "Source",
"revisionId": "4d3bcb17e4a71e3d4bf15215954172639716c326",
"revisionSummary": "Merge pull request #3 from shariqmus/readme-edits\n\nUpdate Code.py",
"revisionUrl": "https://github.com/shariqmus/hello-world/commit/4d3bcb17e4a71e3d4bf15215954172639716c326"
}
]
}
],
"NextToken": "eyJuZXh0VG9rZW4iOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ=="
}
'revisionSummary' 包含 PR 详细信息。您可以使用 'jq' [3] 过滤此值,因此构建规范中的命令将类似于:
- 确保您的 CodeBuild 项目的服务角色有权在管道上执行“ListPipelineExecutions”
- 在 Buildspec 'Install' 阶段添加以下内容:
- 在需要获取提交消息的 Buildspec 中添加以下内容:
- COMMIT_MSG=$(aws codepipeline list-pipeline-executions --pipeline-name --max-items 1 | jq -r '.pipelineExecutionSummaries[0].sourceRevisions[0].revisionSummary')
- 回声 $COMMIT_MSG
我希望这个答案有帮助。
参考:
[2] https://docs.aws.amazon.com/cli/latest/reference/codepipeline/list-pipeline-executions.html
[3] https://stedolan.github.io/jq/