Azure Devops YAML Pipeline Trigger в разных репозиториях - PullRequest
0 голосов
/ 05 августа 2020

Возможно ли наличие триггера конвейера yaml для коммитов / PR для веток разных репозиториев (например, Repo A) по сравнению с тем, в котором находится файл azure -pipelines.yaml (например, Repo B)?

Я знаю, что могу построить конвейер для репо B и проверить репо A, используя, например:

resources:
  repositories:
  - repository: Repo A
    type: github
    endpoint: ***
    name: ***/RepoA

trigger:
 - master

Но триггер применяется только к репо B, то есть когда я делаю фиксацию на мастере в репо A конвейер не запускается.

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Последний выпуск, похоже, включает эту функцию. Я подозреваю, что вам не хватает ссылки.

Вот пример, который показывает, как определить несколько ресурсов репозитория в конвейер и как настроить триггеры для всех из них.

trigger:
- main

resources:
  repositories:
  - repository: tools
    type: git
    name: MyProject/tools
    ref: main
    trigger:
      branches:
        include:
        - main
        - release

Конвейер в этом примере будет запущен, если есть какие-либо обновления для:

  • основной ветви в себе репо, содержащее файл YAML
  • основная или выпускная ветки в репозитории инструментов
0 голосов
/ 06 августа 2020

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

Как сказано в документе:

Триггеры ресурсов репозитория работают только для Azure репозиториев Git репозиториев в настоящее время. Они не работают для ресурсов репозиториев GitHub или Bitbucket.

Если вы использовали репозитории Azure Repos, Git. Вам необходимо указать раздел trigger для ресурсов репозитория, чтобы включить триггеры Multi-repo. См. Документ здесь для получения дополнительной информации.

Поскольку вы используете github, вы можете использовать триггеры завершения конвейера в качестве обходного пути. Вы можете обратиться к шагам ниже, чтобы настроить триггер завершения конвейера для конвейера RepoB.

1, Настройте конвейер запуска для RepoA.

Вы можете создать конвейер для github RepoA в azure DevOps. Рекомендуется использовать конвейер Classi c UI, поскольку он не добавит файл azure -pipelines.yaml в ваш RepoA.

Я предлагаю вам добавить пустое задание агента (без каких-либо задач) в запуск трубопровод. Так что выполнение конвейера всегда будет успешным.

enter image description here

You need to Enable continuous integration for this triggering pipeline. So that the commits/PRs for branches in RepoA will automatically trigger this pipeline.

In the pipeline Edit page, Go to Triggers tab, Check Enable continuous integration, Add the branches you want to enable CI in the Branches Filters section

enter image description here

2, Set up pipeline resources in triggered pipeline (ie. azure-pipelines.yaml file for RepoB)

Add the ресурсы конвейера и укажите секцию триггера в ресурсе конвейера. См. Пример ниже:

resources:
  repositories:
  - repository: Repo A 
    type: github
    endpoint: ***
    name: ***/RepoA

  pipelines:
  - pipeline: repoAPipeline   # Name of the pipeline resource
    source: triggeringPipeline-RepoA # Name of the triggering pipeline
    trigger: 
      branches:
      - releases/*
      - master

При внесении изменений в RepoA конвейер запуска будет запущен и успешно завершится. Когда конвейер запуска завершен, конвейер для RepoB будет запущен.

Путем настройки конвейера запуска для RepoA и ресурсов конвейера в конвейере RepoB. Вы можете добиться того же эффекта с помощью триггеров Multi-repo.

...