Сбой сборки Azure, если в ветке нет последней версии мастера

#bash #azure-devops

Вопрос:

У меня есть следующий сценарий bash, написанный в конвейере Azure:

 if [[ "$(Build.Tag)" == "blabla" amp;amp; "$(Build.SourceBranch)" != *"blabla"* ]];
then
   run some git command to get the diff between current branch and master 
   if branch doesnt have the lastest master fail the build
else
   echo "Passed"
fi
 

Я хочу завершить сборку текущей ветви, если в ней нет последних изменений от master.
Есть ли какой-нибудь способ сделать это ?

Комментарии:

1. Привет, есть ли какие-либо обновления по этому вопросу? Пожалуйста, проверьте, может ли мой ответ ниже помочь вам, и не стесняйтесь комментировать~

Ответ №1:

Я хочу завершить сборку текущей ветви, если в ней нет последних изменений от master. Есть ли какой-нибудь способ сделать это ?

ДА. Вот пример:

       if [ -z "$(git diff origin/bran1 origin/bran2)"]
      then 
        echo "ERROR!"
        echo "ERROR" > logfile.log
        exit 125
      fi
 

Ответ №2:

Проверьте, что этот REST API Получает изменения между сборками, он будет получать изменения, внесенные в репозиторий между двумя заданными сборками. если идентификатор фиксации сборки одинаков, значение количества тел ответов равно 0.

Добавьте оболочку управления задачами и введите сценарий ниже:

 $PAT="$(pat)"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
          
#Get the previous build commit id
$GetPreviousURL = "https://dev.azure.com/{Org name}/{Project name}/_apis/build/builds?definitions={Build definition ID}amp;api-version=6.1-preview.6"
$GetPreviousBuild = Invoke-RestMethod -Uri $GetPreviousURL -Headers @{Authorization = "Basic {0}" -f $base64AuthInfo} -Method get 
$PreviousBuildID=$GetPreviousBuild.value.id[1]
#Write-Host $PreviousBuildID

#Get the changes made to the repository between two given builds
$CompareBuildURL= "https://dev.azure.com/{Org name}/{Project name}/_apis/build/changes?fromBuildId=$($PreviousBuildID)amp;toBuildId=$($env:BUILD_BUILDNUMBER)amp;api-version=6.1-preview.2"

#Write-Host $CompareBuildURL

$CompareBuildResult = Invoke-RestMethod -Uri $CompareBuildURL -Headers @{Authorization = "Basic {0}" -f $base64AuthInfo} -Method get 
$Count = $CompareBuildResult.count
#Write-Host $Count

#If the count is 0, fail this build
if ($Count.equals(0)) { 
        throw 'it does not have the latest changes from master (exit 1)'
   }
 

Результат:

в нем нет последних изменений.

введите описание изображения здесь

в нем есть последние изменения.

введите описание изображения здесь

Комментарии:

1. Привет, как насчет проблемы? Разрешил ли приведенный ниже ответ ваш вопрос? Если нет, не могли бы вы, пожалуйста, сообщить мне последнюю информацию по этому вопросу?