【发布时间】:2019-04-22 02:15:02
【问题描述】:
我在使用 AWS CloudWatch Events 时遇到了一些问题。
我正在创建一个 CodePipeline CI 管道,其中有一个 CodeCommit 存储库作为源,一个 CodeBuild 项目作为构建/测试阶段(然后,它部署到 Lambda,但问题不存在)。
我们有多个项目,我们将推动多个其他项目。因此,我创建了一个脚本来管理 AWS CI 内容(即创建一个管道、一个 CodeBuild 项目……以及一个与管道链接的 CloudWatch Events 规则)。
我第一次推送我的代码时,它可以工作。但是,该过程停止被 CodeCommit 上的推送触发。
我找到了一个解决方案(但不是我想要的那个):我只需要修改管道,修改阶段(源),不触及任何东西,并保存空修改:它可以工作(在保存之前,它会询问创建与此管道关联的 CloudWatch Events 规则的授权)。
有人遇到过这个问题吗?你做了什么绕过它? 我真的很想制作一个 100% 自动化的 CI,我不想每次我的团队创建新存储库或在现有存储库上推送新分支时都去 AWS 控制台。
编辑:
这是我的 CloudWatch Events 规则的 JSON:
{
"Name": "company-ci_codepipeline_project-stage",
"EventPattern": "cf. second JSON",
"State": "ENABLED",
"Arn": "arn:aws:events:region:xxx:rule/company-ci_codepipeline_project-stage",
"Description": "CloudWatch Events rule to automatically trigger the needed pipeline from every push to project repository, on the stage branch on CodeCommit."
}
这是EventPattern JSON:
{
"source": [
"aws.codecommit"
],
"detail-type": [
"CodeCommit repository state change"
],
"resources": [
"arn:aws:codecommit:region:xxx:project"
],
"detail": {
"event": [
"referenceCreated",
"referenceUpdated"
],
"referenceType": [
"branch"
],
"referenceName": [
"stage"
]
}
}
【问题讨论】:
-
您的 CloudWatch 事件规则是什么?您是否看到规则的 CloudWatch 指标显示您推送时触发的规则?我正在尝试找出问题出在规则还是管道上。
-
@TimB,我的 CloudWatch Events 规则有一个带有 CodeCommit 源的模板,以及每次 与名为 dev 的 branch 匹配的详细信息>created 或 updated(使用良好的 JSON 格式)。我看不到我的规则的任何指标!
-
你能发布规则的实际 JSON 吗?
-
@TimB,我用所需的 JSON 更新了我的帖子
标签: amazon-web-services continuous-integration amazon-cloudwatch aws-codepipeline