Я создаю параметры в задании A и хочу использовать их в задании B, однако задание B не может получить значение параметров из задания A при использовании шаблона. Вот что я пытаюсь:
fetchingfilenames.yml
jobs:
- job: A
pool:
vmImage: 'ubuntu-latest'
steps:
- checkout: myrepo
persistCredentials: true
- task: PowerShell@2
displayName: 'Fetching FileNames'
inputs:
targetType: 'inline'
script: |
Write-Host "Fetching filenames"
cd $(valuepath)
Write-Host $(valuepath)
##Listing files in the directory and saving them in an array
$a=ls
Write-Host "Files:"$a
$List = $a | foreach {'$(valuepath)/' + $_}
Write-Host "Files with complete path:"$List
$b = '"{0}"' -f ($List -join '","')
Write-Host $b ####Output is: "$(valuepath)/file1.yml, $(valuepath)/file2.yml"
Write-Host "##vso[task.setvariable variable=valuefiles;isOutput=true]$b"
name: fileoutput
deploy.yml
parameters:
files: []
jobs:
- job: B
dependsOn: A
pool:
vmImage: 'ubuntu-latest'
variables:
filenames: ${{ parameters.files }}
steps:
- checkout: myrepo
persistCredentials: true
- task: AzureCLI@2
inputs:
azureSubscription: 'mysubscription'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
echo "fetching filenames"
echo $(filenames) ####Error: output is empty
for i in $(echo $(filenames) | sed "s/,/ /g"); ###it doesn't run this line as it seems it can not find $(filename)
do
echo "valuefiles= $i";
done
azure -pipeline.yml
trigger:
branches:
include:
- master
paths:
include:
- azure-pipeline.yml
variables:
azureSubscription: 'mysubscription'
containerRegistry: 'myacr'
repository: 'myrepo'
chartPath: 'mypath'
resources:
repositories:
- repository: pipelinetemplates
type: github
name: myorg/mytemplates
endpoint: myendpoint
- repository: myrepo
type: github
name: myorg/myrepo
endpoint: myendpoint
trigger:
branches:
include:
- master
paths:
include:
- myfolder/*
stages:
- stage: Deploy
variables:
azureResourceGroup: 'myresourcegroup'
kubernetesCluster: 'myk8s'
domain: 'mydomain'
valuepath: myfolder
jobs:
- template: Template-Yaml/fetchingfilenames.yml@pipelinetemplates
- template: Template-Yaml/deploy.yml@pipelinetemplates
parameters:
##Fetching variable as parameters
files : $[dependencies.A.outputs['fileoutput.valuefiles']]
Если я помещаю Задание A непосредственно в azure -pipeline.yml и не использую шаблон для него, он работает отлично, однако выборка Задания A из шаблона не работает, так как Задание B больше не может извлекать параметр из Задания A .
Кто-нибудь знает, чего здесь не хватает?