#azure-devops #azure-pipelines #azure-pipelines-yaml
#azure-devops #azure-конвейеры #azure-конвейеры-yaml
Вопрос:
У меня есть конвейер, в котором есть несколько наборов интеграционных тестов, но я действительно не хочу запускать их все во время сборки PR. Для этого у меня есть переменная, которая устанавливается, когда я нахожусь в главной ветке
- job: it
displayName: Integration Test
timeoutInMinutes: 360
steps: []
- job: it_billing
displayName: Integration Test
condition: or(eq(variables.isMasterBranch, 'True'), eq(variables['it'], 'true'))
steps: []
- job: it_rest
displayName: Integration Test
condition: or(eq(variables.isMasterBranch, 'True'), eq(variables['it'], 'true'))
steps: []
У меня есть задание контроля качества, которое запускает sonar, которое я хочу запустить
- job: qa
displayName: SonarQube Analysis
dependsOn:
- it
- it_billing
- it_rest
У которого нет условий, но оно зависит от it_billing и it_rest, потому что при основной сборке оно соберет все результаты ИТ-покрытия и создаст отчет.
Однако при сборке PR этот этап, вероятно, пропускается из-за dependsOn
есть ли способ сделать это, не прибегая к копированию этапа анализа с чем-то конкретным для сборки PR?
- job: qaOneIt
displayName: SonarQube PR Analysis with IT
condition: and(succeeded(), ne(variables.isMasterBranch, 'True'), ne(variables['it'], 'true'))
dependsOn:
- it
Комментарии:
1. Привет, Архимед Траяно, есть какие-нибудь обновления по этому билету?
Ответ №1:
Извините, это невозможно сделать.
По умолчанию задание выполняется, если оно не зависит ни от какого другого задания или если все задания, от которых оно зависит, завершены успешно.
Вы могли бы сослаться на это в нашем официальном документе здесь — Укажите условия
Другими словами, когда вы запускаете сборку PR, это job: qa
не будет выполняться, поскольку job: it_billing
и job: it_rest
не были запущены.
Ответ №2:
есть ли способ сделать это, не прибегая к копированию этапа анализа с чем-то конкретным для сборки PR?
Возможно, ваш dependsOn:
может быть немного более «динамичным»:
- job: qa
displayName: SonarQube Analysis
dependsOn:
- it
- ${{ if ne(variables['Build.SourceBranchName'], 'master') }}:
- it_billing
- it_rest
Выражение if проверяет текущую ветвь и, если она отличается от master
, включает две оставшиеся зависимости: it_billing и it_rest. В противном случае ожидается только одна зависимость.