Luc*_*ugt 7 parameters templates string-concatenation azure-devops
整个下午我一直在尝试在 ADO 模板中连接参数。该参数是源路径,并且在模板中需要添加下一个文件夹级别。我想通过“简单”的串联来实现这一点。简化的模板采用参数并使用它来形成 PowerShell 脚本的 inputPath,如下所示:
parameters:
sourcePath: ''
steps:
- task: PowerShell@2
inputs:
filePath: 'PSRepo/Scripts/MyPsScript.ps1'
arguments: '-inputPath ''$(sourcePath)/NextFolder''
Run Code Online (Sandbox Code Playgroud)
我尝试了多种方法来实现这种串联:
还有其他一些变体,都无济于事。我还尝试在模板中引入变量部分,但这是不可能的。
我在互联网上搜索了示例/文档,但没有直接答案,其他问题似乎暗示了某种解决方案,但不起作用。
如果有人能帮助我,我肯定会非常高兴。
提前致谢。
我们可以在临时 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}}
Run Code Online (Sandbox Code Playgroud)
临时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)"
Run Code Online (Sandbox Code Playgroud)
这里,我只使用workingDirectory作为测试路径。您也可以使用变量。附上我的构建结果:

谢谢玉君。与此同时,它确实发挥了作用。显然,肯定存在一些拼写错误,导致脚本无法正确执行,因为这些解决方案看起来像上面提到的选项之一。
parameters:
sourcePath: ''
steps:
- task: PowerShell@2
inputs:
filePath: 'PSRepo/Scripts/MyPsScript.ps1'
arguments: '-inputPath ''$(sourcePath)/NextFolder''
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22207 次 |
| 最近记录: |