У меня есть собственный конвейер 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)?
Вы можете создать задачу сценария 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 — сообщество разработчиков 👩💻👨💻