Ветвь ресурсов Azure Pipeline

РЕДАКТИРОВАТЬ: пожалуйста, не обращайте внимания на части о tags- как отмечалось в одном из ответов, это произошло из проектной документации и не было полностью реализовано. Меня в первую очередь беспокоитbranch свойство.


Вопрос

Как устроен трубопроводный ресурс branch(документы) иtags(находится на GitHub, но не в документации) работают? Вversion свойство правильно выбирает версию ресурса по умолчанию, но branch а также tags кажется, ничего не делает.

я ожидаю branch аналогичным образом по умолчанию используется последний запуск с этой веткой в ​​качестве источника и tagsпо умолчанию используется последний запуск с этими тегами. Он сломан, или я неправильно понимаю его поведение?

Контрольная работа

Мне нужно запустить последовательно два конвейера:

  • Test-Build запускается по основному триггеру или вручную и публикует артефакт (пробовали артефакты сборки и конвейера)
  • Test-Release имеет ресурс конвейера Test-Build

Сейчас я попробовал 3 разных теста:

  1. Укажите versionнедвижимость на ресурсе. Успех: ресурс правильно выбирает эту версию.
  2. Укажите branchнедвижимость на ресурсе. Ошибка: ресурс по умолчанию будет последним, даже если из другой ветки.
  3. Укажите 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 нормально работать.

Другие вопросы по тегам