Как вызвать шаблон конвейера Azure, который включал «ресурсы»?

#azure-devops #azure-pipelines

#azure-devops #azure-конвейеры

Вопрос:

По некоторым причинам я хочу, чтобы мой A.yml вызывал другой B.yml из другого репозитория. Конвейер A считается «пустым» конвейером, его работа в основном заключается в вызове конвейера B, и B выполнил реальную работу. Но B — это не просто шаги, он содержит все детали, он также включает в себя «Ресурсы».

Вот как я это делаю:

Трубопровод А:

 trigger:
- main

resources:
  repositories:
  - repository: script
    type: github
    name: xxx/script
    ref: refs/heads/main
    endpoint: smartracks

steps: **<---- What should I put ?**
 - template: B.yml@script
 

Трубопровод B:

 resources:
  repositories:
  - repository: rcu-service
    type: github
    name: abc/rcu-service
    ref: refs/heads/main
    endpoint: test
jobs:
    - job: OpenEmbedded_Build_And_Export
steps:
    - checkout: rcu-service
- script: |
    ......
 

Если я исключу «ресурсы» из конвейера B, это будет успешным (нужно добавить эти ресурсы в конвейер A).
Но как только я включил ресурс в конвейер B, он завершается с этим сообщением:

 B.yml@script(Line: 1, Col: 1): Unexpected value 'resource'
B.yml@script(Line: 24, Col: 1): Unexpected value 'jobs'
 

В конвейере A, вот как я вызываю конвейер B, я использую шаги, но, похоже, это не работает.

   steps: **<---- What should I put ?**
     - template: B.yml@script
 

Я пробую с этапами, заданиями, но тоже терплю неудачу.

Итак, я задаюсь вопросом, что мне делать? Пожалуйста, научи меня, спасибо.

Комментарии:

1. Вы проверили следующие ответы? Полезны ли они?

Ответ №1:

Azure Pipelines поддерживает четыре типа шаблонов:

  • Этап
  • Задание
  • Шаг
  • Переменная

Он не поддерживается resources , вам нужно поместить resources его в свой A.yml.

https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devopsamp;tabs=schema,parameter-schema#template-references

Ответ №2:

Представьте , что вы должны были развернуть шаблон так , чтобы он отображался в файле , который вы разместили - template:... . В этом случае у вас будет

 steps:
 - jobs:
   ...
 

Это не работает, потому что схема требует, чтобы шаги были частью задания.

 jobs: 
  - template: B.yml@script
 

или

 stages:
- stage: stageName
  displayName: "my stage"
  jobs:
  - template: B.yml@script
 

Комментарии:

1. Привет, спасибо, что поделились. Есть ли какой-нибудь способ / обходной путь, чтобы заставить это работать?

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