AWS Codepipeline Github Webhook не регистрируется из-за облачной информации - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь установить кодовую линию AWS и использовать github в качестве источника, используя облачную информацию. Хранилище github принадлежит организации, и у меня есть к нему доступ администратора.

Мне удалось создать webhook и успешно создать весь сервис через интерфейс codepipeline. Но когда я пытаюсь сделать то же самое через 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"}]

Я использовал одни и те же учетные данные оба раза (токен OAuth в облачной информации и фактические всплывающие окна входа в пользовательский интерфейс codepipeline), но когда я сделал это через Cloudformation, это не удалось.

Я подозревал, что проблема связана с моим документом облачной информации. Но когда я создаю свой собственный репозиторий, cloudformation успешно создает webhook и создает полный сервис codepipeline.

Ниже приведена сводка тестов, которые я провел, чтобы понять, где это пошло не так.

  1. Кодовый интерфейс UI. Организация Github Repo. Он попросил войти в GitHub. Войдите в систему с помощью моей учетной записи администратора => успешно созданный веб-крючок и службы.
  2. CloudFormation. Организация Github Repo. Использовал маркер OAuth от учетных данных администратора с включенными repo и admin:repo_hook. => Ошибка выдачи выше
  3. CloudFormation. Персональный Github Repo. Использован токен Oauth из учетных данных администратора с включенными repo и admin:repo_hook => успешно созданный веб-крючок и службы

Ниже приведена часть документа облачной информации, где я создаю Webhook.

  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 Ответ

5 голосов
/ 23 мая 2019

Даже когда я сталкивался с той же проблемой, увидев репозиторий конфигурации пользовательского интерфейса codepipeline, я использовал

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

, поэтому облачная информация проверяла хранилище myUserName / orgname / repository-name, которого не было.

Это было решено после следующего решения:

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

Личное РЕПО -> ownerName: YourUserName организация репо -> имя владельца: имя организации

...