Условное решение для сборки в Azure DevOps - PullRequest
0 голосов
/ 19 января 2019

Я работаю над крупномасштабным приложением, которое использует несколько маленьких / маленьких проектов / решений. Каждое решение встроено в их соответствующих агентов. Аналогично скриншоту ниже enter image description here

Теперь проблема в том, что все проекты / решения компилируются, даже если один файл проекта был изменен.

Чтобы сократить время сборки CI, я хочу добавить условное выражение в сборку, которое будет строить проект только в случае изменения соответствующего источника.

Я знаю, что этого можно достичь в DevOps Azure через Custom condition using variable expressions. Но я не уверен, как я могу проверить, изменился ли соответствующий исходный код enter image description here

Кто-нибудь знает, что variable expression мне нужно написать здесь?

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Ну, как я вижу, вы используете Git Repo, вы можете сделать это следующим образом

В качестве первого шага вам необходимо выяснить, был ли изменен какой проект / решение.

Вы можете найти решение из моего ответа здесь , где вы можете видеть, что я использовал простой скрипт powershell для извлечения измененных файлов и включения соответствующих переменных.

Пример сценария Powershell для извлечения измененных файлов

$files=$(git diff HEAD HEAD~ --name-only)
$temp=$files -split ' '
$count=$temp.Length
echo "Total changed $count files"
For ($i=0; $i -lt $temp.Length; $i++)
{
  $name=$temp[$i]
  echo "this is $name file"
  if ($name -like "SubFolderA/*")
    {
      Write-Host "##vso[task.setvariable variable=MicroserviceAUpdated]True"
    }
}
0 голосов
/ 19 января 2019

Вы не можете достичь этого с условием.условие для выполнения задач внутри сборки.вы ищете триггеры сборки в файлах yaml:

trigger:
  branches:
    include:
      - master
  paths:
    include:
      - path\to\app\*

эта сборка будет запускаться только тогда, когда что-либо в `path \ to \ app \ folder было изменено.таким образом, вы создаете сборку для приложения и можете изолировать эти сборки от определенных измененных файлов.

https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pipeline

...