В нашем проекте мы переходим от одного этапа приложения (beta/preprod/release) к другому, создавая запрос на включение между исходной веткой в целевую (например, «release/xxx» в «prod») с помощью Azure веб-интерфейс разработки.
После выбора исходной и целевой веток веб-интерфейс Devops предоставляет нам список всех рабочих элементов, связанных с исходной, а не целевой веткой. Мы используем этот список для подготовки примечаний к выпуску и отслеживания развертывания рабочих элементов в различных ветках кода.
Я хотел бы автоматизировать создание этого запроса на извлечение из командной строки, используя az report pr create, чтобы ограничить количество ошибок и сэкономить время.
Мне удалось создать запрос на включение почти так, как я хотел, но один элемент все еще ускользает от меня: вместо того, чтобы все рабочие элементы из исходной ветки (а не из целевой ветки) были связаны с моим PR, список связанных рабочих элементов пусто.
Есть ли способ сделать это с помощью командной строки?





Рабочие элементы связаны с фиксациями.
В следующем примере показано, как получить все идентификаторы рабочих элементов DISTINCT, связанные с фиксациями определенной ветки:
ORGANIZATION = "https://dev.azure.com/MY-ORGANIZATION"
PROJECT = "MY-PROJECT"
REPO = "MY-REPOSITORY"
BRANCH = "MY-BRANCH"
# az devops login
work_item_ids=$(\
az devops invoke --area git --resource commits \
--route-parameters project=$PROJECT repositoryId=$REPO \
--query-parameters \
searchCriteria.itemVersion.version=$BRANCH \
searchCriteria.includeWorkItems=true \
--api-version 7.1 --org $ORGANIZATION \
| jq -r '.value[] | .workItems[]?.id' | sort | uniq \
)
printf "Work items linked to branch $BRANCH:\n%s\n" "$work_item_ids"
# Convert to a comma-separated list of work item ids
work_item_ids=$(echo "$work_item_ids" | paste -sd, -)
printf "Work items linked to branch $BRANCH: \n%s\n" "$work_item_ids"
Пример вывода:
Work items linked to branch main:
170
174
Work items linked to branch main:
170,174
Обратите внимание, что команда az devops вызова — это оболочка (своего рода) для REST API Azure DevOps. В этом случае мы вызываем конечную точку Get Commits: