根据 Azure Pipeline 中的输入签出不同的存储库

Checkout different Repository as per input in Azure Pipeline

我正在尝试检出 Azure 管道中的存储库,它与自我存储库不同但在同一组织中。这里存储库名称和项目名称将作为输入参数传递。

我已经按照 https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops 中的示例进行了尝试,但无法传递参数。

我试过如下使用 syntex,但没有成功。

 resources:
   repositories:
   - repository: MyAzureReposGitRepository
     type: git
     name: $(project)/$(repo)
     ref: $(branch)

也试过

- checkout: git://${{ variables.repoName}}@${{ variables.branchRef }}

但是在 运行 管道

时出现错误
The String must have at least one character. Parameter name:repositoryName

如果您有任何其他方法可以成功,请提供帮助。

既然你在谈论参数,我假设你正在使用模板。我能够通过以下代码达到预期的结果

# File: template.yml
parameters:
- name: project
  type: string
- name: repo
  type: string
- name: branch
  type: string

stages:
- stage: A
  displayName: Checkout
  jobs:
  - job: Checkout
    steps:
    - checkout: git://${{ parameters.project }}/${{ parameters.repo }}@${{ parameters.branch }}

# File: pipeline.yml
extends:
  template: template.yml
  parameters:
    project: ProjectName
    repo: RepoName
    branch: BranchName

Checkout different Repository as per input in Azure Pipeline

根据这个线程Pipeline resource Version property as a variable

虽然我们不允许在该字段中使用变量,但这是 runtime parameters 的绝佳用例。

因此,我们无法在资源中使用变量 $(project)/$(repo)

要解决这个问题,我们可以使用 Checking out a specific ref:

parameters:
- name: ProjectName
  displayName: Project Name
  type: string
  default: LeoTest
  values:
  - LeoTest
- name: repoName
  displayName: repo Name
  type: string
  default: TestRepo
  values:
  - TestRepo
- name: branchRef
  displayName: Branch Name
  type: string
  default: Dev
  values:
  - Dev

- checkout: git://${{ parameters.ProjectName}}/${{ parameters.repoName}}@refs/heads/${{ parameters.branchRef}}

测试结果: