Azure Триггер Devops Pipeline игнорирует пути при запуске тега - PullRequest
1 голос
/ 26 марта 2020

У меня есть два конвейера сборки, которые создают мой клиент и API, но когда я создаю новый тег git, обе сборки запускаются, хотя тег может относиться только к изменениям на основе моего клиентского кода.

front-end-build-ci.yml

trigger:
  branches:
    include:
      - master
  tags:
    include:
      - refs/tags/*_prodrelease*
  paths:
    include:
      - Clients/*
    exclude:
      - Api/*

api-build-ci-yml

trigger:
  branches:
    include:
      - master
  tags:
    include:
      - refs/tags/*_prodrelease*
  paths:
    include:
      - Api/*
    exclude:
      - Clients/*

Регулярные коммиты работают должным образом (т.е. триггеры кода клиента клиентская сборка), и я пробовал несколько вариантов исключения путей безрезультатно.

Должна ли фильтрация тегов игнорировать пути или она должна работать так же, как ветки?

Обходным решением было бы иметь больше описательных тегов (например, 20200326_prodrelease_api ), но я стараюсь не использовать два тега, если API и клиент готовы к производству.

1 Ответ

1 голос
/ 27 марта 2020

Когда я создаю новый тег git, обе сборки запускаются, даже если тег может быть связан только с изменениями, основанными на моем клиентском коде.

Если фильтрация тегов игнорирует пути, или Должен ли он работать так же, как ветви?

Извините, но я боюсь, что вы столкнулись с ожидаемым поведением триггеров CI. И да, вы правы, что tag filtering is ignoring paths, когда теги используются в сочетании с фильтрами ветвлений, которые включают пути к файлам.

Пожалуйста, ознакомьтесь с подсказкой Note в официальном документе :

Если вы укажете теги в сочетании с фильтрами ветвлений, которые включают пути к файлам, триггер сработает, если фильтр ветвей удовлетворен и удовлетворен либо тег, либо фильтр путей.

Причина проблемы:

Вот почему в вашем сценарии запускаются обе сборки. Поскольку теперь вы используете теги в сочетании с фильтрами ветвей и фильтрами путей к файлам, и branch filter ok + tag ok, и branch filter ok + path ok могут запускать сборку.

Поведение:

Если тег не создан, branch filter ok + path ok будет работать как client code triggers client build и api code triggers api build. И при создании указанного тега c причина, по которой branch filter ok + tag ok всегда выполняется, запускает обе сборки.

Как вы уже упоминали выше, , используя в качестве обходного пути больше описательных тегов не плохой выбор в этой ситуации. Кроме того, если вам нужна такая функция, как одновременная работа трех фильтров, не стесняйтесь поделиться своим мнением, предложив эту функцию на нашем User Voice Forum . Поделитесь ссылкой здесь и заинтересованные участники проголосовали бы за вас. Ура!

...