#azure-devops #azure-pipelines-yaml #azure-devops-extensions #azure-pipelines-decorator
#azure-devops #azure-pipelines-yaml #azure-devops-extensions #azure-конвейеры-декоратор
Вопрос:
Цель состоит в том, чтобы обусловить пользовательское расширение задачи на основе того, какая задача используется в конвейере. Для этого мы хотим использовать декораторы конвейеров
Например, если какой-либо пользователь использует задачу Powershell в своих конвейерах, мы хотим выполнить нашу задачу с помощью декораторов.
Но мы можем выяснить, как заставить это работать.
Yaml :
steps:
- ${{ if and(eq(resources.repositories['self'].ref, r esources.repositories['self'].defaultBranch), not(containsValue(job.steps.*.task.id, 'd9bafed4-0b18-4f58-968d-86655b4d2ce9'))) }}:
- script: dir
displayName: 'Run my script (injected from decorator)'
Непосредственно из руководства Microsoft
Внутри конвейеров Azure DevOps visual editor выдает эту ошибку :
Unexpected property ${{ if containsValue(job.steps.*.task.id, '1c524b9b-9f4d-4897-8f1e-6ec33271d75c') }}
Первым свойством должно быть task
И во время выполнения :
Мы также пытались с condition()
:
condition: |
and
(
eq(dependencies.A.result, 'Succeeded'),
containsValue(dependencies.A.steps.*.task.id, '1c524b9b-9f4d-4897-8f1e-6ec33271d75c')
)
Но мы не можем найти правильный синтаксис, содержимое объекта равно null :
Кто-нибудь знает, как получить идентификатор задачи и использовать его для определения условий любой дальнейшей задачи?
Ответ №1:
Вы должны поместить выражение в свой YAML-файл декоратора, а не в файл pipeline azure-pipelines.yml. Чтобы начать работу с декораторами конвейера, необходимо выполнить следующие действия:
- Создайте файл расширения. Это определяет тип расширения, а также упакованные файлы.
- Создайте файл YAML. Этот файл содержит шаги, которые вы хотите выполнить для каждого конвейера.
- Создайте HTML-файл. Это будет отображаться, когда пользователь просматривает ваше расширение в Marketplace.
- Упакуйте расширение. При этом создается файл .VSIX, который вы будете использовать для регистрации своего расширения.
- Зарегистрируйте свое расширение. Для этого необходимо загрузить ваш файл в Azure DevOps Marketplace и сделать его доступным для вашей организации Azure DevOps.
- Добавьте расширение в свою организацию. Это позволяет применять расширение к вашим конвейерам.
Вы можете получить более подробную информацию из следующего блога:
https://soltisweb.com/blog/detail/2019-11-07-simplifying-azure-devops-pipelines-with
Комментарии:
1. Спасибо. Я понял, что контекст отличается между конвейером и декоратором. Помещение того же содержимого конвейера yaml в декоратор yaml сработало!. В любом случае ваш блог понятен и подробен.
2. Приятно видеть, что ваша проблема решена. Если мой ответ поможет вам, вы можете принять его как ответ , это может быть полезно для других участников сообщества, читающих эту тему.
3. Я пытался, но поскольку у меня репутация менее 15, она записывается, но не отображается