我有一条管道。管道具有用于不同环境的变量。现在,我不想将管道复制成三个,而是希望有一个管道,而其他三个管道则以一个特定的变量开头。当调用主管道的管道完成时,则应分别为每个管道释放。 yaml和管道有可能吗?
答案 0 :(得分:1)
如果只想结束两个已参数化的管道,则可能会存在传递该变量的问题。完美匹配似乎是runtime parameters。您可以使用REST API endpoint传递这些参数。这是一个示例示例,说明如何从管道运行REST API
'Team_Dev_FTW'
注意:此呼叫不同于上述端点。
但是我会推荐您templates。您可以使用它来提取公用部分并通过参数,这样看来它就适合您的情况。
模板
- pwsh: |
$url = "https://dev.azure.com/thecodemanual/$(System.TeamProject)/_apis/build/builds/$(Build.BuildId)?api-version=5.1"
$build = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $env:MY_SECRET"}
Write-Host "Pipeline = $($build | ConvertTo-Json -Depth 100)"
$status = $build.status
Write-Host $status
name: initial
env:
MY_SECRET: $(System.AccessToken)
主文件
parameters:
- name: name
type: string
default: 'lambdaNumbertOneFunctionName'
- name: arn
type: string
default: 'lambdaNumberOneFunctionArn'
- name: stepName
type: string
default: 'StepOne'
- name: value
type: string
default: 'testValue'
steps:
- bash: |
echo "##vso[task.setvariable variable=${{ parameters.name }};isOutput=true]${{ parameters.value }}"
echo "##vso[task.setvariable variable=${{ parameters.arn }};isOutput=true]${{ parameters.value }}"
echo "##vso[task.setvariable variable=Test;isOutput=true]${{ parameters.value }}"
echo "##vso[task.setvariable variable=Test2;isOutput=true]Yesy2"
name: ${{ parameters.stepName }}
- script: |
echo $(${{ parameters.stepName }}.${{ parameters.name }})
echo $(${{ parameters.stepName }}.${{ parameters.arn }})
echo $(${{ parameters.stepName }}.Test)
echo $(${{ parameters.stepName }}.Test2)
您可以通过三种方式使用模板: