Ветвь ресурсов Azure Pipeline
РЕДАКТИРОВАТЬ: пожалуйста, не обращайте внимания на части о tags
- как отмечалось в одном из ответов, это произошло из проектной документации и не было полностью реализовано. Меня в первую очередь беспокоитbranch
свойство.
Вопрос
Как устроен трубопроводный ресурс branch
(документы) иtags
(находится на GitHub, но не в документации) работают? Вversion
свойство правильно выбирает версию ресурса по умолчанию, но branch
а также tags
кажется, ничего не делает.
я ожидаю branch
аналогичным образом по умолчанию используется последний запуск с этой веткой в качестве источника и tags
по умолчанию используется последний запуск с этими тегами. Он сломан, или я неправильно понимаю его поведение?
Контрольная работа
Мне нужно запустить последовательно два конвейера:
- Test-Build запускается по основному триггеру или вручную и публикует артефакт (пробовали артефакты сборки и конвейера)
- Test-Release имеет ресурс конвейера Test-Build
Сейчас я попробовал 3 разных теста:
- Укажите
version
недвижимость на ресурсе. Успех: ресурс правильно выбирает эту версию. - Укажите
branch
недвижимость на ресурсе. Ошибка: ресурс по умолчанию будет последним, даже если из другой ветки. - Укажите
tags
недвижимость на ресурсе. Ошибка: ресурс по умолчанию будет последним, даже без этих тегов.
Образцы файлов
Тестовая сборка
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
artifact: 'drop'
publishLocation: 'pipeline'
Тест-релиз
trigger: none
resources:
pipelines:
- pipeline: TestBuild
source: Test-Build
branch: master
jobs:
- deployment: TestDeployment
environment: Test
pool:
vmImage: 'ubuntu-latest'
strategy:
runOnce:
deploy:
steps:
- script: echo Deploying!
2 ответа
После большого количества тестов, я думаю, что действительно понял это.
Я считаю, что это чисто ошибка пользовательского интерфейса. Пользовательский интерфейс покажет последнюю выбранную сборку, даже если она из другой ветки. Однако, если вы продолжите запускать конвейер без изменения выбора вручную, он будет правильно использовать последнюю сборку из правильной ветки, несмотря на то, что в пользовательском интерфейсе был показан другой выбор по умолчанию.
И, как заметил Лео Лю-MSFT, tags
Свойство взято из проектной документации и еще не реализовано полностью.
Я открыл здесь проблему с полной записанной демонстрацией проблемы.
Ветвь ресурсов Azure Pipeline
Действительно, я мог бы воспроизвести и этот вопрос на своей стороне. Это потому, что этот документ - это проектная документация.
You could check the title of that doc:
The design docs within this repo are created at different times during the development of Azure Pipelines, to support collaborative contributions to the design process. Designs documents are for,
- features considered for implementation but never implemented
- already implemented features
- future ideas for features
The design docs in this repo may not represent the current state of an Azure Pipelines feature.
Obviously, this is a function that has not yet been fully implemented. That the reason why you could not get that work. You can expect it to come, I believe it will meet us soon.
Update:
I tested this Branch
feature, but there seems to be a gap between what we expected.
Вначале я получил такой же результат, как и вы. Ресурс по умолчанию будет последним, даже если из другой ветки. Затем я снова проверил документ и обнаружил, что:
Когда вы определяете триггер ресурса, если его конвейерный ресурс находится из того же репозитория, что и текущий конвейер, триггер следует той же ветке и фиксации, при которой возникает событие. Но если ресурс конвейера находится из другого репо, текущий конвейер запускается в ветви по умолчанию.
Ветвь по умолчанию для триггеров
Триггеры для ресурсов создаются на основе конфигурации ветки по умолчанию вашего YAML, которая является главной. Однако, если вы хотите настроить триггеры ресурсов из другой ветви, вам необходимо изменить ветвь по умолчанию для конвейера.
Итак, чтобы это работало. Я создал два yml-файла Test-Release для разных веток:
Мастер-ветка:
trigger: none
resources:
pipelines:
- pipeline: TestBuild
source: Test-Build
branch: master
Ветка для разработчиков:
trigger: none
resources:
pipelines:
- pipeline: TestBuild
source: Test-Build
branch: Dev
И нам нужно вручную изменить ветку по умолчанию для ручной и запланированной сборки для конвейера. Test-Release
:
В этом случае мы могли бы заставить функцию Branch нормально работать.