Это возможно. Так как там empty
не распознается. Вы можете использовать - ${{if parameters.jobs[0]}}:
, чтобы проверить, пустые работы или нет.
Если задания пустые, то parameters.jobs[0]
будет оцениваться как false. Пожалуйста, проверьте ниже мой пример yaml.
parameters:
buildSteps: []
stages:
- stage: secure_buildstage
pool: Hosted VS2017
jobs:
- job: secure_buildjob
steps:
- ${{if parameters.buildSteps[0]}}: # will be evaluated to false if buildsteps is empty, and the following task will not be run,
- script: echo ${{parameters.buildSteps[0]}}
displayName: 'Base: Pre-build'
- script: echo Building
displayName: 'Base: Build'
- ${{ each step in parameters.buildSteps }}:
- ${{ each pair in step }}:
${{ if ne(pair.key, 'script') }}:
${{ pair.key }}: ${{ pair.value }}
${{ if eq(pair.key, 'script') }}: # checks for buildStep with script
'Rejecting Script: ${{ pair.value }}': error # rejects buildStep when script is found
My azure -pipeline.yml:
trigger: none
stages:
- template: deploy-jobs.yaml
parameters:
buildSteps:
- bash: echo Test #Passes
displayName: Test - Will Pass
- bash: echo "Test"
displayName: Test 2 - Will Pass
- bash: echo "Script Test" # Comment out to successfully pass
displayName: Test 3 - Will Fail