#tags #azure-pipelines #branch #commit #git-branch
#Теги #azure-конвейеры #ветка #фиксация #git-branch
Вопрос:
В Azure Pipeline возможно использование предопределенных переменных сборки (DevOps Services) Сборка.Исходная ветвь и сборка.SourceBranchName но их значения при фиксации регистра с тегом являются тегами.
В документе. https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devopsamp;tabs=yaml#build-variables-devops-services записывается
- Когда ваш конвейер запускается тегом: refs/tags/your-tag-name
- Имя ветки в запускающем репозитории, для которого сборка была поставлена в очередь. Ветка Git repo или запрос на извлечение: Последний сегмент пути в ссылке. Например, в refs / heads / master это значение равно master . В ссылках / heads / feature / tools это значение равно tools .
- это мое наблюдение: но в случае фиксации с тегом это последний сегмент пути сборки.SourceBranch, так что ваш-tag-name
Ответ №1:
Как описано в документе. Если конвейер запускается тегом. Затем переменные строятся.Исходная ветвь и сборка.SourceBranchName будет именем тега.
Однако вы можете использовать команды git ( git branch -r --contains $(Build.SourceBranchName) | grep -v $(Build.SourceVersion)
) для получения имени ветки, на которое указывает тег.
Если вы хотите использовать имя ветки в качестве переменной, вы можете определить переменную с помощью команд ведения журнала ( echo "##vso[task.setvariable variable=CurrentBranch]$branch"
). Для примера ниже:
- powershell: |
#get the branch name
$branch = git branch -r --contains $(Build.SourceBranchName) | grep -v $(Build.SourceVersion)
#define varialbe CurrentBranch to hold the value.
echo "##vso[task.setvariable variable=CurrentBranch]$branch"
- powershell: echo "$(CurrentBranch)" #use the branch name in the following steps by referring to $(CurrentBranch)