В моем конвейере yaml есть несколько заданий, которые зависят друг от друга. Однако в одном из заданий, когда я определяю условие, я получаю следующую ошибку:
Неожиданный символ: ')'. Расположен в позиции 53 в выражении: and(not(or(failed('Unittests'), canceled('Unittests'))), not(canceled('Check_Requirements'))). Для получения дополнительной помощи обратитесь к https://go.microsoft.com/fwlink/?linkid=842996
Вот как я определил задание, которое показывает ошибку:
- job: Security_Check
displayName: "Security Check"
dependsOn:
- Check_Requirements
- Unittests
condition: and(not(or(failed('Unittests'), canceled('Unittests'))), not(canceled('Check_Requirements')))
pool:
name: "Basic_Pool_Ubuntu"
variables:
- name: foundVuls
value: $[ dependencies.Check_Requirements.outputs['CheckVuls.foundVul'] ]
- name: Artifact.Folder
value: "artifacts"
Я хочу, чтобы задание выполнялось, когда задание «Unittests» не завершилось сбоем или не было отменено, а задание «Check_Requirement» не завершилось сбоем.
Кто-нибудь знает, что я здесь делаю не так. Я пробовал несколько способов определить это условие, но всегда получал ошибку «Неожиданный символ: ')'».
Судя по вашему образцу yaml, выражение условия слишком сложное. Предлагаю упростить содержание условия. Вы можете обратиться к ответу, чтобы изменить выражение условия и проверить, может ли оно работать.
На основе вашего образца YAML я могу воспроизвести ту же проблему.
Я хочу, чтобы задание выполнялось, когда задание «Unittests» не завершилось сбоем или не было отменено, а задание «Check_Requirement» не завершилось сбоем.
Чтобы удовлетворить ваше требование, вы можете использовать следующее условие:
condition: and(notIn(dependencies.Unittests.result, 'failed', 'canceled'), ne(dependencies.Check_Requirements.result, 'canceled'))
Образец YAML:
- job: Security_Check
displayName: "Security Check"
dependsOn:
- Check_Requirements
- Unittests
condition: and(notIn(dependencies.Unittests.result, 'failed', 'canceled'), ne(dependencies.Check_Requirements.result, 'canceled'))
pool:
name: "Basic_Pool_Ubuntu"
variables:
- name: foundVuls
value: $[ dependencies.Check_Requirements.outputs['CheckVuls.foundVul'] ]
- name: Artifact.Folder
value: "artifacts"
Пожалуйста, отредактируйте свой вопрос и вставьте код в виде текста, а не изображения.