从 Azure 管道提交并推送到 GitHub 拉取请求分支



我有一个由拉取请求触发的Azure Pipeline [source, runs]。我正在按照此 GitHub 指南提交到用于创建拉取请求的贡献者分支。

为此,我禁用了默认的管道checkout步骤:

steps:
- checkout: none

然后,我尝试克隆贡献者的存储库并签出用于拉取请求的分支。

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

但是,System.PullRequest.SourceRepositoryUri返回的是我的存储库的 git URI,而不是贡献者的 URI。

我的主存储库:

  • https://github.com/collinbarrett/FilterLists.git

我尝试过的变量(见这里(:

  • System.PullRequest.SourceRepositoryURIhttps://github.com/collinbarrett/FilterLists.git
  • Build.Repository.Urihttps://github.com/collinbarrett/FilterLists

我想我需要在构建管道中提供一个预定义的变量,它可以为我提供以下任一功能:

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

如何克隆拉取请求参与者的存储库并签出其用于拉取请求的分支?答案可能是以下任何一种的解决方案:

  • 我是否错过了另一个包含贡献者的存储库 URI 或 GitHub 用户名的预定义变量?
  • 是否可以调整 Azure 管道checkout任务,以便从其他参与者的存储库(而不是我自己的存储库(签出分支?为了将分叉配置为资源,我似乎需要贡献者的分叉 URI 或用户名。
  • 我可以以某种方式直接从 GitHub API 获取此 URI 吗?
  • 还有其他解决方案吗?看来我正在使这比应有的更加困难......

更新:也在Microsoft开发人员社区上请求。赞成票赞赏。

我可以通过从我的管道调用 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

最新更新