Что вы можете сделать, это использовать условие на этапах сборки yaml. Вы можете использовать переменную «Build.Reason» (см. https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml), чтобы определить, следует ли запускать этап:
stages:
- stage: Stage1
condition: and(succeeded(), eq(variables['Build.Reason'], 'Schedule'))
jobs:
- some jobs
- stage: Stage2
condition: and(succeeded(), ne(variables['Build.Reason'], 'Schedule'))
jobs:
- some jobs
Приведенный выше пример запускает только stage1 при сборке был запущен из расписания, и только stage2, если сборка не была запущена из расписания. Конечно, вы можете настроить условия в соответствии с вашими потребностями.
Другой вариант - переместить этапы в шаблоны, а затем создать 2 отдельных конвейера yaml, используя файлы шаблонов, содержащие правильные этапы. Таким образом, вам нужно только один раз определить содержимое этапа, но вы можете повторно использовать его в нескольких конвейерах. См https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops