9

我正在尝试使用 cloudformation 设置 AWS 代码管道并使用 github 作为源。github 存储库归一个组织所有,我拥有对其的管理员访问权限。

我能够创建 webhook 并通过 codepipeline UI 成功创建整个服务。但是当我试图通过 Cloudformation Document 做同样的事情时,它返回错误

Webhook could not be registered with GitHub. Error cause: Not found [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 并创建了完整的代码管道服务。

以下是我为了解哪里出了问题所做的测试摘要。

  1. 代码管道用户界面。组织 Github 回购。它要求登录github。使用我的管理员凭据登录 => 成功创建了 webhook 和服务。
  2. 云形成。组织 Github 回购。使用管理员凭据中的 OAuth 令牌repoadmin:repo_hook启用。=>上面给出了错误
  3. 云形成。个人 Github 回购。使用管理员凭据中的 Oauth 令牌repoadmin:repo_hook启用 => 成功创建了 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 令牌需要更多权限。有没有人有类似的经验?非常感谢任何建议

4

1 回答 1

13

通过查看我使用的 codepipeline UI 配置的存储库,即使我也面临同样的问题

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

因此 cloudformation 正在检查不存在的存储库 myUserName/orgname/repository-name。

遵循以下解决方案后得到解决:

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

私人仓库 -> 所有者名称:YourUserName
组织仓库-> 所有者名称:组织名称

于 2019-05-23T13:20:37.973 回答