Зафиксируйте и отправьте sh в ветвь для запроса GitHub из Azure Конвейеров - PullRequest
1 голос
/ 12 февраля 2020

У меня есть Azure конвейер [ источник , работает ], запущенный по запросу извлечения. Я следую этому руководству GitHub , чтобы зафиксировать ветку участника, использованную для создания запроса на извлечение.

Для этого я отключил конвейеры по умолчанию checkout step:

steps:
  - checkout: none

Затем я пытаюсь клонировать репозиторий участника и проверить его ветку, используемую для запроса на извлечение.

steps:
  ...

  - script: |
      git clone $(System.PullRequest.SourceRepositoryUri) .
      git checkout $(System.PullRequest.SourceBranch)
    displayName: checkout source branch

Однако System.PullRequest.SourceRepositoryUri возвращает git URI мой репозиторий, а не участник.

Мой основной репозиторий:

Переменные, которые я пытался использовать (см. здесь ):

  • System.PullRequest.SourceRepositoryURI: https://github.com/collinbarrett/FilterLists.git
  • Build.Repository.Uri: https://github.com/collinbarrett/FilterLists

Я думаю, что мне нужно предопределенная переменная в конвейере сборки, которая может дать мне одно из следующих значений:

  • https://github.com/<GitHubUsernameOfPrContributor>/FilterLists.git
  • <GitHubUsernameOfPrContributor>

Как я могу клонировать репозиторий участника запроса на извлечение и извлечение их ветки, используемой для запроса на извлечение? Ответ может быть решением любой из следующих проблем:

ОБНОВЛЕНИЕ : Также запрошено в сообществе разработчиков Microsoft . Упражнения там оценили.

1 Ответ

3 голосов
/ 13 февраля 2020

Я могу получить то, что мне нужно, вызвав GitHub API из моего конвейера. Предопределенная переменная из Azure Конвейеры предпочтительнее, но пока это будет работать.

  - bash: |
      FORKURI=$(curl -X GET "https://api.github.com/repos/$BUILD_REPOSITORY_NAME/pulls/$SYSTEM_PULLREQUEST_PULLREQUESTNUMBER" | jq -r '.head.repo.clone_url')
      git clone "$FORKURI" .
      git checkout "$SYSTEM_PULLREQUEST_SOURCEBRANCH"
    displayName: checkout source branch
...