背景:
我正计划创建一个在初始源代码阶段具有多个源代码操作的代码管道。每个源操作都是一个GitHub repo,它将拥有自己的AWS CodePipeline webhook。在管道的下一个阶段,我希望有一个invoke操作,它将获取触发管道运行的管道执行的webhook,并将下游构建阶段的输入工件设置为与触发的webhoot关联的源操作。例如,如果repo A的webhook导致了管道执行#1,那么invoke操作将以某种方式识别repo A和webhook是触发器,然后将repo A输出工件传递到下游构建阶段。
问题:
我还没有找到一个解决方案来获取触发管道运行的Codepipeline webhook。查看boto3 Codepipeline文档,我得到的最接近的是list_webhooks
,它标识了webhook与哪个管道相关,但没有涉及该webhook是否触发了Codepipelines执行ID 123。
trigger
属性,其中包含有关如何触发执行的信息。对于一个webhook,它看起来像这样:
"trigger": {
"triggerType": "Webhook",
"triggerDetail": "arn:aws:codepipeline:<region>:<account-id>:webhook:<webhook-id>"
}
如果您的管道可能是并发运行的,请确保首先获得当前执行ID,这样就不会混淆。您可以按照这里的建议在CodeBuild中使用一行代码来实现这一点。