根据 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}}
测试结果:
我正在尝试检出 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}}
测试结果: