AWS CodePipeline 通过 CloudFormation 没有注册 Github Webhook

10

我正在尝试设置AWS CodePipeline并使用CloudFormation将GitHub作为源。 GitHub存储库由组织拥有,我具有管理员访问权限。

我已成功创建了Webhook,并通过CodePipeline UI成功创建了整个服务。但是,当我尝试通过CloudFormation文档执行同样的操作时,它返回错误:

无法在GitHub上注册Webhook。错误原因:未找到 [StatusCode: 404,Body:{"message":"Not Found","documentation_url":"https://developer.github.com/v3/repos/hooks/#create-a-hook"}]

我两次使用了相同的凭据(在CloudFormation中使用OAuth令牌,在CodePipeline UI中使用实际登录弹出窗口),但是当我通过CloudFormation进行操作时,失败了。

我怀疑我的CloudFormation文档有问题。但是,当我创建自己的存储库时,CloudFormation可以成功创建Webhook并创建完整的CodePipeline服务。

以下是我进行测试以了解何处出错的摘要:

  1. CodePipeline UI。 组织GitHub Repo。 要求登录GitHub。 使用我的管理员凭据登录=> 成功创建Webhook和服务。
  2. CloudFormation。 组织GitHub Repo。 使用启用了“repo”和“admin:repo_hook”的管理员凭据的OAuth令牌。=> 出现上述错误。
  3. CloudFormation。 个人GitHub Repo。 使用启用了“repo”和“admin:repo_hook”的管理员凭据的OAuth令牌=> 成功创建Webhook和服务。

以下是我创建Webhook的CloudFormation文档部分:

  AppPipelineWebhook:
    Type: 'AWS::CodePipeline::Webhook'
    Properties:
      Authentication: GITHUB_HMAC
      AuthenticationConfiguration:
        SecretToken: !Ref GitHubSecret
      Filters:
        - JsonPath: $.ref
          MatchEquals: 'refs/heads/{Branch}'
      TargetPipeline: !Ref cfSSMAutomationDev
      TargetAction: SourceAction
      Name: AppPipelineWebhook
      TargetPipelineVersion: !GetAtt cfSSMAutomationDev.Version
      RegisterWithThirdParty: true

所以我不确定出了什么问题。我怀疑OAuth令牌需要更高的权限。有人有类似的经验吗?任何建议都将不胜感激。

1个回答

13

就算我也遇到了同样的问题,但是通过查看 CodePipeline 的界面配置中的代码仓库,我解决了它。

{
  "Configuration": {
    "Owner": "myUserName",
    "Repo": "orgname/repository-name",
  }
}

所以CloudFormation一直在检查不存在的仓库myUserName/orgname/repository-name。

按照以下解决方案后,问题得到了解决:

{
  "Configuration": {
    "Owner": "orgname",
    "Repo": "repository-name",
  }
}

私有仓库 -> ownerName:您的用户名
组织仓库 -> ownerName:组织名


你使用了你的“个人”访问令牌吗?还是必须使用组织的 Github 所有者的个人访问令牌? - programing_is_hard
1
我使用了我的“个人访问令牌”,因为我拥有管理员权限。 - Greeshma
我们可以使用个人访问令牌来获得特定仓库的管理员权限吗? - Deeksha gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接