我想在存储库资源定义的标签中使用计算变量。
parameters:
- name: tag
displayName: tag
type: string
default: '0.0.1'
variables:
- name: tag_name
value: ${{ parameters.tag }}
resources:
repositories:
- repository: tag-checkout
type: github
ref: 'refs/tags/$(tag_name)'
name: myrepo
endpoint: 'myrepo'
stages:
- stage: stage1
jobs:
- job: jobA
steps:
- task: CmdLine@2
displayName: 'Set Version'
inputs:
script: |
// compute the variable $myVariable then set variable tag_version to $myVariable
echo "##vso[task.setvariable variable=tag_version;]$myVariable"
- checkout: tag-checkout
我想在 stage1 中动态计算标签版本,然后使用计算出的标签(例如 tag_version)来检查管道中的特定标签版本。使用 ref: 'refs/tags/$(tag_name)' 格式,我可以查看像 0.0.1 这样的标签版本,但我需要在管道执行期间确定标签。我想查看 $(tag_version),它是 stage1 中的计算变量。 我还探索了使用内联语法的选项。 但是,根据 doc,内联语法仅限于同一组织内的 Azure Repos Git 存储库。 我需要查看 Github 中的存储库。在这种情况下,有没有办法使用计算变量作为 ref 参数?
恐怕 Pipeline 运行时变量(
$(tag_version)
)不能在 Repo Resources ref 字段中使用。
repo 资源中的 ref 字段将在编译时扩展,但计算变量将在运行时设置。所以它不能在repo资源中使用。
要解决此问题,您可以在接下来的任务中使用 git 命令克隆目标存储库标记源。您可以在 git 命令中使用变量:
$(tag_version)
。
例如:
stages:
- stage: stage1
jobs:
- job: jobA
steps:
- checkout: none
- task: CmdLine@2
displayName: 'Set Version'
inputs:
script: |
// compute the variable $myVariable then set variable tag_version to $myVariable
echo "##vso[task.setvariable variable=tag_version;]$myVariable"
- script: |
git clone --branch $(tag_version) githubrepoURL