Azure DevOps管道模板 - 如何连接参数

6
整个下午我一直在努力理解如何将参数连接到一个 ADO 模板中。这个参数是源路径,模板需要添加下一级文件夹。我想用“简单”的连接方式来实现这一点。 简化的模板使用该参数来形成 PowerShell 脚本的 inputPath,就像这样:
parameters:
  sourcePath: ''

steps:   
- task: PowerShell@2
  inputs:
    filePath: 'PSRepo/Scripts/MyPsScript.ps1'
    arguments: '-inputPath ''$(sourcePath)/NextFolder''

我尝试了多种方法来实现这种连接:

  • '$(sourcePath)/NextFolder'
    • 见上文
  • '$(variables.sourcePath)/NextFolder'
    • 我知道sourcePath不是一个变量,但基于使用任务条件中的参数时,只有在通过变量引用时才能正常工作的事实进行尝试
  • '${{ parameters.sourcePath }}/NextFolder'

还有一些其他的变体,但都没有成功。 我也尝试在模板中引入一个变量部分,但这是不可能的。

我在互联网上搜索了示例/文档,但没有直接的答案,其他问题似乎暗示了一些解决方案,但都不能正常工作。

如果有人能帮我解决这个问题,我肯定会非常高兴。

提前感谢。

2个回答

6
我们可以在临时的yaml文件中添加变量,并将sourcePath传递给该变量,然后我们就可以使用它了。以下是我的演示脚本: Main.yaml
resources:
  repositories:
    - repository: templates
      type: git
      name: Tech-Talk/template

trigger: none

variables:
  - name: Test
    value: TestGroup
    
pool:
  # vmImage: windows-latest
  vmImage: ubuntu-20.04

  
extends:
  template: temp.yaml@templates
  parameters:
    agent_pool_name: ''
    db_resource_path: $(System.DefaultWorkingDirectory)
    # variable_group: ${{variables.Test}}   

temp.yaml

parameters:
- name: db_resource_path
  default: ""   
# - name: 'variable_group'    
#   type: string    
#   default: 'default_variable_group'
- name: agent_pool_name
  default: ""
    
 
stages:
  - stage:      
    jobs:
    - job: READ
      displayName: Reading Parameters
      variables:
      - name: sourcePath
        value: ${{parameters.db_resource_path}}
#     - group: ${{parameters.variable_group}}
      steps:
      - script: |
          echo sourcePath: ${{variables.sourcePath}}
      - powershell: echo "$(sourcePath)"

在这里,我只使用工作目录作为测试路径,您也可以使用变量。 附上我的构建结果: 输入图像描述 输入图像描述


2

谢谢,Yujun。同时我已经使它正常工作了。显然可能存在一些打字错误,阻止脚本正确执行,因为这个解决方案看起来像上面提到的选项之一。

parameters:
  sourcePath: ''

steps:   
- task: PowerShell@2
  inputs:
    filePath: 'PSRepo/Scripts/MyPsScript.ps1'
    arguments: '-inputPath ''$(sourcePath)/NextFolder''

如果你仍然遇到这个问题,尝试更改 filePath 为 '../PSRepo/Scripts/MyPsScript.ps1'。顺便提一下,如果我的答案能够帮助你解决这个问题,你可以接受一下吗?这将有助于其他开发者解决类似的问题。感谢您的配合。 - Felix
谢谢。我可以标记您的第一条回复,但是只有在我已经在之前的评论中写下了解决方案后才会阅读它。因此,我将其标记为解决方案。 - Luc van Vugt
在参数行中,你是如何处理不对称数量的单引号的? - Brunis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接