О вашей первой проблеме Все сборки, включая эту, должны быть в одном проекте TFS. В официальной документации о триггерах завершения сборки добавьте триггер завершения сборки, чтобы запустить сборку после успешного завершения триггерной сборки. Вы можете выбрать любую другую сборку в том же проекте. Таким образом, эта функция разработана следующим образом.
О триггерах завершения сборки, когда изменяется исходный компонент (например, библиотека), нижестоящие зависимости необходимо перестраивать и повторно проверять. Но проверка PR - это предварительная сборка для вашей защищенной ветви, в восходящем потоке нет никаких изменений, и поэтому триггер завершения сборки не работал.
Вы можете изменить параметр Включить на Исключить без создания ветки мусора, тогда триггер завершения сборки будет работать, как и ожидалось.
В моем тесте в моем репо три ветви. (master, branch1, branch2) И даже я установил конфидецию, как показано ниже, триггер завершения сборки donне работает, как ожидалось. ![enter image description here](https://i.stack.imgur.com/Jri9Y.png)
Это связано с тем, что в трех ветвях нет изменений, и условия не выполняются, поэтому триггер завершения сборки не работает.
Но когда вы изменяете тип с включаемого на исключаемый, независимо от того, какую ветку вы выберете, триггер завершения сборки будет работать как положено.
Поэтому я рекомендую вам изменить параметр Включить на Исключить, иСпецификация филиала, Вы можете выбрать филиал по желанию. В качестве теста я выбираю основную ветку. Как видите, конвейер запущен, как и ожидалось. ![enter image description here](https://i.stack.imgur.com/9APuI.png)
![enter image description here](https://i.stack.imgur.com/dxJHG.png)
Обновление
Приведенные выше результаты испытаний основаны наAzure DevOps. А в DevOps Azure функция завершения сборки может быть выполнена, как описано выше.
Однако в Azure DevOps Server 2019, независимо от того, как он установлен, эта функция не будет запускаться после проверки правильности PR. Поэтому я считаю, что это является дефектом функции Azure DevOps Server 2019. Я рекомендую вам отправить эту ошибку в Сообщество разработчиков для дальнейшего расследования.
О вашем редакторе 4, в официальнойдокументацию, вы можете обратиться к https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers?view=azure-devops&tabs=classic#build-completion-triggers.
Если вы все еще чувствуете, что эта функция мешает вашему использованию, вы также можете отправить заявку в сообществе разработчиков.
И есть альтернативаобходной путь. Вы можете добавить задачу Powershell в свой конвейер сборки PR-валидации. И установите скрипт powershell, как показано ниже. Этот скрипт поставит в очередь указанный конвейер.
Param(
[string]$collectionurl = "http://{instance}/{collection}",
[string]$project = "{projectname}",
[string]$definitionid="{definitionid}",
[string]$user = "{username}",
[string]$token = "PAT token"
)
#Base64-encodes the Personal Access Token(PAT) appropriately
$base64AuthInfo= [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $token)))
#Get response of the build definition
$defurl = "$collectionurl/$project/_apis/build/builds/$definitionid?api-version=5.0"
$definition = Invoke-RestMethod -Uri $defurl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$json = @($definition.definition) | ConvertTo-Json -Depth 99
$js = "{'definition':$json}"
$defurl = "$collectionurl/$project/_apis/build/builds?api-version=5.0"
#Queue a build
$updatedef = Invoke-RestMethod -Uri $defurl -Method Post -Body $js -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}