Я нашел несколько неэлегантное решение. Комбинируя выражения с логическими параметрами, я могу делать то, что мне нужно, но это немного сложно:
parameters:
- name: doJobA
type: boolean
stages:
jobs:
- job: JobA
condition: eq('${{ parameters.doJobA }}', true)
# ... details removed for brevity
- job: JobB
${{ if eq(parameters.doJobA, true) }}:
dependsOn: JobA
condition: succeeded()
# ... details removed for brevity
Здесь я вставляю зависимое предложение, только если параметр doJobA
истинен. В противном случае его нет. Чтобы гарантировать, что JobB
выполняется только в случае успеха JobA
, я должен также добавить условие, но только если присутствует supportsOn.
В результате задание запускается немедленно, если doJobA
ложно, потому что итоговый yaml не будет содержать никаких записей dependsOn
или condition
, но в другом случае это будет зависеть от успешного выполнения JobA
.
Я все еще надеюсь, что есть лучший способ достичь этого, хотя, поскольку это кажется немного сложным (imo).
Edit: это решение работает только для свойств stati c, а не для динамических c переменных.