在 Azure DevOps 的存储库资源定义中使用标记变量

问题描述 投票:0回答:1

我想在存储库资源定义的标签中使用计算变量。

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 参数?

azure-devops azure-pipelines checkout
1个回答
0
投票

恐怕 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
© www.soinside.com 2019 - 2024. All rights reserved.