AWS Веб-перехватчик CodePipeline GitHub не может быть зарегистрирован в GitHub, если репозиторий является репозиторием организации. - PullRequest
1 голос
/ 18 июня 2020

Когда я настраиваю ловушку с помощью консоли, она работает, но когда я пытаюсь сделать это с помощью облачной информации, она никогда не работает. Это даже не работает, если я использую версию AWS CLI:

aws codepipeline register-webhook-with-third-party --webhook-name AppPipelineWebhook-aOnbonyFrNZu

Вот как выглядит мой веб-перехватчик (вывод из «aws codepipeline list-webhooks»):

    {
        "webhooks": [
            {
                "definition": {
                    "name": "AppPipelineWebhook-aOnbonyFrNZu",
                    "targetPipeline": "ftp-proxy-cf",
                    "targetAction": "GitHubAction",
                    "filters": [
                        {
                            "jsonPath": "$.ref",
                            "matchEquals": "refs/heads/{Branch}"
                        }
                    ],
                    "authentication": "GITHUB_HMAC",
                    "authenticationConfiguration": {
                        "SecretToken": "<REDACTED>"
                    }
                },
                "url": "https://eu-west-1.webhooks.aws/trigger?t=eyJ<ALSO REDACTED>F9&v=1",
                "arn": "arn:aws:codepipeline:eu-west-1:<our account ID>:webhook:AppPipelineWebhook-aOnbonyFrNZu",
                "tags": []
            }
        ]
    }

Я получаю следующую ошибку:

An error occurred (ValidationException) when calling the RegisterWebhookWithThirdParty operation: 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"}]

Это два соответствующих раздела из моего файла облачной информации:

Resources:
  AppPipelineWebhook:
    Type: AWS::CodePipeline::Webhook
    Properties:
      Authentication: GITHUB_HMAC
      AuthenticationConfiguration:
        SecretToken: '{{resolve:secretsmanager:my/secretpath/github:SecretString:token}}'
      Filters:
        - JsonPath: $.ref
          MatchEquals: 'refs/heads/{Branch}'
      TargetPipeline: !Ref CodePipeline
      TargetAction: GitHubAction
      TargetPipelineVersion: !GetAtt CodePipeline.Version
      # RegisterWithThirdParty: true
  CodePipeline:
    Type: AWS::CodePipeline::Pipeline
    Properties: 
      Name: 
        Ref: PipelineName
      RoleArn: !GetAtt CodePipelineServiceRole.Arn
      Stages:
        - Name: Source
          Actions: 
          - Name: GitHubAction
            ActionTypeId:
              Category: Source 
              Owner: ThirdParty 
              Version: 1 
              Provider: GitHub
            OutputArtifacts:
              - Name: SourceOutput
            Configuration:
              Owner: myorganisationnameongithub
              Repo: ftp-proxy
              Branch: master
              OAuthToken: '{{resolve:secretsmanager:my/secretpath/github:SecretString:token}}'
              PollForSourceChanges: false

Он может опрашивать изменения в порядке. Поэтому, если я вручную закажу выполнение этапа GitHubAction из консоли AWS, будут загружены последние коммиты. И если я установил PollForSourceChanges: true, такой опрос также будет работать, но, увы, не рабочий процесс веб-перехватчика (поскольку перехватчик не может быть зарегистрирован с помощью GitHub)

1 Ответ

0 голосов
/ 18 июня 2020

Ошибка возникает из-за (2) возможных причин:

  1. Персональный токен доступа (PAT) не настроен для следующих областей GitHub: admin: repo_hook и admin: org_hook 1

    Вы можете проверить эти разрешения в разделе «Пользователь» (верхнее право)> «Настройки»> «Настройки разработчика»> «Токены личного доступа»

  2. Имя «Владелец» и / или «Репозиторий» неверно в шаблоне CloudFormation:

    Для конфигурации конвейера в CloudFormation убедитесь, что «GitHubOwner» - это «Название организации», а имя репозитория просто имя репо и не содержит "org / repo_name", например, в вашем случае:

Пример:
Configuration:
    Owner: !Ref GitHubOwner                <========== Github org name
    Repo: !Ref RepositoryName                
    Branch: !Ref BranchName                
    OAuthToken: !Ref GitHubOAuthToken       <========== <Personal Access Token>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...