#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. Привет, как насчет проблемы? Разрешил ли приведенный ниже ответ ваш вопрос? Если нет, не могли бы вы, пожалуйста, сообщить мне последнюю информацию по этому вопросу?