Выражения конвейеров Azure DevOps

#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 :

object_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, она записывается, но не отображается