Azure Devops: как настроить сценарий конвейера для запуска другого конвейера с другим репо?

У меня есть собственный конвейер p-A с репозиторием r-A и конвейер p-B с другим репо r-B.

Я хочу обновить сценарий конвейера только для p-A, чтобы активировать p-B без каких-либо изменений в p-B.

Ниже приведен сценарий конвейера yaml для p-B, который уже настроен для работы по расписанию.

pool:
  name: 'workflow_test_pool'

schedules:
   - cron: "0 19 * * *"
     displayName: run test every day at 8PM CET
     branches:
       include:
         - main
     always: true

trigger: none

jobs:
  - job:
    timeoutInMinutes: 30
    steps:
      - script: |
          python -m pytest tests/ -s
        displayName: 'Run the test'
        

ниже приведен сценарий пайплайна main.yaml для p-A

pool:
  name: 'workflow_test_pool'

stages:
  #########################
  - template: pipeline2/p1.yaml


  ############################
  - template: pipeline2/p2.yaml
    parameters:
      dependsOn:
        - FirstPipeline

поэтому вопрос в том, как запустить конвейер p-B в pipe2/p2.yaml(из p-A)?


95
2

Ответы:

Решено

Вы можете создать задачу сценария PowerShell в качестве последнего шага конвейера для запуска конвейера p-B через REST API. Вам нужно будет поддерживать токен личного доступа, в идеале, как секретную переменную.

Вызов REST API, который вы будете использовать: https://learn.microsoft.com/en-us/rest/api/azure/devops/pipelines/runs/run-pipeline?view=azure-devops-rest-7.1

Подробное пошаговое руководство: https://blog.geralexgr.com/cloud/trigger-azure-devops-build-pipelines-using-rest-api


Azure DevOps поддерживает извлечение из нескольких репозиториев, вы можете просто ссылаться на функцию ресурсов в своем скрипте YAML и вызывать другой репозиторий для запуска из конвейера.

YAML-код: -

# Starter pipeline

# Start with a minimal pipeline that you can customize to build and deploy your code.

# Add steps that build, run tests, deploy, and more:

# https://aka.ms/yaml

  

pool:

vmImage: ubuntu-latest

  

workspace:

clean: all

  

resources:

repositories:

- repository: repo_a

type: git

name: InternalProjects/repo_a

trigger:

- main

- release

  

- repository: repo_b

type: git

name: InternalProjects/repo_b

trigger:

- main

steps:

- checkout: repo_a

- checkout: repo_b

  

- script: dir $(Build.SourcesDirectory)

Я запускаю этот конвейер из repo_a, а repo_a и repo_b успешно работают, как показано ниже:

Выход :-

Вы можете напрямую запускать любую задачу из конвейера с несколькими репозиториями, как показано ниже:

# Starter pipeline

# Start with a minimal pipeline that you can customize to build and deploy your code.

# Add steps that build, run tests, deploy, and more:

# https://aka.ms/yaml

  

pool:

vmImage: ubuntu-latest

  

workspace:

clean: all

  

resources:

repositories:

- repository: repo_a

type: git

name: InternalProjects/repo_a

trigger:

- main

- release

  

- repository: repo_b

type: git

name: InternalProjects/repo_b

trigger:

- main

steps:

- checkout: repo_a

  

- checkout: repo_b

- task: AzureCLI@2

inputs:

azureSubscription: 'Subscription-name(sub-id)'

scriptType: 'bash'

scriptLocation: 'inlineScript'

inlineScript: 'az resource list --location uksouth'

Выход:-

Использованная литература :-

Проверьте несколько репозиториев в вашем конвейере — Azure Pipelines | Обучение Майкрософт

Запуск конвейера Azure Devops из другого репозитория — GeralexGR

Несколько репозиториев в одном конвейере Azure — сообщество разработчиков 👩‍💻👨‍💻